We’re proud to announce that we have successfully released Navigation2, the ROS2 Navigation framework, as part of the Crystal Clemmys release!
This team has done a lot of heavy lifting to port, redesign and refactor the key components of the ROS Navigation stack with an eye towards the future. We asked for your input and we have tried to incorporate it into the new version.
Currently Navigation2 is available as a Debian package install as well as source code from our repo: http://github.com/ros-planning/navigation2
Caveat: This is a first release and should be considered ‘experimental’ or ‘alpha’ level software, not yet ready for production. However, we invite the ROS community to come and try it out in simulation, with more releases to come in the coming months.
• Basic 2D navigation in a known map, using RViz or other method to set initial pose, set goal pose and move to that pose
• Basic obstacle avoidance using the costmap obstacle layer
Notable design changes from ROS Navigation:
- Move base has been replaced / refactored
- A ‘simple_navigator’ node is the current default, however we’re currently developing a Behavior Tree based navigator called nav2_bt_navigator which will replace the main functionality with a Behavior Tree thanks to (@facontidavide)
- Using Behavior Tree, we’ve also implemented flexible recovery behaviors (backup, spin) and left room for future extensions
- The global planner (nav2_navfn_planner) is now a node called through a topic pub/sub interface called a ‘Task’
- Tasks are temporary proxies for Actions which were not yet implemented in time for our first release, but we plan to replace tasks with Actions in 2019
- The local planner (nav2_dwb_controller) is ported from the robot_navigation repo (thanks @DLu) and is also now a node called through the ‘Task’ interface
There’s more information in our design documents here:
Please come to our repo, try out the code and give us feedback.
Look for more updates coming soon!