New Implementation for Unitree GO 2 in ROS 2 Humble


Hello everyone!!

Let me introduce myself, my name is Juan Carlos Manzanares and I belong to a robotics research group called Intelligents Robotics Lab, belonging to the Rey Juan Carlos University, Madrid, Spain. In this group we develop some projects, such as MOCAP4ROS2, PlanSys2, CascadeLifecycle, marathon for nav2, robocups

Today, together with @Fmrico and @juanscelyg, I come to present our implementation to make the unitree go 2 robot work in ros2, in this case for dds.

This implementation is given since once you connect to this robot you can see topics, but you do not see any launched nodes. Furthermore, there is too much information in these topics that we are not typically used to seeing in a robot. By this I mean being able to see a /robot_description, being able to see the /joints_states of the motors, being able to move our robot easily using a /cmd_vel.

In the previous repository, you can find how to use our “driver”, fully implemented in c++, with all the steps to follow to change your robot’s mode, change settings, command speeds, etc… Also, you can find a small list of implementations that we already have done, or which we are currently working on.

I show you some images of what was mentioned:

We are currently developing support to be able to do slam and nav2 with this robot, so we hope to update within a couple of weeks with new news about it ^ ^. Also, in the future (hopefully soon), we want to have a gazebo simulation ready, so that anyone who does not have this robot can also work with it.

This post is not only to show our work, but also to invite the entire community to contribute to it, helping to find small bugs, developing new things… So I invite everyone to contribute to this repository.

Thank you very much for reading the post and I hope it helps many of you.



Awesome work guys, really! I’ve been hesitant about buying one of these for some R&D projects knowing the overhead of going from zero-documentation → getting it to publish odometry and take standard velocity commands. I have an early version of the A1 robot that I basically only bring out for parties and educational events because there wasn’t any way for me to reasonably command and control it remotely, so I’m glad to see this for the modern Go robots with that built-in 3D lidar!

This may be the catalyst for me to pick one up myself and have a Nav2 quadruped walking about…

Is there non flat surface navigation functionality in latest nav2?

We are working in these extensions of Nav2 for outdoors/non-plannar navigation

I hope you find It interesting :nerd_face:

1 Like

Thank you for this great work! I’m also currently working on the Go2 Edu with the MID-360 configuration and will definitely test your implementation with it and try to contribute. My goal would be to run everything on the robots internal Jetson Orin which is currently on foxy, did you try that too? Would love to have a chat with you about developing with the Go2!

Hello @maltespr

Well, it was something that I assumed worked, but I just checked it and yes, it works correctly. Surely some things will have to be installed inside the robot, so it would be interesting to receive a PR with the necessary packages.

And of course we can talk one day about the development, talk to me privately whenever you want.

Thank you very much for your support!

Hey there, interesting to see the post about Unitree GO 2. I’ve been curious what is the software system like inside Unitree quadruped robots especially after I saw their post Unitree Robotics on LinkedIn: #quadrupedrobot #ai #unitree #agi | 92 comments. It looked so advanced to me. I hope I will be able to work on that robust level one day :slight_smile:

1 Like

Really cool work, I like the color of the LIDAR! Do you have access to low-level control as well? I think it would be great for research for controls using the GO2, and I know of projects like that for the GO1.