I'm trying teb_local_planner on omni_dir robot.

enter image description here https://youtu.be/AKF6wPZgCa8?si=Y_17OSZsSo7nzhfV

However, the robot moves like a car as shown in this video.

enter image description here I want to moving holonomic like this picture.

my setting parameter is this.

 # Trajectory
 teb_autosize: True
 dt_ref: 0.3
 dt_hysteresis: 0.1
 max_samples: 500
 global_plan_overwrite_orientation: True
 allow_init_with_backwards_motion: True
 max_global_plan_lookahead_dist: 0.5
 global_plan_viapoint_sep: -1
 global_plan_prune_distance: 1
 exact_arc_length: False
 feasibility_check_no_poses: 5
 publish_feedback: False
 # Robot
 max_vel_x: 0.4
 max_vel_x_backwards: 0.2
 max_vel_y: 0.1
 max_vel_theta: 0.3
 acc_lim_x: 0.5
 acc_lim_y: 0.2
 acc_lim_theta: 0.5
 min_turning_radius: 0.0 # omni-drive robot (can turn on place!)

  type: "circular"
  radius: 0.188 

 # GoalTolerance
 xy_goal_tolerance: 0.05
 yaw_goal_tolerance: 0.15
 free_goal_vel: False
 complete_global_plan: True
 # Obstacles
 min_obstacle_dist: 0.25 # This value must also include our robot radius, since footprint_model is set to "point".
 inflation_dist: 0.6
 include_costmap_obstacles: False
 costmap_obstacles_behind_robot_dist: 1.0
 obstacle_poses_affected: 30
 costmap_converter_plugin: ""
 costmap_converter_spin_thread: True
 costmap_converter_rate: 5

 # Optimization
 no_inner_iterations: 5
 no_outer_iterations: 4
 optimization_activate: True
 optimization_verbose: False
 penalty_epsilon: 0.05
 obstacle_cost_exponent: 4
 weight_max_vel_x: 2
 weight_max_vel_y: 2
 weight_max_vel_theta: 1
 weight_acc_lim_x: 1
 weight_acc_lim_y: 1
 weight_acc_lim_theta: 1
 weight_kinematics_forward_drive: 1
 weight_kinematics_turning_radius: 1
 weight_optimaltime: 1 # must be > 0
 weight_shortest_path: 0
 weight_obstacle: 50
 weight_inflation: 0.2
 weight_dynamic_obstacle: 10
 weight_dynamic_obstacle_inflation: 0.2
 weight_viapoint: 1
 weight_adapt_factor: 2

 # Homotopy Class Planner

 enable_homotopy_class_planning: True
 enable_multithreading: True
 max_number_classes: 4
 selection_cost_hysteresis: 1.0
 selection_prefer_initial_plan: 0.9
 selection_obst_cost_scale: 1.0
 selection_alternative_time_cost: False
 roadmap_graph_no_samples: 15
 roadmap_graph_area_width: 5
 roadmap_graph_area_length_scale: 1.0
 h_signature_prescaler: 0.5
 h_signature_threshold: 0.1
 obstacle_heading_threshold: 0.45
 switching_blocking_period: 0.0
 viapoints_all_candidates: True
 delete_detours_backwards: True
 max_ratio_detours_duration_best_duration: 3.0
 visualize_hc_graph: False
 visualize_with_time_as_z_axis_scale: False

# Recovery
 shrink_horizon_backup: True
 shrink_horizon_min_duration: 10
 oscillation_recovery: True
 oscillation_v_eps: 0.1
 oscillation_omega_eps: 0.1
 oscillation_recovery_min_duration: 10
 oscillation_filter_duration: 10

What settings should I adjust?


1 Answer 1


I would start with increasing the y axis related values. First check the velocity and acceleration parameters. Is there any change on the planned path? Then I would increase the weight parameters related to y axis and observe the changes. If changing only y axis related values does not work, I would decrease x axis related values and observe the changes again. It is possible that you have selected correct values to generate a commands that can steer your robot but it is not selected as the optimum output. If none of this works, I would gradually decrease the value of the weight_kinematics_nh parameter down to zero. Also reducing the weight on the time optimization could help because x axis motion could be faster compared to y axis motion in your case (weight_optimaltime)

  • $\begingroup$ Movement around the x and y axes was successful. However, there are cases where the angle rotates in a direction that requires a large amount of movement. $\endgroup$ Commented Oct 27, 2023 at 2:33
  • $\begingroup$ youtu.be/bx_dTixKxgY like this video $\endgroup$ Commented Oct 27, 2023 at 2:41
  • $\begingroup$ Is this the result of changing only y axis related values? Or a combination of all of the mentioned parameters?Not sure but it has to be about the obstacles in the environment. It is trying to keep a certain distance from the obstacles. Changing parameters for the obstacles might help $\endgroup$ Commented Oct 27, 2023 at 10:52
  • $\begingroup$ I also changed other parameter values. Thanks for the advice, I'll test it. $\endgroup$ Commented Oct 27, 2023 at 11:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.