Professional Documents
Culture Documents
Teb - Local - Planner - ROS Wiki
Teb - Local - Planner - ROS Wiki
Documentation Status
Package Links
Code API (http://docs.ros.org/noetic/api/teb_local_planner/html)
Msg API (http://docs.ros.org/noetic/api/teb_local_planner/html/index-msg.html)
Tutorials (/teb_local_planner/Tutorials)
FAQ (http://answers.ros.org/questions/scope:all/sort:activity-desc/tags:teb_local_planner/page:1/)
Changelog (http://docs.ros.org/noetic/changelogs/teb_local_planner/changelog.html)
Change List (/teb_local_planner/ChangeList)
Reviews (/teb_local_planner/Reviews)
Dependencies (23)
Jenkins jobs (10)
Package Summary
Released Continuous Integration: 3 / 3 Documented
The teb_local_planner package implements a plugin to the base_local_planner of the 2D navigation stack.
The underlying method called Timed Elastic Band locally optimizes the robot's trajectory with respect to
trajectory execution time, separation from obstacles and compliance with kinodynamic constraints at
runtime.
wiki.ros.org/teb_local_planner 1/12
9/23/2020 teb_local_planner - ROS Wiki
Contents
1. Overview
2. Video
3. Node API
1. Topics
1. Published Topics
2. Subscribed Topics
2. Parameters
1. Robot Configuration Parameters
2. Goal Tolerance Parameters
3. Trajectory Configuration Parameters
4. Obstacle Parameters
5. Optimization Parameters
6. Parallel Planning in distinctive Topologies
7. Miscellaneous Parameters
4. Roadmap
1. Overview
Update: Two tutorials on planning with dynamic obstacles added (click here
(/teb_local_planner/Tutorials))
This package implements an online optimal local trajectory planner for navigation and control of mobile
robots as a plugin for the ROS navigation (/navigation) package. The initial trajectory generated by a global
planner is optimized during runtime w.r.t. minimizing the trajectory execution time (time-optimal objective),
separation from obstacles and compliance with kinodynamic constraints such as satisfying maximum
velocities and accelerations.
The current implementation complies with the kinematics of non-holonomic robots (differential drive and
car-like robots). Support of holonomic robots is included since Kinetic.
The optimal trajectory is efficiently obtained by solving a sparse scalarized multi-objective optimization
problem. The user can provide weights to the optimization problem in order to specify the behavior in case
of conflicting objectives.
Since local planners such as the Timed-Elastic-Band get often stuck in a locally optimal trajectory as they
are unable to transit across obstacles, an extension is implemented. A subset of admissible trajectories of
distinctive topologies is optimized in parallel. The local planner is able to switch to the current globally
optimal trajectory among the candidate set. Distinctive topologies are obtained by utilizing the concept of
homology / homotopy classes. The following papers are describing the approach
wiki.ros.org/teb_local_planner 2/12
9/23/2020 teb_local_planner - ROS Wiki
~<name>/obstacles (costmap_converter/ObstacleArrayMsg
(http://docs.ros.org/api/costmap_converter/html/msg/ObstacleArrayMsg.html))
Provide custom obstacles as point-, line- or polygon-shaped ones (additionally to or instead of the
costmap obstacles).
3.2 Parameters
The teb_local_planner package allows the user to set Parameters (/Parameters) in order to customize the
behavior. These parameters are grouped into several categories: robot configuration, goal tolerance,
trajectory configuration, obstacles, optimization, planning in distinctive topologies and miscellaneous
parameters. Some of them are chosen to be compliant with the base_local_planner (/base_local_planner).
Many (but not all) parameters can be modified at runtime using rqt_reconfigure (/rqt_reconfigure).
Minimum turning radius of a carlike robot (set to zero for a diff-drive robot).
wiki.ros.org/teb_local_planner 5/12
9/23/2020 teb_local_planner - ROS Wiki
The following parameters are relevant only for holonomic robots: New in ROS kinetic
Maximum strafing velocity of the robot (should be zero for non-holonomic robots!)
The following parameters are relevant for the footprint model used for optimization (see Tutorial Obstacle
Avoidance and Robot Footprint Model
(/teb_local_planner/Tutorials/Obstacle%20Avoidance%20and%20Robot%20Footprint%20Model)). New in
version 0.3
Specify the robot footprint model type used for optimization. Different types are "point", "circular",
"line", "two_circles" and "polygon." The type of the model significantly influences the required
computation time.
wiki.ros.org/teb_local_planner 6/12
9/23/2020 teb_local_planner - ROS Wiki
Desired temporal resolution of the trajectory (the trajectory is not fixed to dt_ref since the temporal
resolution is part of the optimization, but the trajectory will be resized between iterations if dt_ref +-
dt_hysteresis is violated.
wiki.ros.org/teb_local_planner 7/12
9/23/2020 teb_local_planner - ROS Wiki
C. Rösmann, F. Hoffmann and T. Bertram: Integrated online trajectory planning and optimization in
distinctive topologies, Robotics and Autonomous Systems, Vol. 88, 2017, pp. 142–153.
C. Rösmann, F. Hoffmann and T. Bertram: Planning of Multiple Robot Trajectories in Distinctive
Topologies, Proc. IEEE European Conference on Mobile Robots, UK, Lincoln, Sept. 2015
C. Rösmann, F. Hoffmann and T. Bertram: Kinodynamic Trajectory Optimization and Control for Car-
Like Robots, IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS),
Vancouver, BC, Canada, Sept. 2017.
2. Video
The following video presents the features of the package and shows examples from simulation and real
robot situations. Some spoken explanations are included in the audio track of the video.
Features introduced in version 0.2 are presented in the following video (supporting car-like robots and
costmap conversion).
wiki.ros.org/teb_local_planner 3/12
9/23/2020 teb_local_planner - ROS Wiki
If true, underlying trajectories might be initialized with backwards motions in case the goal is behind
the start within the local costmap (this is only recommended if the robot is equipped with rear
sensors).
wiki.ros.org/teb_local_planner 8/12
9/23/2020 teb_local_planner - ROS Wiki
3. Node API
3.1 Topics
3.1.1 Published Topics
~<name>/global_plan (nav_msgs/Path (http://docs.ros.org/api/nav_msgs/html/msg/Path.html))
Global plan that the local planner is currently attempting to follow. Used primarily for visualization
purposes.
~<name>/teb_poses (geometry_msgs/PoseArray
(http://docs.ros.org/api/geometry_msgs/html/msg/PoseArray.html))
The discrete pose list (SE2) of the current local plan. Used primarily for visualization purposes.
~<name>/teb_markers (visualization_msgs/Marker
(http://docs.ros.org/api/visualization_msgs/html/msg/Marker.html))
The teb_local_planner provides additional information of the planning scene via markers with
different namespaces. Namespaces PointObstacles (/PointObstacles) and PolyObstacles
(/PolyObstacles): visualize all point and polygon obstacles that are currently considered during
optimization. Namespace TebContainer (/TebContainer): Visualize all found and optimized
trajectories that rest in alternative topologies (only if parallel planning is enabled). Some more
information is published such as the optimization footprint model.
~<name>/teb_feedback (teb_local_planner/FeedbackMsg
(http://docs.ros.org/api/teb_local_planner/html/msg/FeedbackMsg.html))
The feedback message contains the planned trajectory including the velocity profile and temporal
information as well as the obstacle list. Used primarily for evaluation and debugging. Parameter ~
<name>/publish_feedback must be enabled.
wiki.ros.org/teb_local_planner 4/12
9/23/2020 teb_local_planner - ROS Wiki
If this parameter is set to true, the motion of obstacles with non-zero velocity (provided via user-
supplied obstacles on topic ~/obstacles or obtained from the costmap_converter
(/costmap_converter)) is predicted and considered during optimization via a constant velocity model.
New
The following parameters are relevant only if costmap_converter (/costmap_converter) plugins are desired
(see tutorial):
Define plugin name in order to convert costmap cells to points/lines/polygons. Set an empty string to
disable the conversion such that all cells are treated as point-obstacles.
Number of actual solver iterations called in each outerloop iteration. See param
no_outer_iterations.
wiki.ros.org/teb_local_planner 9/12
9/23/2020 teb_local_planner - ROS Wiki
Some special weights (currently weight_obstacle) are repeatedly scaled by this factor in each
outer TEB iteration (weight_new = weight_old*factor). Increasing weights iteratively instead of setting
a huge value a-priori leads to better numerical conditions of the underlying optimization problem.
wiki.ros.org/teb_local_planner 10/12
9/23/2020 teb_local_planner - ROS Wiki
Activate parallel planning in distinctive topologies (requires much more CPU resources, since
multiple trajectories are optimized at once)
wiki.ros.org/teb_local_planner 11/12
9/23/2020 teb_local_planner - ROS Wiki
Specify a time duration in seconds that needs to be expired before a switch to a new equivalence
class is allowed.
Topic name of the odometry message, provided by the robot driver or simulator.
4. Roadmap
Some features and improvements that are currently planned for the future. Contributions are welcome!
Add and improve safety functions in case of unavoidable obstacles (e.g. for obstacles that are
located really close to the goal).
Implementation of suitable escape behaviors.
Improvements/Solutions for cases in which the planner oscillates between multiple locally optimal
solutions (not on a topologic basis, but due to occuring noise etc.).
(http://www.osrfoundation.org)
wiki.ros.org/teb_local_planner 12/12