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

Revision history [back]

click to hide/show revision 1
initial version

So, it seems I somehow fixed the problem (at least I wasn't able to observe the described behavior for a longer simulation run) with a combination of things.

At first I rewrote my global planner so that it remembers the current start and goal nodes and doesn't take the closest node to the robot as a starting point. This alone did not really fix my problem. The robot was still moving in circles sometimes.

Then I played around with the DWA local planner parameters and the below seems to work. Maybe setting "latch_xy_goal_tolerance" to true did the trick but I'm not quite sure. Also I adjusted the simulation parameters according to this guide. Now the robot doesn't stick as close to the path as I'd like it to but at least it reaches the goal.

controller_frequency: 5.0
recovery_behaviour_enabled: true
clearing_rotation_allowed: false
max_planning_retries: 1
planner_patience: 1.0
controller_patience: 5.0
planner_frequency: 0.0
base_global_planner: rrt_nbv_exploration::RneGlobalPlanner
base_local_planner: dwa_local_planner/DWAPlannerROS

DWAPlannerROS:
  # Robot configuration parameters  
  acc_lim_x: 2.5
  acc_lim_y: 0
  acc_lim_th: 3.2

  max_vel_x: 0.5
  min_vel_x: 0.0
  max_vel_y: 0
  min_vel_y: 0

  max_trans_vel: 0.5
  min_trans_vel: 0.1
  max_rot_vel: 1.0
  min_rot_vel: 0.2

  # Goal Tolerance Parameters
  yaw_goal_tolerance: 0.2
  xy_goal_tolerance: 0.2
  latch_xy_goal_tolerance: true

  prune_plan: true

  # # Forward Simulation Parameters
  sim_time: 4.0
  # sim_granularity: 0.02
  vx_samples: 20
  # vy_samples: 0
  vtheta_samples: 40
  # penalize_negative_x: true

  # # Trajectory scoring parameters
  path_distance_bias: 20.0 # The weighting for how much the controller should stay close to the path it was given
  goal_distance_bias: 1.0 # The weighting for how much the controller should attempt to reach its local goal, also controls speed
  occdist_scale: 0.02 # The weighting for how much the controller should attempt to avoid obstacles

Edit: I recently stumbled upon this answer and tried it myself. Reducing the rolling window size to around twice the size of the robot footprint improved the robot movement massively. This was done in addition to the configuration shown below.

So, it seems I somehow fixed the problem (at least I wasn't able to observe the described behavior for a longer simulation run) with a combination of things.

At first I rewrote my global planner so that it remembers the current start and goal nodes and doesn't take the closest node to the robot as a starting point. This alone did not really fix my problem. The robot was still moving in circles sometimes.

Then I played around with the DWA local planner parameters and the below seems to work. Maybe setting "latch_xy_goal_tolerance" to true did the trick but I'm not quite sure. Also I adjusted the simulation parameters according to this guide. Now the robot doesn't stick as close to the path as I'd like it to but at least it reaches the goal.

controller_frequency: 5.0
recovery_behaviour_enabled: true
clearing_rotation_allowed: false
max_planning_retries: 1
planner_patience: 1.0
controller_patience: 5.0
planner_frequency: 0.0
base_global_planner: rrt_nbv_exploration::RneGlobalPlanner
base_local_planner: dwa_local_planner/DWAPlannerROS

DWAPlannerROS:
  # Robot configuration parameters  
  acc_lim_x: 2.5
  acc_lim_y: 0
  acc_lim_th: 3.2

  max_vel_x: 0.5
  min_vel_x: 0.0
  max_vel_y: 0
  min_vel_y: 0

  max_trans_vel: 0.5
  min_trans_vel: 0.1
  max_rot_vel: 1.0
  min_rot_vel: 0.2

  # Goal Tolerance Parameters
  yaw_goal_tolerance: 0.2
  xy_goal_tolerance: 0.2
  latch_xy_goal_tolerance: true

  prune_plan: true

  # # Forward Simulation Parameters
  sim_time: 4.0
  # sim_granularity: 0.02
  vx_samples: 20
  # vy_samples: 0
  vtheta_samples: 40
  # penalize_negative_x: true

  # # Trajectory scoring parameters
  path_distance_bias: 20.0 # The weighting for how much the controller should stay close to the path it was given
  goal_distance_bias: 1.0 # The weighting for how much the controller should attempt to reach its local goal, also controls speed
  occdist_scale: 0.02 # The weighting for how much the controller should attempt to avoid obstacles

Edit: I recently stumbled upon this answer and tried it myself. Reducing the rolling window size to around twice twice/thrice the size of the robot footprint improved the robot movement massively. This was done in addition to the configuration shown below.

So, it seems I somehow fixed the problem (at least I wasn't able to observe the described behavior for a longer simulation run) with a combination of things.

At first I rewrote my global planner so that it remembers the current start and goal nodes and doesn't take the closest node to the robot as a starting point. This alone did not really fix my problem. The robot was still moving in circles sometimes.

Then I played around with the DWA local planner parameters and the below seems to work. Maybe setting "latch_xy_goal_tolerance" to true did the trick but I'm not quite sure. Also I adjusted the simulation parameters according to this guide. Now the robot doesn't stick as close to the path as I'd like it to but at least it reaches the goal.

controller_frequency: 5.0
recovery_behaviour_enabled: true
clearing_rotation_allowed: false
max_planning_retries: 1
planner_patience: 1.0
controller_patience: 5.0
planner_frequency: 0.0
base_global_planner: rrt_nbv_exploration::RneGlobalPlanner
base_local_planner: dwa_local_planner/DWAPlannerROS

DWAPlannerROS:
  # Robot configuration parameters  
  acc_lim_x: 2.5
  acc_lim_y: 0
  acc_lim_th: 3.2

  max_vel_x: 0.5
  min_vel_x: 0.0
  max_vel_y: 0
  min_vel_y: 0

  max_trans_vel: 0.5
  min_trans_vel: 0.1
  max_rot_vel: 1.0
  min_rot_vel: 0.2

  # Goal Tolerance Parameters
  yaw_goal_tolerance: 0.2
  xy_goal_tolerance: 0.2
  latch_xy_goal_tolerance: true

  prune_plan: true

  # # Forward Simulation Parameters
  sim_time: 4.0
  # sim_granularity: 0.02
  vx_samples: 20
  # vy_samples: 0
  vtheta_samples: 40
  # penalize_negative_x: true

  # # Trajectory scoring parameters
  path_distance_bias: 20.0 # The weighting for how much the controller should stay close to the path it was given
  goal_distance_bias: 1.0 # The weighting for how much the controller should attempt to reach its local goal, also controls speed
  occdist_scale: 0.02 # The weighting for how much the controller should attempt to avoid obstacles