Smac 2D Planner

Paths generated by the Smac 2D-A*

<name> is the corresponding planner plugin ID selected for this type.

Parameters

<name>.tolerance:
 
Type Default
double 0.125
Description

Tolerance in meters between requested goal pose and end of path.

<name>.downsample_costmap:
 
Type Default
bool False
Description

Whether to downsample costmap to another resolution for search.

<name>.downsampling_factor:
 
Type Default
int 1
Description

Multiplier factor to downsample costmap by (e.g. if 5cm costmap at 2 downsample_factor, 10cm output).

<name>.allow_unknown:
 
Type Default
bool True
Description

Whether to allow traversing/search in unknown space.

<name>.max_iterations:
 
Type Default
int 1000000
Description

Maximum number of search iterations before failing to limit compute time, disabled by -1.

<name>.max_on_approach_iterations:
 
Type Default
int 1000
Description

Maximum number of iterations after the search is within tolerance before returning approximate path with best heuristic if exact path is not found.

<name>.max_planning_time:
 
Type Default
double 2.0
Description

Maximum planning time in seconds.

<name>.motion_model_for_search:
 
Type Default
string “MOORE”
Description

Motion model enum string to search with. Default for 2D it is “MOORE”. Options for 2D is MOORE and VON_NEUMANN.

<name>.cost_travel_multiplier:
 
Type Default
double 2.0
Description

Cost multiplier to apply to search to steer away from high cost areas. Larger values will place in the center of aisles more exactly (if non-FREE cost potential field exists) but take slightly longer to compute. To optimize for speed, a value of 1.0 is reasonable. A reasonable tradeoff value is 2.0. A value of 0.0 effective disables steering away from obstacles and acts like a naive binary search A*.

<name>.use_final_approach_orientation:
 
Type Default
bool false
Description

If true, the last pose of the path generated by the planner will have its orientation set to the approach orientation, i.e. the orientation of the vector connecting the last two points of the path

<name>.smoother.max_iterations:
 
Type Default
int 1000
Description

The maximum number of iterations the smoother has to smooth the path, to bound potential computation.

<name>.smoother.w_smooth:
 
Type Default
double 0.3
Description

Weight for smoother to apply to smooth out the data points

<name>.smoother.w_data:
 
Type Default
double 0.2
Description

Weight for smoother to apply to retain original data information

<name>.smoother.tolerance:
 
Type Default
double 1e-10
Description

Parameter tolerance change amount to terminate smoothing session

Example

planner_server:
  ros__parameters:
    planner_plugins: ["GridBased"]
    use_sim_time: True

    GridBased:
      plugin: "nav2_smac_planner/SmacPlanner2D"
      tolerance: 0.125                      # tolerance for planning if unable to reach exact pose, in meters
      downsample_costmap: false             # whether or not to downsample the map
      downsampling_factor: 1                # multiplier for the resolution of the costmap layer (e.g. 2 on a 5cm costmap would be 10cm)
      allow_unknown: true                   # allow traveling in unknown space
      max_iterations: 1000000               # maximum total iterations to search for before failing (in case unreachable), set to -1 to disable
      max_on_approach_iterations: 1000      # maximum number of iterations to attempt to reach goal once in tolerance
      max_planning_time: 2.0                # max time in s for planner to plan, smooth
      motion_model_for_search: "MOORE"      # 2D Moore, Von Neumann
      cost_travel_multiplier: 2.0           # Cost multiplier to apply to search to steer away from high cost areas. Larger values will place in the center of aisles more exactly (if non-`FREE` cost potential field exists) but take slightly longer to compute. To optimize for speed, a value of 1.0 is reasonable. A reasonable tradeoff value is 2.0. A value of 0.0 effective disables steering away from obstacles and acts like a naive binary search A*.
      use_final_approach_orientation: false # Whether to set the final path pose at the goal's orientation to the requested orientation (false) or in line with the approach angle so the robot doesn't rotate to heading (true)
      smoother:
        max_iterations: 1000
        w_smooth: 0.3
        w_data: 0.2
        tolerance: 1e-10