|Note: This tutorial assumes that you have completed the previous tutorials: Set up and test Optimization, Obstacle Avoidance and Robot Footprint Model.|
|Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.|
Planning for holonomic robotsDescription: In this tutorial you will learn how to set up the planner for holonomic robots (experimental).
Keywords: Trajectory Optimization Local Planner Navigation Holonomic Omnidirectional
Tutorial Level: INTERMEDIATE
Next Tutorial: Incorporate customized Obstacles
New in ROS kinetic
This tutorial targets version 0.6+ of the teb_local_planner package.
In general, holonomic robots are able to follow any trajectory that is feasible also for non-holonomic robots. Hence, the teb_local_planner navigation setup can be directly applied as mentioned in the previous tutorials. However, in that case the robot does not take any advantages of its ability to move in any direction into account. The teb_local_planner package provides additional parameters which account for the extended robot's flexibility.
A working navigation setup in combination with the teb_local_planner is assumed before proceeding with the extended configuration:
In case of a non-holonomic robot, the strafing velocity max_vel_y (velocity towards the y-direction w.r.t. the robot base frame) must be zero. Choose a positive bound in order to activate the support of holonomic robots. The value is considered for both strafing to the left and to the right side.
The desired maximum y acceleration can be set using parameter acc_lim_y. Note, taking acceleration limits into account might be waived for faster computation times by setting the corresponding penalty weight weight_acc_lim_y to zero.
Parameter weight_kinematics_nh specifies the weight for satisfying the non-holonomic constraint by the optimizer and is usually set to a high value for non-holonomic robots. Reduce the value in order to weaken the penalty and hence allowing the robot to consider non-zero y velocities. The actual choice often depends on the application and particular robot. Keeping at least a small value (approx. 1) is often recommended for regularization purposes.
You can find an example setup with the stage simulator in the teb_local_planner_tutorials package.
Install the teb_local_planner_tutorials package
- Inspect the parameter/config files
Launch the navigation setup: roslaunch teb_local_planner_tutorials robot_omnidir_in_stage.launch
Modify parameters using rosrun rqt_reconfigure rqt_reconfigure or by adapting the files.