Using teb_planner and move_base the robot only reaches max velocity when 2D Nav goal is set in a certain direction

asked 2023-01-30 12:44:54 -0500

Al53 gravatar image

updated 2023-01-30 13:36:43 -0500

I am running an Ackermann vehicle in simulation using Gazebo 11.11.0 with an obstacle-free map on an I7 16GB RAM computer showing ~38% cpu utilization with Noetic/Ubuntu 20.04.  Move_base with teb_planner is sending cmd_vel.linear.X commands in response to RVIZ 2D Nav goals to move the vehicle at 1.8 m/s (i.e. Which is the max velocity set in teb planner yaml), but only when moving on the X axis in a positive direction.  My problem statement is cmd_vel.linear.X is lower which means the vehicle speed moves much slower when I issue 2D Nav goals on the Y axis (e.g. ~0.4 ms) and when moving in the negative direction on the X axis (e.g. ~0.7 m/s). I want to be able to move at 1.8 m/s in all directions that are free of obstacles. – video link

I have used rqt dynamic configuration to test multiple parameters including max_vel_theta, acc_lim_x, acc_lim_theta and controller_frequency.  I also set penalty_epsilon = 0.05 which seemed to allow the vehicle to reach max speed for X axis when moving right.  My footprint model is "line".  

@davidteixeira had an issue when negative x direction of the odom frame. Issue link, but I’m not setting goals in the negative range.   My odom publisher relies on /gazebo/get_model_state. Code here:  

Link to my teb_local_planner_params.yaml link

Link to my movebase launch file link  

Q: Can someone with more understanding of move_base and teb_planner explain why max velocity is only reached going in one direction and offer suggestions on how to reach max velocity when moving in other directions in an obstacle free area?

edit retag flag offensive close merge delete