switching to ROS2 Foxy or staying on ROS1: hurdles? caveats?

asked 2020-06-05 17:20:14 -0600

mugetsu gravatar image

Hi, since Foxy just came out today, I wanted to ask the community on the current maturity of ROS2.

My team is planning on a project that may span for the next 2 years. We are on melodic currently. ROS2 sounds exciting and better for the long term. However our team is small and I'm concerned that ROS2 isn't quite mature enough for us to switch to in the near term, at least in the sense that some of the common ROS1 packages may not have quite caught up yet.

That, and I've heard that the DDS setup/config is non-trivial, and I'm concerned that it may be a huge drain on our time. What is the most popular middleware? Are the commercial ones better?

Are there any other caveats and pitfalls? What have been other's experiences in porting their robot to ROS2? Will I lessen the pain switching over now or later?

Is it advisable to just use ROS2-ROS1 bridges on our existing code or just refactor everything?

edit retag flag offensive close merge delete



I'm going to be watching this question, as I believe it's very difficult to answer. I predict you'll get answers ranging from "yes, of course, go use ROS 2, especially because your project is a long term one" to "you have to make the change sometime, and ROS 1 is essentially unmaintained" to "no, don't waste your time, it's still not there yet, X and Y are missing and there is hardly any documentation".

Personally, I believe it really depends on how much effort you are willing to invest: yes, there is less documentation (but OK, we've had 10+ years to create that in ROS 1), yes the size of the community is smaller (again: 10+ years), and yes, there are less packages (again: ..).

But it's really difficult for us to know what your requirements are, which packages are crucial to you, how ...(more)

gvdhoorn gravatar image gvdhoorn  ( 2020-06-06 02:34:50 -0600 )edit

I haven't completed my system upgrade yet, but I have been in the process of planning it. My current plan is to upgrade first to ROS 1 Noetic. This will allow for the system to be installed on the same OS as Foxy (Ubuntu 20.04) then using the ros1_bridge we can experiment with porting a single node to identify some of the possible pit falls.

If you are concerned about the maturity of ROS2 I think this approach provides a good middle ground as you will get the benefits of working with the newest ROS1 version while informing your decision on the ROS2 upgrade.

msmcconnell gravatar image msmcconnell  ( 2020-06-25 08:55:53 -0600 )edit

funny you mention this process. Since making this post, this is EXACTLY the same plan I have. There are still some missing pieces in Noetic as devs catch up to it. Likely by later this year I would be ready for moving over to noetic.The noetic upgrade will at least take care of the python2.7 to python3 refactor that has to happen anyways. glad I'm on the right track with someone else as well.

mugetsu gravatar image mugetsu  ( 2020-06-26 13:12:17 -0600 )edit

Thank you for the question. I agree with this proposed approach to migrate to Noetic first, experiment with bridges, then migrate to ROS 2.

osilva gravatar image osilva  ( 2021-09-08 19:39:31 -0600 )edit