ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

robot unable to rotate in place for dwa_local_planner especially for slow rotational velocities

asked 2016-07-28 11:00:18 -0600

Mr.N0body gravatar image

Hi all,

I am using the dwa_planner as local planner with very low velocities. The navigation is basically working very good. There is only one problem. In-place-rotations of the robot, most commonly at the beginning of navigation, are resulting in an oscillating behaviour. This leads to an endless loop of recovery behavior or, in case one disabled the recovery, it leads to the abortion of navigation. For example if one set the goal in the opposite direction of the roboters pose, the robot will instantly start to oscillate. If one sets the goal in 90 degrees or even a little bit less the robot will start rotating in goal direction but will abort before it could start to drive forward.

I could reconstruct this behaviour with the turtlebot_stage simulation when adjusting min_rot_vel to 0.05 and max_rot_vel to 0.1.

I am using ros indigo. These are my current parameters:

DWAPlannerROS: {
   acc_lim_theta: 2.0, acc_lim_x: 0.5, acc_lim_y: 0.0, acc_limit_trans: 0.1,
   angular_sim_granularity: 0.1, forward_point_distance: 0.325, global_frame_id: odom,
   goal_distance_bias: 24.0, holonomic_robot: false, max_rot_vel: 0.1, max_scaling_factor: 0.2,
   max_trans_vel: 0.5, max_vel_x: 0.1, max_vel_y: 0.0, min_rot_vel: 0.05, min_trans_vel: 0.1,
   min_vel_x: 0.0, min_vel_y: 0.0, occdist_scale: 0.5, oscillation_reset_angle: 0.2,
   oscillation_reset_dist: 0.05, path_distance_bias: 64.0, prune_plan: false,
   publish_cost_grid_pc: true, publish_traj_pc: true, restore_defaults: false, rot_stopped_vel: 0.4,
   scaling_speed: 0.25, sim_granularity: 0.1, sim_time: 2.0, stop_time_buffer: 0.2,
   trans_stopped_vel: 0.1, use_dwa: true, vth_samples: 20, vtheta_samples: 20, vx_samples: 6,
   vy_samples: 1, xy_goal_tolerance: 0.15, yaw_goal_tolerance: 0.1

I know there is a similar question: robot unable to rotate in place for dwa_local_planner There it is mentioned that dwa_planner cannot perform a rotate in spot motion. It will always trying to perform an arc motion. One just need to tune

path_distance_bias: 1.0
goal_distance_bias: 0.8
occdist_scale: 0.01

This won't stop the oscillation and the abortion of navigation. Still it helps to shorten time the robot needs to rotate before driving forward, but comes with the disadvantage of driving detours.

Please let me know if you need more information from me. Any help will be appreciated.

Thanks in advance.

Clemens Weißenberg

edit retag flag offensive close merge delete


H Clemens, did you find any solution for this issue ?

AmirSaman gravatar image AmirSaman  ( 2021-05-17 02:27:39 -0600 )edit

1 Answer

Sort by » oldest newest most voted

answered 2021-07-29 04:42:38 -0600

HappySamuel gravatar image

I did some modifications to DWA local planner and Base local planner. My modified DWA local planner currently support to navigate the robot to the a goal that is opposite to its orientation. I have tested it in Gazebo and also on my real Robot.

I totally made 4 changes to both DWA local planner and Base local planner. The files I modified are:

  1. dwa_local_planner/include/dwa_local_planner/dwa_planner_ros.h
  2. dwa_local_planner/src/dwa_planner_ros.cpp
  3. base_local_planner/include/base_local_planner/latched_stop_rotate_controller.h
  4. base_local_planner/src/latched_stop_rotate_controller.cpp

You can refer to the changes of my fork of navigation stack:

I have marked the changes i added/modified with //SAMUEL in those files.

Hope this can help to solve your issue.

edit flag offensive delete link more


Thank you Samuel this helps a lot.

AmirSaman gravatar image AmirSaman  ( 2021-08-03 20:57:30 -0600 )edit

Question Tools

1 follower


Asked: 2016-07-28 11:00:18 -0600

Seen: 1,122 times

Last updated: Jul 29 '21