[Nav2] Main Branch Development Now Targeting ROS 2 Rolling

Hi all, your friendly neighborhood navigator here.

Just wanted to announce that we’ve recently completed a migration from ROS 2 master builds over to ROS 2 rolling for all new development. When @mkhansen and his team at Intel started Navigation2, there was no rolling distribution. Heck, there weren’t even names to them yet, let alone binaries being released and our workflows were slow, painful, and disruptive to also trying to deploy robots. I can’t tell you how much time I spent trying to make master + bouncy + melodic play well on my work computers.

Over time, we’ve moved to the new tools provided to us and the binaries made available by OSRF to ease development, but still tied to master builds for our main developers. This allowed us to move fast with changes upstream and react to changes / fixes as they became available. However, this comes at a huge cost to outside developers that just want to contribute a patch for their system or get involved on a volunteer basis. Master builds could take up to 3 hours for your first time and there was no guarantees that the master branch of Nav2 would build on any other released distributions.

With the advent of the Rolling distribution, it gave us another tool in our toolchest to consider. In using rolling, we’re not longer able to have rapid responses to API changes and all of the most recent bug fixes. It also prevents us from more easily overlaying dependencies we needed to update to make Nav2 work during development. But it does give us the ability to on-board new contributors and developers in a matter of 30 minutes rather than 1-2 days. It also gives us the ability to leverage the increasingly stablized rclcpp API and react to changes in a time and place of our choosing rather than busting our CI and development workflows immediately. It also speeds up our CI pipeline considerably (thanks to @ruffsl ) for faster review and merge cycles.

So from this point further, the main development branch of Nav2 main will be based on the Rolling distribution and all new contributions are expected to be in line with those as well. This should let a company using the project in Foxy easily install Rolling on the same computer and test their changes across multiple distributions without a major headache.

https://navigation.ros.org/build_instructions/index.html

If you have any concerns about this transition, feel free to comment below and we’ll try to accommodate as best we can. However, I think this is generally going to be a big quality of life improvement to developers and users alike.

Happy contributing,

Steve

7 Likes

:clap: I applaud this decision.:clap:

As @smac said, when the Nav2 project was started in 2018, ROS2 was still in heavy development, many features didn’t exist yet (actions for instance), so staying sync’d with the latest upstream development was key to being able to deliver the Crystal, Dashing and Eloquent releases in a timely way. Rolling came out later and was designed specifically to enable developers to work on the front edge of ROS2, but with a stable foundation. This decision makes perfect sense, and I hope it works well for new Nav2 developers.

Also, although I haven’t been working on Nav2 myself, I’m very glad to see the strong community involvement in Nav2 over the last few years. Kudos to @smac for leading the project!

:robot:

4 Likes