Navigation 2Logo
latest
  • Getting Started
    • Installation
    • Running the Example
    • Navigating
  • Build and Install
    • Install
    • Build
      • For Released Distributions
        • Install ROS
        • Build Nav2
      • For Main Branch Development
        • Build ROS 2 Main
        • Build Nav2 Main
    • Docker
      • Building Docker Container
      • Using DockerHub Container
    • Generate Doxygen
    • Help
      • Build Troubleshooting Guide
        • Common Nav2 Dependencies Build Failures
        • Reporting Issue
  • Navigation Concepts
    • ROS 2
      • Action Server
      • Lifecycle Nodes and Bond
    • Behavior Trees
    • Navigation Servers
      • Planner, Controller, Smoother and Recovery Servers
      • Planners
      • Controllers
      • Behaviors
      • Smoothers
      • Waypoint Following
    • State Estimation
      • Standards
      • Global Positioning: Localization and SLAM
      • Odometry
    • Environmental Representation
      • Costmaps and Layers
      • Costmap Filters
      • Other Forms
    • Nav2 Academic Overview
  • First-Time Robot Setup Guide
    • Setting Up Transformations
      • Transforms Introduction
      • Static Transform Publisher Demo
      • Transforms in Navigation2
      • Conclusion
    • Setting Up The URDF
      • URDF and the Robot State Publisher
      • Setting Up the Environment
      • Writing the URDF
      • Build and Launch
      • Visualization using RVIZ
      • Adding Physical Properties
      • Conclusion
    • Setting Up Odometry
      • Odometry Introduction
      • Setting Up Odometry on your Robot
      • Simulating an Odometry System using Gazebo
        • Setup and Prerequisites
        • Adding Gazebo Plugins to a URDF
        • Launch and Build Files
        • Build, Run and Verification
      • Robot Localization Demo
        • Configuring Robot Localization
        • Launch and Build Files
        • Build, Run and Verification
      • Conclusion
    • Setting Up Sensors
      • Sensor Introduction
        • Common Sensor Messages
      • Simulating Sensors using Gazebo
        • Adding Gazebo Plugins to a URDF
        • Launch and Build Files
        • Build, Run and Verification
      • Mapping and Localization
      • Costmap 2D
        • Configuring nav2_costmap_2d
        • Build, Run and Verification
      • Conclusion
    • Setting Up the Robot’s Footprint
      • Footprint Introduction
      • Configuring the Robot’s Footprint
      • Build, Run and Verification
      • Visualizing Footprint in RViz
      • Conclusion
    • Setting Up Navigation Plugins
      • Planner and Controller Servers
      • Selecting the Algorithm Plugins
        • Planner Server
        • Controller Server
      • Conclusion
    • Setting Up Lifecycle and Composition Nodes
      • Lifecycle
      • Composition
        • Manual Composition
        • Dynamic Composition
      • Conclusion
  • General Tutorials
    • Camera Calibration
      • Overview
      • Requirements
      • Tutorial Steps
    • Get Backtrace in ROS 2 / Nav2
      • Overview
      • Preliminaries
      • From a Node
      • From a Launch File
      • From Nav2 Bringup
      • Automatic backtrace on crash
    • Navigating with a Physical Turtlebot 3
      • Overview
      • Requirements
      • Tutorial Steps
        • 0- Setup Your Enviroment Variables
        • 1- Launch Turtlebot 3
        • 2- Launch Nav2
        • 3- Launch RVIZ
        • 4- Initialize the Location of Turtlebot 3
        • 5- Send a Goal Pose
    • (SLAM) Navigating While Mapping
      • Overview
      • Requirements
      • Tutorial Steps
        • 0- Launch Robot Interfaces
        • 1- Launch Navigation2
        • 2- Launch SLAM
        • 3- Working with SLAM
        • 4- Getting Started Simplification
    • (STVL) Using an External Costmap Plugin
      • Overview
      • Costmap2D and STVL
      • Tutorial Steps
        • 0- Setup
        • 1- Install STVL
        • 1- Modify Navigation2 Parameter
        • 2- Launch Navigation2
        • 3- RVIZ
    • Dynamic Object Following
      • Overview
      • Tutorial Steps
        • 0- Create the Behavior Tree
        • 1- Setup Rviz clicked point
        • 2- Run Dynamic Object Following in Nav2 Simulation
    • Navigating with Keepout Zones
      • Overview
      • Requirements
      • Tutorial Steps
        • 1. Prepare filter mask
        • 2. Configure Costmap Filter Info Publisher Server
        • 3. Enable Keepout Filter
        • 4. Run Nav2 stack
    • Navigating with Speed Limits
      • Overview
      • Requirements
      • Tutorial Steps
        • 1. Prepare filter mask
        • 2. Configure Costmap Filter Info Publisher Server
        • 3. Enable Speed Filter
        • 4. Run Nav2 stack
    • Groot - Interacting with Behavior Trees
      • Overview
      • Visualize Behavior Trees
      • Edit Behavior Trees
      • Adding A Custom Node
    • Using Rotation Shim Controller
      • Overview
      • What is the Rotation Shim Controller?
      • Configuring Rotation Shim Controller
      • Configuring Primary Controller
      • Demo Execution
    • Adding a Smoother to a BT
      • Overview
      • Requirements
      • Tutorial Steps
        • 0- Familiarization with the Smoother BT Node
        • 1- Specifying a Smoother Plugin
        • 2- Modifying your BT XML
  • Plugin Tutorials
    • Writing a New Costmap2D Plugin
      • Overview
      • Requirements
      • Tutorial Steps
        • 1- Write a new Costmap2D plugin
        • 2- Export and make GradientLayer plugin
        • 3- Enable the plugin in Costmap2D
        • 4- Run GradientLayer plugin
    • Writing a New Planner Plugin
      • Overview
      • Requirements
      • Tutorial Steps
        • 1- Creating a new Planner Plugin
        • 2- Exporting the planner plugin
        • 3- Pass the plugin name through params file
        • 4- Run StraightLine plugin
    • Writing a New Controller Plugin
      • Overview
      • Requirements
      • Tutorial Steps
        • 1- Create a new Controller Plugin
        • 2- Exporting the controller plugin
        • 3- Pass the plugin name through the params file
        • 4- Run Pure Pursuit Controller plugin
    • Writing a New Behavior Tree Plugin
      • Overview
      • Requirements
      • Tutorial Steps
        • 1- Creating a new BT Plugin
        • 2- Exporting the planner plugin
        • 3- Add plugin library name to config
        • 4- Run Your Custom plugin
    • Writing a New Behavior Plugin
      • Overview
      • Requirements
      • Tutorial Steps
        • 1- Creating a new Behavior Plugin
        • 2- Exporting the Behavior Plugin
        • 3- Pass the plugin name through params file
        • 4- Run Behavior Plugin
  • Configuration Guide
    • Waypoint Follower
      • Parameters
      • Provided Plugins
        • WaitAtWaypoint
        • PhotoAtWaypoint
        • InputAtWaypoint
      • Default Plugin
      • Example
    • Behavior-Tree Navigator
      • Parameters
      • Example
    • Behavior Tree XML Nodes
      • Action Plugins
        • Wait
        • Spin
        • BackUp
        • DriveOnHeading
        • ComputePathToPose
        • FollowPath
        • NavigateToPose
        • ClearEntireCostmap
        • ClearCostmapExceptRegion
        • ClearCostmapAroundRobot
        • ReinitializeGlobalLocalization
        • TruncatePath
        • TruncatePathLocal
        • PlannerSelector
        • ControllerSelector
        • GoalCheckerSelector
        • NavigateThroughPoses
        • ComputePathThroughPoses
        • RemovePassedGoals
        • CancelControl
        • CancelBackUp
        • CancelSpin
        • CancelWait
        • CancelDriveOnHeading
        • SmoothPath
      • Condition Plugins
        • GoalReached
        • TransformAvailable
        • DistanceTraveled
        • GoalUpdated
        • GloballyUpdatedGoal
        • InitialPoseReceived
        • IsStuck
        • TimeExpired
        • IsBatteryLow
        • IsPathValid
        • PathExpiringTimer
      • Control Plugins
        • PipelineSequence
        • RoundRobin
        • RecoveryNode
      • Decorator Plugins
        • RateController
        • DistanceController
        • SpeedController
        • GoalUpdater
        • PathLongerOnApproach
        • SingleTrigger
      • Example
    • Costmap 2D
      • Costmap2D ROS Parameters
      • Default Plugins
      • Plugin Parameters
        • Static Layer Parameters
        • Inflation Layer Parameters
        • Obstacle Layer Parameters
        • Voxel Layer Parameters
        • Range Sensor Parameters
      • Costmap Filters Parameters
        • Keepout Filter Parameters
        • Speed Filter Parameters
      • Example
    • Lifecycle Manager
      • Parameters
      • Example
    • Planner Server
      • Parameters
      • Default Plugins
      • Example
    • NavFn Planner
      • Parameters
      • Example
    • Smac Planner
      • Provided Plugins
        • Smac 2D Planner
        • Smac Hybrid-A* Planner
        • Smac State Lattice Planner
      • Description
    • Theta Star Planner
      • Parameters
      • Example
    • Controller Server
      • Parameters
      • Provided Plugins
        • SimpleProgressChecker
        • SimpleGoalChecker
        • StoppedGoalChecker
      • Default Plugins
      • Example
    • DWB Controller
      • Controller
        • DWB Controller
        • XYTheta Iterator
        • Kinematic Parameters
        • Publisher
      • Plugins
        • LimitedAccelGenerator
        • StandardTrajectoryGenerator
      • Trajectory Critics
        • BaseObstacleCritic
        • GoalAlignCritic
        • GoalDistCritic
        • ObstacleFootprintCritic
        • OscillationCritic
        • PathAlignCritic
        • PathDistCritic
        • PreferForwardCritic
        • RotateToGoalCritic
        • TwirlingCritic
      • Example
    • Map Server / Saver
      • Map Saver Parameters
      • Map Server Parameters
      • Costmap Filter Info Server Parameters
      • Example
    • AMCL
      • Parameters
      • Example
    • Behavior Server
      • Behavior Server Parameters
      • Default Plugins
      • Spin Behavior Parameters
      • BackUp Behavior Parameters
      • DriveOnHeading Behavior Parameters
      • Example
    • Smoother Server
      • Smoother Server Parameters
      • Example
    • Simple Smoother
      • Simple Smoother Parameters
      • Example
    • Regulated Pure Pursuit
      • Regulated Pure Pursuit Parameters
      • Example
    • Rotation Shim Controller
      • Rotation Shim Controller Parameters
      • Example
    • Constrained smoother
      • Smoother Server Parameters
      • Example
  • Tuning Guide
    • Inflation Potential Fields
    • Robot Footprint vs Radius
    • Rotate in Place Behavior
    • Planner Plugin Selection
    • Controller Plugin Selection
    • Caching Obstacle Heuristic in Smac Planners
    • Nav2 Launch Options
    • Other Pages We’d Love To Offer
  • Nav2 Behavior Trees
    • Introduction To Nav2 Specific Nodes
      • Action Nodes
      • Condition Nodes
      • Decorator Nodes
      • Control: PipelineSequence
      • Control: Recovery
      • Control: RoundRobin
    • Detailed Behavior Tree Walkthrough
      • Overview
      • Prerequisites
      • Navigate To Pose With Replanning and Recovery
      • Navigation Subtree
      • Recovery Subtree
    • Navigate To Pose
    • Navigate Through Poses
    • Navigate To Pose and Pause Near Goal-Obstacle
    • Navigate To Pose With Consistent Replanning And If Path Becomes Invalid
    • Follow Dynamic Point
  • Navigation Plugins
    • Costmap Layers
    • Costmap Filters
    • Controllers
    • Planners
    • Smoothers
    • Behaviors
    • Waypoint Task Executors
    • Goal Checkers
    • Progress Checkers
    • Behavior Tree Nodes
  • Migration Guides
    • Dashing to Eloquent
      • New Packages
      • New Plugins
      • Navigation2 Architectural Changes
    • Eloquent to Foxy
      • General
      • Server Updates
      • New Plugins
      • Map Server Re-Work
      • New Particle Filter Messages
      • Selection of Behavior Tree in each navigation action
      • FollowPoint Capability
      • New Costmap Layer
    • Foxy to Galactic
      • NavigateToPose Action Feedback updates
      • NavigateToPose BT-node Interface Changes
      • NavigateThroughPoses and ComputePathThroughPoses Actions Added
      • ComputePathToPose BT-node Interface Changes
      • ComputePathToPose Action Interface Changes
      • BackUp BT-node Interface Changes
      • BackUp Recovery Interface Changes
      • Nav2 Controllers and Goal Checker Plugin Interface Changes
      • FollowPath goal_checker_id attribute
      • Groot Support
      • New Plugins
      • Costmap Filters
      • SmacPlanner
      • ThetaStarPlanner
      • RegulatedPurePursuitController
      • Costmap2D current_ Usage
      • Standard time units in parameters
      • Ray Tracing Parameters
      • Obstacle Marking Parameters
      • Recovery Action Changes
      • Default Behavior Tree Changes
      • NavFn Planner Parameters
      • New ClearCostmapExceptRegion and ClearCostmapAroundRobot BT-nodes
      • New Behavior Tree Nodes
      • sensor_msgs/PointCloud to sensor_msgs/PointCloud2 Change
      • ControllerServer New Parameter failure_tolerance
      • Removed BT XML Launch Configurations
      • Nav2 RViz Panel Action Feedback Information
    • Galactic to Humble
      • Major improvements to Smac Planners
      • Simple (Python) Commander
      • Reduce Nodes and Executors
      • Extending the BtServiceNode to process Service-Results
      • Including new Rotation Shim Controller Plugin
      • Spawning the robot in Gazebo
      • Recovery Behavior Timeout
      • New parameter use_final_approach_orientation for the 3 2D planners
      • SmacPlanner2D and Theta*: fix goal orientation being ignored
      • SmacPlanner2D, NavFn and Theta*: fix small path corner cases
      • Change and fix behavior of dynamic parameter change detection
      • Dynamic Parameters
      • BT Action Nodes Exception Changes
      • BT Navigator Groot Multiple Navigators
      • Removed Kinematic Limiting in RPP
      • Added Smoother Task Server
      • Removed Use Approach Velocity Scaling Param in RPP
      • Refactored AMCL motion models as plugins
      • Dropping Support for Live Groot Monitoring of Nav2
      • Replanning Only if Path is Invalid
      • Fix CostmapLayer clearArea invert param logic
      • Dynamic Composition
      • BT Cancel Node
      • BT PathLongerOnApproach Node
      • BT TruncatePathLocal Node
      • Constrained Smoother
      • Replanning at a Constant Rate and if the Path is Invalid
      • Euclidean Distance 2D
      • Recovery To Behavior
      • Respawn Support in Launch and Lifecycle Manager
  • Simple Commander API
    • Overview
    • Commander API
    • Examples and Demos
  • Humble Roadmap
  • Getting Involved
    • Getting Involved
    • Process
    • Licensing
    • Developer Certification of Origin (DCO)
  • About and Contact
    • Related Projects
    • ROS to ROS 2 Navigation
    • About
    • Contact
  • Robots Using
Navigation 2
Edit
  • »
  • Navigation Plugins

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

© Copyright 2020.