Navigation Plugins
There are a number of plugin interfaces for users to create their own custom applications or algorithms with.
Namely, the costmap layer, planner, controller, behavior tree, and recovery plugins.
A list of all known plugins are listed here below for ROS 2 Navigation.
If you know of a plugin, or you have created a new plugin, please consider submitting a pull request with that information.
This file can be found and editted under sphinx_docs/plugins/index.rst
.
For tutorials on creating your own plugins, please see Writing a New Costmap2D Plugin, Writing a New Behavior Tree Plugin, Writing a New Controller Plugin, Writing a New Planner Plugin, or Writing a New Recovery Plugin.
Costmap Layers
Plugin Name |
Creator |
Description |
Voxel Layer |
Eitan Marder-Eppstein |
Maintains persistant
3D voxel layer using depth and
laser sensor readings and
raycasting to clear free space |
Range Layer |
David Lu |
Uses a probabalistic model to
put data from sensors that
publish range msgs on the costmap |
Static Layer |
Eitan Marder-Eppstein |
Gets static map and loads
occupancy information into
costmap |
Inflation Layer |
Eitan Marder-Eppstein |
Inflates lethal obstacles in
costmap with exponential decay |
Obstacle Layer |
Eitan Marder-Eppstein |
Maintains persistent 2D costmap
from 2D laser scans with
raycasting to clear free space |
Spatio-Temporal Voxel Layer |
Steve Macenski |
Maintains temporal 3D sparse
volumetric voxel grid with decay
through sensor models |
Non-Persistent Voxel Layer |
Steve Macenski |
Maintains 3D occupancy grid
consisting only of the most
sets of measurements |
Costmap Filters
Plugin Name |
Creator |
Description |
Keepout Filter |
Alexey Merzlyakov |
Maintains keep-out/safety zones
and preferred lanes for moving |
Speed Filter |
Alexey Merzlyakov |
Limits maximum velocity of robot
in speed restriction areas |
Controllers
Plugin Name |
Creator |
Description |
Drivetrain support |
DWB Controller |
David Lu!! |
A highly configurable DWA
implementation with plugin
interfaces |
Differential,
Omnidirectional,
Legged |
TEB Controller |
Christoph Rösmann |
A MPC-like controller suitable
for ackermann, differential, and
holonomic robots. |
Ackermann, Legged,
Omnidirectional,
Differential |
Regulated Pure Pursuit |
Steve Macenski |
A service / industrial robot
variation on the pure pursuit
algorithm with adaptive features. |
Ackermann, Legged,
Omnidirectional,
Differential |
Planners
Plugin Name |
Creator |
Description |
Drivetrain support |
NavFn Planner |
Eitan Marder-Eppstein & Kurt Konolige |
A navigation function
using A* or Dijkstras
expansion, assumes 2D
holonomic particle |
Differential,
Omnidirectional,
Legged |
SmacPlanner |
Steve Macenski |
A SE2 Hybrid-A*
implementation using either
Dubin or Reeds-shepp motion
models with smoother and
multi-resolution query.
Cars, car-like, and
ackermann vehicles. |
Ackermann,
Differential,
Omnidirectional,
Legged |
SmacPlanner2D |
Steve Macenski |
A 2D A* implementation
Using either 4 or 8
connected neighborhoods
with smoother and
multi-resolution query |
Differential,
Omnidirectional,
Legged |
Recoveries
Plugin Name |
Creator |
Description |
Clear Costmap |
Eitan Marder-Eppstein |
A service to clear the given
costmap in case of incorrect
perception or robot is stuck |
Spin |
Steve Macenski |
Rotate recovery of configurable
angles to clear out free space
and nudge robot out of potential
local failures |
Back Up |
Brian Wilcox |
Back up recovery of configurable
distance to back out of a
situation where the robot is
stuck |
Wait |
Steve Macenski |
Wait recovery with configurable
time to wait in case of time
based obstacle like human traffic
or getting more sensor data |
Waypoint Task Executors
Plugin Name |
Creator |
Description |
WaitAtWaypoint |
Fetullah Atas |
A plugin to execute a wait
behavior on
waypoint arrivals. |
PhotoAtWaypoint |
Fetullah Atas |
A plugin to take and save photos
to specified directory on
waypoint arrivals. |
InputAtWaypoint |
Steve Macenski |
A plugin to wait for user input
before moving onto the next
waypoint. |
Goal Checkers
Plugin Name |
Creator |
Description |
SimpleGoalChecker |
David Lu!! |
A plugin check whether robot
is within translational distance
and rotational distance of goal. |
StoppedGoalChecker |
David Lu!! |
A plugin check whether robot
is within translational distance
, rotational distance of goal,
and velocity threshold. |
Progress Checkers
Plugin Name |
Creator |
Description |
SimpleProgressChecker |
David Lu!! |
A plugin to check whether the
robot was able to move a minimum
distance in a given time to
make progress towards a goal |
Behavior Tree Nodes
Decorator Plugin Name |
Creator |
Description |
Rate Controller |
Michael Jeronimo |
Throttles child node to a given
rate |
Distance Controller |
Sarthak Mittal |
Ticks child node based on the
distance traveled by the robot |
Speed Controller |
Sarthak Mittal |
Throttles child node to a rate
based on current robot speed. |
Goal Updater |
Francisco Martín |
Updates the goal received via
topic subscription. |
Control Plugin Name |
Creator |
Description |
Pipeline Sequence |
Carl Delsey |
A variant of a sequence node that
will re-tick previous children
even if another child is running |
Recovery |
Carl Delsey |
Node must contain 2 children
and returns success if first
succeeds. If first fails, the
second will be ticked. If
successful, it will retry the
first and then return its value |
Round Robin |
Mohammad Haghighipanah |
Will tick i th child until
a result and move on to i+1 |