Simple Smoother
Source code on Github.
The Simple Smoother is a Smoother Server plugin that will take in an input path and smooth it using a simple and fast smoothing technique. It weights the initial path points and the smoothed path points to create a balanced result where the path retains its high level characteristics but reduces oscillations or jagged features.
It is recommended this is paired ONLY with infeasible (e.g. 2D) planners, since this algorithm will break any kinematically feasible conditions. It is recommended users use the Constrained Smoother plugin instead with feasible plans.
Simple Smoother Parameters
tolerance
- Type:
doubleDefault:1.0e-10 -
Change in parameter values across path to terminate smoothing
do_refinement
- Type:
boolDefault:true -
Whether to smooth the smoothed path recursively to refine the quality further
refinement_num
- Type:
intDefault:2 -
Number of times to recursively attempt to smooth, must be
>= 1.
max_its
- Type:
intDefault:1000 -
Maximum number of iterations to attempt smoothing before termination
w_data
- Type:
doubleDefault:0.2 -
Weight to apply to path data given (bounds it)
w_smooth
- Type:
doubleDefault:0.3 -
Weight to apply to smooth the path (smooths it)
enforce_path_inversion
- Type:
boolDefault:true -
Whether to consider input path discontinuities as path inversions from feasible planning to be respected or smooth other them. Leave on for Smac Planner feasible planners, but may want to disable for NavFn or the Route Server.
Example
smoother_server:
ros__parameters:
costmap_topic: global_costmap/costmap_raw
footprint_topic: global_costmap/published_footprint
robot_base_frame: base_link
transform_tolerance: 0.1
smoother_plugins: ["simple_smoother"]
simple_smoother:
plugin: "nav2_smoother::SimpleSmoother"
tolerance: 1.0e-10
do_refinement: True
refinement_num: 2
max_its: 1000
w_data: 0.2
w_smooth: 0.3
enforce_path_inversion: True