Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Smac Planner] Enable goal orientation non-specificity #532

Draft
wants to merge 5 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 3 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
12 changes: 12 additions & 0 deletions configuration/packages/smac/configuring-smac-hybrid.rst
Original file line number Diff line number Diff line change
Expand Up @@ -378,6 +378,17 @@ Parameters
Description
Number of times to recursively attempt to smooth, must be ``>= 1``.

:``<name>``.goal_heading_mode:

============== ===========================
Type Default
-------------- ---------------------------
string "DEFAULT"
============== ===========================

Description
Goal heading mode enum string to plan goal with multiple orientation. Options are "DEFAULT", "BIDIRECTIONAL" and "ALL_DIRECTION
stevedanomodolor marked this conversation as resolved.
Show resolved Hide resolved

Example
*******
.. code-block:: yaml
Expand Down Expand Up @@ -414,6 +425,7 @@ Example
use_quadratic_cost_penalty: False
downsample_obstacle_heuristic: True
allow_primitive_interpolation: False
goal_heading_mode: "DEFAULT" # DEFAULT, BIDIRECTIONAL, ALL_DIRECTION
smooth_path: True # If true, does a simple and quick smoothing post-processing to the path

smoother:
Expand Down
13 changes: 13 additions & 0 deletions configuration/packages/smac/configuring-smac-lattice.rst
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,18 @@ Parameters
Description
Number of times to recursively attempt to smooth, must be ``>= 1``.

:``<name>``.goal_heading_mode:

============== ===========================
Type Default
-------------- ---------------------------
string "DEFAULT"
============== ===========================

Description
Goal heading mode enum string to plan goal with multiple orientation. Options are "DEFAULT", "BIDIRECTIONAL" and "ALL_DIRECTION


Example
*******
.. code-block:: yaml
Expand Down Expand Up @@ -358,6 +370,7 @@ Example
lookup_table_size: 20.0 # Size of the dubin/reeds-sheep distance window to cache, in meters.
cache_obstacle_heuristic: false # Cache the obstacle map dynamic programming distance expansion heuristic between subsiquent replannings of the same goal location. Dramatically speeds up replanning performance (40x) if costmap is largely static.
allow_reverse_expansion: false # If true, allows the robot to use the primitives to expand in the mirrored opposite direction of the current robot's orientation (to reverse).
goal_heading_mode: "DEFAULT" # DEFAULT, BIDIRECTIONAL, ALL_DIRECTION
smooth_path: True # If true, does a simple and quick smoothing post-processing to the path
smoother:
max_iterations: 1000
Expand Down
26 changes: 26 additions & 0 deletions migration/Iron.rst
Original file line number Diff line number Diff line change
Expand Up @@ -282,3 +282,29 @@ New interface for ``GlobalPlanner::createPlan``:

This is implemented for all the planners in the stack, you can check them for the example use of ``cancel_checker`` function (simply check ``cancel_checker()``).
Smac and Theta* planners have a new parameter ``terminal_checking_interval`` which is the frequency of the cancel or timeout checking in terms of number of iterations.

Enable goal orientation non-specificity
*******************************************
`PR #4148 <https://github.com/ros-planning/navigation2/pull/4127>`_ introduces a new parameter(goal_heading_mode) in the smac planner, specifically the smac planner hybrid and smac planner lattice that allows for the
planner to plan to a goal with multiple orientations and return the best path in just one planning call. This is useful for robots that can approach a goal from multiple orientations and the user does not want to plan to each orientation separately.

Here is an Example of the smacHybrid planner with the default goal_heading_mode to see the difference in the planned path.

.. image:: images/smacHybrid_with_default_goal_heading_mode.gif
:width: 700px
:alt: Navigation2 with smacHybrid planner with default goal_heading_mode
:align: center

Here is an Example of the smacHybrid planner with the bidirectional goal_heading_mode to see the difference in the planned path.

.. image:: images/smacHybrid_with_bidirectional_goal_heading_mode.gif
:width: 700px
:alt: Navigation2 with smacHybrid planner with bidirectional goal_heading_mode
:align: center

Here is an Example of the smacHybrid planner with the all_directions goal_heading_mode to see the difference in the planned path.

.. image:: images/smacHybrid_with_all_direction_goal_heading_mode.gif
:width: 700px
:alt: Navigation2 with smacHybrid planner with all_direction goal_heading_mode
:align: center
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.