Iron to Jazzy¶
Moving from ROS 2 Iron to Jazzy, a number of stability improvements were added that we will not specifically address here.
Introduce a new Multi-Robot Bringup Launch¶
PR #3572 introduces a new way of bringup tb3 multi-robot that names as cloned_tb3_simulation_launch.py
for simulation. cloned_tb3_simulation_launch.py
enables to bring up multiple robots with same parameter that described in nav2_multirobot_param_all.yaml
. And multiple robots are separeted by namespaces which are given as a Launch Arguments.
Existing multi_tb3_simulation_launch.py
which was utilized in previous is replaced with unique_tb3_simulation_launch.py
, allowing for multiple unique robot instances utilizing nav2_multirobot_params_<N>.yaml
configuration files.
New option for the Voxel and Obstacle Layers¶
PR #3612 adds a new MaxWithoutUnknownOverwrite option to combination_method parameter in Voxel and Obstacle Layers. This can be used to make sure that the static map is the dominant source of information, and easily prevent the robot to go through places that are not present in the static map.
Changes to MPPI Goal Critic¶
The MPPI Goal critic’s formulation is changed to better keep up with speed on approach to goal instead of preemptively slowing too significantly. It also allows you to better use the weight to adjust the degree at which it slows more naturally. This change involves adjusting the threshold_to_consider
to be the same as your prediction horizon (e.g. samples * dt * max speed) for both the goal critic and path follower critic to have a good hand-off between them without deceleration.
Changes to MPPI Path Angle Critic¶
MPPI’s Path Angle critic now has a mode
setting to adjust behavior depending on robot’s desired behavioral traits. Previously, it penalized path orientations that deviated far the the robot’s forward orientation to turn the robot towards sharp changes in the path. This is still default (mode: 0
), but other modes now exist too.
mode: 1
sets the penalization of path’s relative directions by either forward orientation or the opposite for reversing to allow for true bidirectional motion when one way or another is not preferable for a symmetric robot. This uses only the path’s relative points to the robot to decide which direction to incentivize.
mode: 2
instead uses the path’s orientations when a feasible path is given from the Smac Planners or the Smoother server’s algorithms. This way, the globally planned orientations are followed rather than the based solely on the path’s relative points. This is useful for non-circular robots in highly confined settings where there may be restricted opportunities to change directions so following the global path’s orientation are required to end in the orientation you require.
Changes to MPPI Path Handling For Directionality¶
MPPI’s Path Align Critic and Path Handler object now have options to utilize the path’s orientation information to force the controller to change directions when and only when requested by a feasible planner. When enforce_path_inversion
is true
, the path handler will prune the path to the first time the directions change to force the controller to plan to the inversion point and then be set the rest of the path, once in tolerance. The Path Align critic also contains a parameter use_path_orientations
which can be paired with it to incentivize aligning the path containing orientation information to better attempt to achieve path inversions where requested and not do them when not requested.
See MPPI’s configuration guide for complete information.
Move Error Code Enumerations¶
PR #3693 moves the enumeration codes from the goal to the result section.
Substitution in parameter file¶
Enabled substitution in parameter file. For example, you can write the following
bt_navigator:
ros__parameters:
default_nav_to_pose_bt_xml: $(find-pkg-share my_package)/behavior_tree/my_nav_to_pose_bt.xml
For more information about substitutions syntax, see here
Allow Behavior Server Plugins to Access The Action Result¶
PR #3704 allows behavior servers plugins to access and modify the action result.
Smac Planner Debug Param Name Change¶
debug_visualizations
replaces viz_expansions
parameter in Hybrid-A* to reflect the new inclusion of footprint debug information being published as well.
Smac Planner Hybrid-A* New Features¶
New features allow_primitive_interpolation
which allows for more primitives in the search set, use_quadratic_cost_penalty
to impact the cost penalty order in the traversal and heuristic functions, and downsample_obstacle_heuristic
to optionally not downsample the obstacle heuristic’s costmap were added. The default behavior will remain the same. If you would like to use these new features, please check out the Smac Planner Hybrid-A* configuration guide.
Expose action server’s result timeout¶
In this PR #3787 the timeout for action server’s result was exposed in all nodes having action servers.
This is because in this PR #1012 in rcl a change was introduced which makes action servers discard a goal handle if the result
is not produced within 10 seconds, when the default was set to 15 minutes before. Since some actions in Nav2 may take more than 10 seconds to complete, the user has now the ability
to set this value through the action_server_result_timeout
parameter, which defaults to 15 minutes in the bt_navigators
and waypoint_follower
and to 10 seconds in all other nodes.
RewrittenYaml could add new parameters to YAMLs¶
Now RewrittenYaml
widely used in Nav2 launch-scripts, could do not only substitutions of ROS-parameters existing in original YAML, but rather additions of new parameters, that did not exist in the YAML. Certainly, these parameters should be declared for target ROS-nodes, otherwise they won’t be processed in run-time. In such functionality, they should be expressed in absolute values, separated by a dot. For example, the rewrite for a prune_distance
parameter of a FollowPath
node will look like 'controller_server.ros__parameters.FollowPath.prune_distance': '1.0'
in a param_rewrites
dictionary of RewrittenYaml()
argument.
The change was intoroduced in the scope of PR #3785 fix.
Simple Commander API Allows Multi-Robot Namespacing¶
The Simple Navigator API now allows multi-robot namespacing by exposing a namespace
field in the constructor to allow you to specify the Nav2 stacks’ namespace for a robot or system. See this PR for details.