Can velocity ramps be configured for TEB Local Planner?

asked 2019-01-11 02:59:45 -0600

curi_ROS gravatar image

updated 2019-01-11 04:20:28 -0600

The cmd_vel output of teb local planner is very abrupt. I would like the bot to start without any jerk and also reach the goal position smoothly. Ideally this would involve some sort of configurable velocity ramp. However as mentioned in the comments under the previous question, the JointVelocityController doesn't control the values for the motor, it just sends them through. It also enforces safety limits.

I need to find a way to control cmd_vel from teb_local_planner in order to control the velocities I provide to my wheels.

There is nothing in the documentation that explicitly talks about configuring a velocity ramp. The only this that comes close is free_goal_vel

  ~<name>/free_goal_vel (bool, default: false)

 Remove the goal velocity constraint such that the robot can 
 arrive at the goal with maximum speed

If I understand correctly, using an external velocity smoother like yocs_velocity_smoother will cause the robot to ramp down velocity and overshoot when the TEB Local Planner sends 0 as command velocity upon reaching the goal.


I am trying to get a differential drive robot to navigate autonomously. I asked #q312455 regarding using the JointVelocityController to configure velocity ramps. I understand that I would have to use an external controller like yocs or pid.

Without an external wheel controller: When I give a goal point, the bot moves with a jerk and when it reaches the goal point it stops with a jerk. There is no velocity ramp, while accelerating or while decelerating.Similarly when a goal point is given straight ahead of the robot its wobbles on its way to the goal. I feel like these issues would be solved if there were a velocity controller implemented.Since JointVelocityControllers are a type of ForwardCommandController they cannot be used for the purpose of velocity control.Hence the need for an external velocity controller (eg. yocs_velocity_smoother or PID).

My confusion arises from the fact that i have to stop when i reach a goal point ,but i want to be able to come to a gradual halt as i reach the goal.This leads me to believe the control of velocity ramps has to be programmable in teb_local_planner to ensure i do not overshoot the goal (which i could not find).However the implementation of a separate controller such as the yocs_velocity_smoother or a pid controller on the output from teb would cause such an overshoot. How should i go about resolving this?

edit retag flag offensive close merge delete


It would probably be good to provide some context. Namely: #q312455.

gvdhoorn gravatar image gvdhoorn  ( 2019-01-11 03:18:02 -0600 )edit

I use TEB daily and there is no jerking whatsoever, it should be possible to achieve what you want using it. Maybe check the acceleration limits parameter.

juanlu gravatar image juanlu  ( 2019-01-11 04:03:17 -0600 )edit

Edited to provide context.

curi_ROS gravatar image curi_ROS  ( 2019-01-11 04:21:09 -0600 )edit