Experiences with ROS 2 on our robots and what we learned on the way

We, the Hamburg Bit-Bots RoboCup team, created this blog post describing our ROS 1 → ROS 2 migration, focussing mostly on the hiccups and issues we encountered.
Other people in the community will most likely encounter some of the described issues as well, and are hopefully able to use this post as a starting point. In addition to that, we hope to inform a bit about the current pain points from the user perspective and enable further discussion on this topic.


Thanks for sharing, this is a pretty nice write-up.


Thanks much for taking the time to put all of this in writing! Especially the part on performance was very interesting and relevant to me.


Thanks for this writeup. I have experienced all of this and a few more, and is an example of why I wouldn’t recommend migrating an existing code base to ROS2.

I am forcing myself to write the new software that is independent from existing code with ROS2, but the key here is forcing. As of today I don’t believe the pros of migrating outweight the cons, I’d be happy to be shown otherwise.

Edit: Micro ros has been great for us, and is one of the best things to come out from us using ros2.


That’s an awesome writeup! I hope the TSC will take it very seriously and will try to form the “expected out-of-the-box behavior” along the lines you wrote.

@brettpac Could you try to talk about this next time you’re on TSC as community rep?

The writeup kind of confirms my fears that using DDS with multicast discovery is just never gonna work in larger systems. My expectation is that once we switch to ROS2, we’ll use the centralized DDS master for discovery. Running one on each PC in the robot network seems like the best of both worlds to me. Does anyone have examples of a complicated ROS 2 system (200+ nodes) running reliably with multicast discovery? Our SubT Virtual solution had 500+ ROS1 nodes in total, and we were quite easily able to run all of them on a single Threadripper machine. Would that be possible with distributed ROS 2?


Many thanks for a great write up. I’ll be sure to include this in the Weekly Robotics newsletter and point to this conversation.

With this write up I understand why someone would want to contribute to ROS Obese.

My main worry about the wider ROS2 adoption are these DDS issues. The newcomers not only have to go through the steep learning curve of understanding ROS2 but also they will inevitably have problems with DDS. Even if their code is formally correct, the system might not perform.


Thank you very much for sharing this article. We are also migrating and it is very useful to read these experiences.


Great to see this write-up, thanks a lot for creating it. It’s a good reflection of the issues we faced. In particular the out-of-the-box performance for core components (DDS, executors) is often much worse than ROS1, so that I personally think more focus should be put on these areas.


This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.