Understanding the Default dwa_local_planner Parameters
At a high level, I am trying to better understand the dwa_local_planner parameters and how they influence robot behavior. I have referenced and read through the dwa_local_planner wiki page and read through the short descriptions of the parameters.
I am trying to understand the default values for path_distance_bias: 32.0
, goal_distance_bias: 24.0
,
occdist_scale: 0.01
.
The documentation says that these are used for the formula:
cost =
path_distance_bias * (distance to path from the endpoint of the trajectory in meters)
+ goal_distance_bias * (distance to local goal from the endpoint of the trajectory in meters)
+ occdist_scale * (maximum obstacle cost along the trajectory in obstacle cost (0-254))
From this it would seem that a reasonable distance to the local goal and path endpoint would be on the order of a few meters and as stated the obstacle cost can be as high as 254. However, say 2 meters * 32 = 64, while 0.01*254=2.5 - this seems to be lopsided.
- How were these default values determined?
- Is there a standard procedure to tune these parameters for a specific robot/environment setup?
- Does this mean that much more weight is given to
path_distance_bias
andgoal_distance_bias
than tooccdist_scale
? - Why is
occdist_scale
so much smaller compared to the other two? - The default values for
pdist_scale
andgdist_scale
given in the base_local_planner wiki are much lower (0.6, 0.8 respectively). Why are these different? Is it becausemeter_scoring
defaults to off so the units are different? - Why is
pdist_scale
lower thangdist_scale
for base_local_planner, butpath_distance_bias
is higher thangoal_distance_bias
for dwa_local_planner?
I have been simulating the Husky along with Google Cartographer for the Husky with ROS melodic and examining it's provided planner.yaml here. In my tests the robot appears to get very close to obstacles when the goal is on the other side. This lead me to believe these parameters need to be updated, especially increasing the occdist_scale
, but my understanding is fuzzy. Thanks!