teb_local_planner generates infeasible local plan, global plan is OK, for car-like robot

asked 2018-11-01 02:36:00 -0500

Subodh Malgonde gravatar image

updated 2018-11-01 03:00:34 -0500

I have an Ackermann steering drive based robot or in other words car-like robot. I am using move_base with teb_local_planner for path planning and control.

This is how my local and global plan look like:

image description

You can see that the global plan (in green) is quite straightforward for the chosen goal and starting point. The local plan (in blue) is all over the place. And the robot ends up and gets stuck far away from the global plan. I suspect something is wrong with my parameter configuration, but I cannot figure out what.

Here are my params for the TEBLocalPlanner:

TebLocalPlannerROS:

 odom_topic: /vesc/odom
 map_frame: map
 transform_tolerance: 0.3

 # ******* Trajectory **********

 teb_autosize: True
 dt_ref: 0.4
 dt_hysteresis: 0.1
 global_plan_overwrite_orientation: True
 allow_init_with_backwards_motion: True
 max_global_plan_lookahead_dist: 3.0
 feasibility_check_no_poses: 2

 # ********** Robot **********

 max_vel_x: 1.5
 max_vel_x_backwards: 1.0
 max_vel_y: 0.0
 max_vel_theta: 2.5
 acc_lim_x: 2.0
 acc_lim_theta: 4.0

 # ********************** Carlike robot parameters ********************
 min_turning_radius: 0.82
 wheelbase: 0.34               
 cmd_angle_instead_rotvel: False 


 footprint_model:
   type: "line"
   line_start: [0.0, 0.0]
   line_end: [0.3, 0.0]

 # ********** GoalTolerance **********
 xy_goal_tolerance: 0.2
 yaw_goal_tolerance: 3.0
 free_goal_vel: False

 # ********** Obstacles **********

 min_obstacle_dist: 0.20
 include_costmap_obstacles: True
 costmap_obstacles_behind_robot_dist: 0.3
 obstacle_poses_affected: 30
 inflation_dist: 0.25
 costmap_converter_plugin: ""
 costmap_converter_spin_thread: True
 costmap_converter_rate: 5

 # ********** Optimization Parameters **********

 weight_kinematics_forward_drive: 100.0
 weight_kinematics_turning_radius: 500.0
 weight_acc_lim_x: 0.0

 # ********** Parallel Planning Parameters **********
 enable_homotopy_class_planning: True

Most of the parameters are set to the default values. Some notable exceptions:

  1. min_turning_radius: 0.82. I have a car like robot with max steering angle of 22 degrees and wheel base of 0.34 m.
  2. weight_kinematics_turning_radius: 500.0. I increased it from 1 to 500 so that turning radius constraints are enforced.
  3. weight_kinematics_forward_drive: 100.0. I want the robot to favour forward motion.
edit retag flag offensive close merge delete

Comments

Have you checked if your position published on odom is valid and the robot is doing what he is supposed to do (e.g. driving forwards when local planner is commanding positive speeds)?

I can try your parameters in a simulation but they should be alright.

ce_guy gravatar image ce_guy  ( 2018-11-19 07:30:18 -0500 )edit