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 behavior 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_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, Differential |
Rotation Shim Controller | Steve Macenski | A “shim” controller to rotate to path heading before passing to main controller for tracking. | Differential, Omni, model rotate in place |
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 |
|
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. Kinematically feasible. | 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 |
SmacPlannerLattice | Steve Macenski | An implementation of State Lattice Planner using pre-generated minimum control sets for kinematically feasible planning with any type of vehicle imaginable. Includes generator script for Ackermann, diff, omni, and legged robots. | Differential, Omnidirectional, Ackermann, Legged, Arbitrary / Custom |
ThetaStarPlanner | Anshumaan Singh | An implementaion of Theta* using either 4 or 8 connected neighborhoods, assumes the robot as a 2D holonomic particle | Differential, Omnidirectional |
Smoothers¶
Plugin Name | Creator | Description |
---|---|---|
Simple Smoother | Steve Macenski | A simple path smoother for infeasible (e.g. 2D) planners |
Constrained Smoother | Matej Vargovcik & Steve Macenski | A path smoother using a constraints problem solver to optimize various criteria such as smoothness or distance from obstacles, maintaining minimum turning radius |
Behaviors¶
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 behavior of configurable angles to clear out free space and nudge robot out of potential local failures |
Back Up | Brian Wilcox | Back up behavior of configurable distance to back out of a situation where the robot is stuck |
Wait | Steve Macenski | Wait behavior with configurable time to wait in case of time based obstacle like human traffic or getting more sensor data |
Drive On Heading | Joshua Wallace | Drive on heading behavior with configurable distance to drive |
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¶
Action Plugin Name | Creator | Description |
---|---|---|
Back Up Action | Michael Jeronimo | Calls backup behavior action |
Drive On Heading Action | Joshua Wallace | Calls drive on heading behavior action |
Clear Entire Costmap Service | Carl Delsey | Calls clear entire costmap service |
Clear Costmap Except Region Service | Guillaume Doisy | Calls clear costmap except region service |
Clear Costmap Around Robot Service | Guillaume Doisy | Calls clear costmap around robot service |
Compute Path to Pose Action | Michael Jeronimo | Calls Nav2 planner server |
Smooth Path Action | Matej Vargovcik | Calls Nav2 smoother server |
Follow Path Action | Michael Jeronimo | Calls Nav2 controller server |
Navigate to Pose Action | Michael Jeronimo | BT Node for other BehaviorTree.CPP BTs to call Navigation2 as a subtree action |
Reinitalize Global Localization Service | Carl Delsey | Reinitialize AMCL to a new pose |
Spin Action | Carl Delsey | Calls spin behavior action |
Wait Action | Steve Macenski | Calls wait behavior action |
Truncate Path | Francisco Martín | Modifies a path making it shorter |
Truncate Path Local | Matej Vargovcik | Extracts a path section around robot |
Planner Selector | Pablo Iñigo Blasco | Selects the global planner based on a topic input, otherwises uses a default planner id |
Controller Selector | Pablo Iñigo Blasco | Selects the controller based on a topic input, otherwises uses a default controller id |
Goal Checker Selector | Pablo Iñigo Blasco | Selects the goal checker based on a topic input, otherwises uses a default goal checker id |
Navigate Through Poses | Steve Macenski | BT Node for other BehaviorTree.CPP BTs to call Nav2’s NavThroughPoses action |
Remove Passed Goals | Steve Macenski | Removes goal poses passed or within a tolerance for culling old viapoints from path re-planning |
Compute Path Through Poses | Steve Macenski | Computes a path through a set of poses rather than a single end goal pose using the planner plugin specified |
Cancel Control Action | Pradheep Padmanabhan | Cancels Nav2 controller server |
Cancel BackUp Action | Pradheep Padmanabhan | Cancels backup behavior action |
Cancel Spin Action | Pradheep Padmanabhan | Cancels spin behavior action |
Cancel Wait Action | Pradheep Padmanabhan | Cancels wait behavior action |
Cancel Drive on Heading Action | Jousha Wallace | Cancels drive on heading behavior action |
Condition Plugin Name | Creator | Description |
---|---|---|
Goal Reached Condition | Carl Delsey | Checks if goal is reached within tol. |
Goal Updated Condition | Aitor Miguel Blanco | Checks if goal is preempted. |
Globally Updated Goal Condition | Joshua Wallace | Checks if goal is preempted in the global BT context |
Initial Pose received Condition | Carl Delsey | Checks if initial pose has been set |
Is Stuck Condition | Michael Jeronimo | Checks if robot is making progress or stuck |
Transform Available Condition | Steve Macenski | Checks if a TF transformation is available. When succeeds returns success for subsequent calls. |
Distance Traveled Condition | Sarthak Mittal | Checks is robot has traveled a given distance. |
Time Expired Condition | Sarthak Mittal | Checks if a given time period has passed. |
Is Battery Low Condition | Sarthak Mittal | Checks if battery percentage is below a specified value. |
Is Path Valid Condition | Joshua Wallace | Checks if a path is valid by making sure there are no LETHAL obstacles along the path. |
Path Expiring Timer | Joshua Wallace | Checks if the timer has expired. The timer is reset if the path gets updated. |
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. |
Single Trigger | Steve Macenski | Triggers nodes/subtrees below only a single time per BT run. |
PathLongerOnApproach | Pradheep Padmanabhan | Triggers child nodes if the new global path is significantly larger than the old global path on approach to the goal |
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 |