Navigation 2 Logo
latest
  • Getting Started
    • Installation
    • Running the Example
    • Navigating
  • Build and Install
    • Install
    • Build
      • Build Navigation2 For Released Distribution
        • Install ROS
        • Build Navigation2
      • Quickstart Build Main
        • Steps
        • Options
      • Manually Build Main
        • Build ROS 2 Main
        • Build Navigation2 Dependencies
        • Build Navigation2 Main
    • Docker
      • Building Docker Container
      • Using DockerHub Container
    • Generate Doxygen
    • Help
      • Build Troubleshooting Guide
        • Common Navigation2 Dependencies Build Failures
        • Reporting Issue
  • Navigation Concepts
    • ROS 2
      • Action Server
      • Lifecycle Nodes and Bond
    • Behavior Trees
    • Navigation Servers
      • Planner, Controller, and Recovery Servers
      • Planners
      • Controllers
      • Recoveries
      • Waypoint Following
    • State Estimation
      • Standards
      • Global Positioning: Localization and SLAM
      • Odometry
    • Environmental Representation
      • Costmaps and Layers
      • Costmap Filters
      • Other Forms
    • Navigation2 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
  • General Tutorials
    • Camera Calibration
      • Overview
      • Requirements
      • Tutorial Steps
    • Get Backtrace in ROS2 / Nav2
      • Overview
      • Preliminaries
      • From a Node
      • From a Launch File
      • From Navigation2 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 Navigation2
        • 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
    • (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 Navigation2 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 Navigation2 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 Navigation2 stack
  • 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 Recovery Plugin
      • Overview
      • Requirements
      • Tutorial Steps
        • 1- Creating a new Recovery Plugin
        • 2- Exporting the recovery plugin
        • 3- Pass the plugin name through params file
        • 4- Run Recovery 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
        • ComputePathToPose
        • FollowPath
        • NavigateToPose
        • ClearEntireCostmap
        • ReinitializeGlobalLocalization
        • TruncatePath
      • Condition Plugins
        • GoalReached
        • TransformAvailable
        • DistanceTraveled
        • GoalUpdated
        • InitialPoseReceived
        • IsStuck
        • TimeExpired
        • IsBatteryLow
      • Control Plugins
        • PipelineSequence
        • RoundRobin
        • RecoveryNode
      • Decorator Plugins
        • RateController
        • DistanceController
        • SpeedController
        • GoalUpdater
      • 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
      • 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
    • Recovery Server
      • Recovery Server Parameters
      • Default Plugins
      • Spin Recovery Parameters
      • BackUp Recovery Parameters
      • Example
    • Regulated Pure Pursuit
      • Regulated Pure Pursuit Parameters
      • Example
  • Navigation Plugins
    • Costmap Layers
    • Costmap Filters
    • Controllers
    • Planners
    • Recoveries
    • 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 BT-node Interface Changes
      • BackUp BT-node Interface Changes
      • BackUp Recovery Interface Changes
      • Groot Support
      • New Plugins
      • Costmap Filters
      • SmacPlanner
      • RegulatedPurePursuitController
      • Costmap2D current_ Usage
      • Standard time units in parameters
      • Ray Tracing Parameters
      • Obstacle Marking Parameters
  • Getting Involved
    • Getting Involved
    • Process
    • Licensing
    • Developer Certification of Origin (DCO)
  • About and Contact
    • Robots Using
    • Related Projects
    • ROS to ROS 2 Navigation
    • About
    • Contact
  • Projects for 2020 Summer Student Program
    • 1. Create a Configuration Assistant (Analog to MoveIt)
    • 2. Create New Planner and Controller Plugins
    • 3. Port Grid Maps to ROS 2 and Environmental Model
    • 4. Advanced Navigation Testing Framework
    • 5. Navigation Branding and Website
    • 6. 2D/3D Localization Improvements
    • 7. Navigation Dynamic Obstacle Integration
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 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¶

Action Plugin Name Creator Description
Back Up Action Michael Jeronimo Calls backup recovery action
Clear Costmap Service Carl Delsey Calls clear costmap service
Compute Path to Pose Action Michael Jeronimo Calls Nav2 planner 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 recovery action
Wait Action Steve Macenski Calls wait recovery action
Truncate Path Francisco Martín Modifies a path making it shorter
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.
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.
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

© Copyright 2020.