Skip to content

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: double Default: 1.0e-10

Change in parameter values across path to terminate smoothing

do_refinement

Type: bool Default: true

Whether to smooth the smoothed path recursively to refine the quality further

refinement_num

Type: int Default: 2

Number of times to recursively attempt to smooth, must be >= 1.

max_its

Type: int Default: 1000

Maximum number of iterations to attempt smoothing before termination

w_data

Type: double Default: 0.2

Weight to apply to path data given (bounds it)

w_smooth

Type: double Default: 0.3

Weight to apply to smooth the path (smooths it)

enforce_path_inversion

Type: bool Default: 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