博客转自: https://www.cnblogs.com/cv-pr/p/5800270.html
Dynamic Window Approach(DWA)是重要的局部轨迹规划算法,ROS中使用了DWA算法获得了很好的局部路径规划的效果。具体的教程可参考官方的导航调试资料Navigation Tuning Guide。ROS的DWA(dwa_local_planner)应用到新机器人调试时,有一些技巧需要注意的,这里做一些总结。
1.设置坐标系和话题
需要订阅的话题:
里程计话题:/odom
需要设置的坐标系:包含/map,/odom,/base_footprint
2.参数调试
a.加速度的限制
加速度限制(acc_lim_x,acc_lim_y,acc_lim_th)非常的重要,如果不知道机器人的加速度,可以尽量的往大的设置,因为如果设置太小了,往往会出现机器人往前跑断断续续的,转弯转过头(看似加速度太大了,实际是加速度太小,以至于机器人想把机器人掰回来而掰不及),从而导致反复的震荡(oscillating over and over),例如下面的错误提示:
Aborting because the robot appears to be oscillating over and over. Even after executing all recovery behaviors
~<name>/acc_lim_x (double, default: 2.5)
- The x acceleration limit of the robot in meters/sec^2
- 开始调试尽量往大的设置
~<name>/acc_lim_y (double, default: 2.5)
- The y acceleration limit of the robot in meters/sec^2
- 如果是差分轮,设置为0即可
~<name>/acc_lim_th (double, default: 3.2)
- The rotational acceleration limit of the robot in radians/sec^2
- 开始调试尽量往大的设置
b.仿真的时间
局部路径模拟的时间不用太长也不用太短,一般一秒左右就差不多了,如果太多会容易导致偏离全局的路径,特别启动的时候会转较大的半径,如果想启动的时候基本原地旋转摆正机器人的方向和全局路径的方向一致,那么就把模拟的时间设置短点。如果太小的仿真时间也不好,容易导致频繁的路径规划消耗资源,甚至也会出现震荡的可能。
~<name>/sim_time (double, default: 1.7)
- The amount of time to forward-simulate trajectories in seconds
c.轨迹的规划
主要是一些设置生成轨迹的参数。其中以下的两个参数比较重要。
~<name>/path_distance_bias (double, default: 32.0)
- The weighting for how much the controller should stay close to the path it was given
- 刻画局部路径和全局路径的贴合程度,该权重参数越大说明越贴合,越小说明不用那么贴合。
~<name>/goal_distance_bias (double, default: 24.0)
- The weighting for how much the controller should attempt to reach its local goal, also controls speed
- 达到局部目标点的权重参数,也用来控制速度。权重如果设置为0表示要求完全到达目标点,这会导致机器人走动缓慢和震荡的现象,因为要求达到目标点的精度太高,所对机器人的控制比较苛刻
3.参考资料
[1]. 机器人局部避障的动态窗口法(dynamic window approach)(*****)
[2]. Autonomous Robot Navigation
[3]. Circular Motion in 2D for graphics and robotics
[4]. A Tutorial and Elementary Trajectory Model for the Differential Steering System of robot wheel actuators
来源:https://www.cnblogs.com/flyinggod/p/12610883.html