Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions configuration/packages/configuring-mppic.rst
Original file line number Diff line number Diff line change
Expand Up @@ -482,6 +482,17 @@ This critic incentivizes navigating to achieve the angle of the goal posewhen in
Description
Minimal distance (m) between robot and goal above which angle goal cost considered.

:symmetric_yaw_tolerance:

============== ===========================
Type Default
-------------- ---------------------------
bool false
============== ===========================

Description
Enable symmetric goal orientation acceptance. When enabled, the critic prefers trajectories that approach the goal at either the goal orientation or the goal orientation + 180°. This is useful for symmetric robots (e.g., differential drives with sensors on both ends) that can navigate equally well in forward and backward directions and does not care which direction it ends in (i.e. MPPI decides). When enabled, the critic uses the minimum distance to either goal orientation, reducing the cost penalty for approaching from the backward direction. See :ref:`tuning` for detailed information.

Goal Critic
-----------

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,14 @@ Parameters

Description
Whether to check for XY position tolerance after rotating to goal orientation in case of minor localization changes.

:``<nav2_controller plugin>``.symmetric_yaw_tolerance:

==== =======
Type Default
---- -------
bool false
==== =======

Description
Enable symmetric goal orientation acceptance. When enabled, the robot accepts the goal as reached when oriented at either the goal orientation or the goal orientation + 180°. This is useful for symmetric robots (e.g., differential drives with sensors on both ends) that can navigate equally well in forward and backward directions and does not care which direction it ends in (i.e. controller algorithm decides). See :ref:`tuning` for detailed information.
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,14 @@ Parameters

Description
Whether to check for XY position tolerance after rotating to goal orientation in case of minor localization changes.

:``<nav2_controller plugin>``.symmetric_yaw_tolerance:

==== =======
Type Default
---- -------
bool false
==== =======

Description
Enable symmetric goal orientation acceptance. When enabled, the robot accepts the goal as reached when oriented at either the goal orientation or the goal orientation + 180°. This is useful for symmetric robots (e.g., differential drives with sensors on both ends) that can navigate equally well in forward and backward directions and does not care which direction it ends in (i.e. controller algorithm decides). See :ref:`tuning` for detailed information.
5 changes: 5 additions & 0 deletions migration/Kilted.rst
Original file line number Diff line number Diff line change
Expand Up @@ -732,3 +732,8 @@ MPPI
- ``enforce_path_inversion``
- ``inversion_xy_tolerance``
- ``inversion_yaw_tolerance``

Symmetric Yaw Tolerance for Goal Checking and Navigation
--------------------------------------------------------

`PR #5833 <https://github.com/ros-navigation/navigation2/pull/5833>`_ introduces the symmetric yaw tolerance feature for goal checking and navigation, allowing symmetric robots to reach goals without unnecessary 180° rotations.
11 changes: 11 additions & 0 deletions tuning/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -136,12 +136,23 @@ Costmap2D has a number of plugins that you can use (including the availability f
- ``PluginContainerLayer``: Combines the costmap layers specified within this plugin, resulting in an internal costmap that is a product of the costmap layers specified under this layer. This would allow different isolated combinations of costmap layers within the same parent costmap, such as applying a different inflation layers to static layers and obstacle layers

In addition, costmap filters:

- ``KeepoutFilter``: Marks keepout, higher weighted, or lower weighted zones in the costmap
- ``SpeedFilter``: Reduces or increases robot speeds based on position
- ``BinaryFilter``: Enables or disables a binary topic when in particular zones

Note: When the costmap filters can be paired with the ``VectorObject`` server to use vectorized zones rather than map rastered zones sharing the same software.

Symmetric Yaw Tolerance
=======================

For robots that can drive equally well forward and backward, you can set `symmetric_yaw_tolerance: true` to allow the robot to reach goals without unnecessary 180° rotations. This is especially useful for symmetric robots (e.g., differential drive robots with sensors on both ends) whereas you do not care which orientation it ends in for the controller algorithm to decide.

If you wish to control which orientation it ends in using a symmetric robot, check out `Bidirectional navigation with Nav2 <https://vimeo.com/879000809>`_ from ROSCon 2023 for setting up and tuning a bidirectional robot using Nav2. It highlights how to tune controllers, planners, and various other settings to obtain fully unbiased navigation with a platform with no traditional 'front'.

- ``SimpleGoalChecker``: Accepts the goal as reached if the robot is within tolerance of either the goal orientation or the goal orientation + 180°.
- ``GoalAngleCritic (MPPI Controller)``: Scores trajectories based on the minimum angular distance to either the goal orientation or the flipped orientation.


Nav2 Launch Options
===================
Expand Down
Loading