导航插件

有许多插件接口可供用户创建自己的自定义应用程序或算法。 即成本图层、规划器、控制器、行为树和行为插件。 下面列出了 ROS 2 Navigation 的所有已知插件列表。 如果您知道某个插件,或者您创建了一个新插件,请考虑提交包含该信息的拉取请求。

此文件可在“sphinx_docs/plugins/index.rst”下找到并编辑。 有关创建自己的插件的教程,请参阅:ref:writing_new_costmap2d_plugin、:ref:writing_new_nbt_plugin、:ref:writing_new_nav2controller_plugin、:ref:writing_new_nav2planner_plugin、:ref:writing_new_behavior_plugin 或 :ref:writing_new_nav2navigator_plugin

行为树导航器

Plugin Name

Creator

Description

NavigateToPoseNavigator

Steve Macenski

Point-to-point navigation via a behavior tree action server

NavigateThroughPosesNavigator

Steve Macenski

Point-through-points navigation via a behavior tree action server

CoverageNavigator

Steve Macenski

Complete coverage navigation (Cartesian or GPS) via a BTs

Costmap Layers

Plugin Name

Creator

Description

Voxel Layer

Eitan Marder-Eppstein

Maintains persistent 3D voxel layer using depth and laser sensor readings and raycasting to clear free space

Range Layer

David Lu

Uses a probabilistic 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

Denoise Layer

Andrey Ryzhikov

Filters noise-induced standalone obstacles or small obstacles groups

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

Binary Filter

Alexey Merzlyakov

Enables binary (boolean) mask behavior to trigger actions.

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

MPPI Controller

Steve Macenski Aleksei Budyakov

A predictive MPC controller with modular & custom cost functions that can accomplish many tasks.

Differential, Omni, Ackermann

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

Graceful Controller

Alberto Tudela

A controller based on a pose-following control law to generate smooth trajectories.

Differential

Vector Pursuit Controller

Black Coffee Robotics

A controller based on the vector pursuit algorithm useful for high speed accurate path tracking.

Differential, Ackermann, Legged,

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

SmacPlannerHybrid

(formerly 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. 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 implementation 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

Savitzky-Golay Smoother

Steve Macenski

A path smoother using a Savitzky-Golay filter to smooth the path via digital signal processing to remove noise from the path.

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

Assisted Teleop

Joshua Wallace

AssistedTeleop behavior that scales teleop commands to prevent collisions.

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

PoseProgressChecker

Guillaume Doisy

A plugin to check whether the robot was able to move a minimum distance or angle 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

Assisted Teleop Action

Joshua Wallace

Calls assisted teleop 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

`Reinitialize 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

Smoother Selector

Owen Hooper

Selects the smoother based on a topic input, otherwises uses a default smoother id

Progress Checker Selector

Steve Macenski

Selects the progress checker based on a topic input, otherwises uses a default progress 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

Remove In Collision Goals

Tony Najjar

Removes goal poses that have a footprint or point cost above a threshold.

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

Joshua Wallace

Cancels drive on heading behavior action

Cancel Assisted Teleop Action

Joshua Wallace

Cancels assisted teleop behavior action

Cancel Complete Coverage Action

Steve Macenski

Cancels compute complete coverage

Compute Complete Coverage Path Action

Steve Macenski

Calls coverage planner server

Get Pose From Path Action

Marc Morcos

Extracts a pose from a path

Dock Robot Action

Steve Macenski

Calls dock robot action

Undock Robot Action

Steve Macenski

Calls undock robot 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.

Are Error Codes Present

Joshua Wallace

Checks if the specified error codes are present.

Would A Controller Recovery Help

Joshua Wallace

Checks if a controller recovery could help clear the controller server error code.

Would A Planner Recovery Help

Joshua Wallace

Checks if a planner recovery could help clear the planner server error code.

Would A Smoother Recovery Help

Joshua Wallace

Checks if a Smoother recovery could help clear the smoother server error code.

Is Battery Charging Condition

Alberto Tudela

Checks if the battery is charging.

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