Dashing to Eloquent
Moving from ROS 2 Dashing to Eloquent, a number of stability improvements were added that we will not specifically address here.
New Packages
Navigation2 now includes a new package nav2_waypoint_follower
.
The waypoint follower is an action server that will take in a list of waypoints to follow and follow them in order.
There is a parameter stop_on_failure
whether the robot should continue to the next waypoint on a single waypoint failure,
or to return fail to the action client.
The waypoint follower is also a reference application for how to use the Navigation2 action server to complete a basic autonomy task.
Navigation2 now supports new algorithms for control and SLAM. The Timed-Elastic Band (TEB) controller was implemented and can be found here. It is its own controller plugin that can be used instead of the DWB controller. Nav2 also supports SLAM Toolbox as the default SLAM implementation for ROS 2. This replaces the use of Cartographer.
New Plugins
Eloquent introduces back in pluginlib plugins to the navigation stack.
nav2_core
defines the plugin header interfaces to be used to implement controller, planner, recovery, and goal checker plugins.
All algorithms (NavFn, DWB, recoveries) were added as plugin interfaces and the general packages for servers were created.
nav2_planner
is the action server for planning that hosts a plugin for the planner.
nav2_controller
is the action server for controller that hosts a plugin for the controller.
nav2_recovery
is the action server for recovery that hosts a plugin for recovery.
New recovery plugins were added including backup, which will take in a distance to back up, if collision-free. Additionally, the wait recovery was added that will wait a configurable period of time before trying to navigate again. This plugin is especially helpful for time-dependent obstacles or pausing navigation for a scene to become less dynamic.
Many new behavior tree nodes were added. These behavior tree nodes are hard-coded in the behavior tree engine. Behavior tree cpp v3 supports plugins and will be converted in the next release.