[Unitree Go2] Cannot echo /sportmodestate

Hi all, I am facing some data streaming issues from the go2 dog. I am not able to echo /sportmodestate but I can echo all the low level state topics like /lf/sportmodestate /lowstate, /lowcmd. The low state topics all have a single publisher and multiple subscribers, the /sportmodestate has no publishers and I don’t know how I can enable it.

For context:

I am on running on ubuntu 22.04 with ROS2 humble.

I have an external sensor payload (jetson orin), connected on the expansion dock of the go2 dog and communicating with it via ethernet (jetson to dog ethernet tethering, eno1). I am able to network between these two systems.

I have set the RMW_IMPLEMENTATION as cycloneDDS in my bashrc and exported the CYCLONEDDS_URI to be my cyclonedds.xml file that detailed my Network interface as “eno1”. I have also added an additional line for “AllowMulticast” to true.

My low level DDS path seems to work just fine, but when it comes to echoing the actual high level estimated odometry like position and velocity, all of it is zeroed out with Mode 1 and Gait type 0. I have ran the unitree_ros2_examples to read the motion state and the same is showing with zeroed position and velocity. ./read_low_state is able to output latest sensor data streams.

I am controlling the unitree go2 dog with a R3-1 controller and explicitly setting the dog to be in “High speed sports mode: L2 + start”. I have tried running the read motion state example while moving my dad via controller to see if any params/values change and nothing changes. So far I can only get accel, gyro, quaternion, euler angles, foot force etc, but not position or velocity.

I would like some guidance/suggestions on this thanks ya’ll.

Hi @sidbohra,

I believe the sportsmode is now a legacy feature from older versions and exclusive for Unitree B2. In your case it is not applicable anymore.

Hi Sohail, thanks for the information.

Is there any other way I can get odometry data from the go2 dog?

I have /utlidar/robot_odom and /utlidar/robot_pose topics. Both have publishers. I tried echoing them and couldn’t see the data. I tried changing my qos-reliability to best-effort as it was on reliable. I still wasn’t able to see the output topic stream.

Any suggestions? Thank you

Are you using GO2 or GO2-W. In GO2 one of the topics should contain the odometry. If you are using GO2-W then you can take the raw lidar topic and use it with either

  • Fast LIO2
  • MOLA
  • KISS ICP

or any similar lidar based odometry to get odom information. Unitree said the playn to provide odom feature for GO2-W for more than a year now but hasn’t come yet. So currently, we recommend using any LIO solution as mentioned above.