原理
DWA算法是一种用于机器人避障的策略,它在速度空间中采样多组速度,模拟这些速度下一定时间内的多条轨迹,并用评价函数评估,选择最优轨迹。算法考虑了运动学模型、速度和加速度限制以及障碍物影响。评价函数包括与目标点的角度差距、与障碍物的距离等,适用于两轮差速和全向移动机器人。
C++实现中包含了动态窗口计算、最佳速度选择和轨迹预测等功能。
具体运行流程
- 设置速度空间,即机器人的速度范围(不是不变的,是时变的),机器人速度受到多种因素的限制:
- 移动机器人受自身最大速度和最小速度的限制;
- 移动机器人受电机性能的影响;在一定动态空间内,存在最大的加减速度限制,影响机器人所能实际到达的速度;
- 移动机器人受障碍物的影响,保证机器人能在障碍物前停下。
- 速度采样
根据速度空间的值,以一定的分辨率对速度 v v v和角速度 w w w进行采样; - 轨迹预测
根据机器人的运动学模型和采样速度,对机器人下一时刻的状态进行预测和更新; - 评价函数
对速度空间进行采样后,根据机器人运动学模型预测出多条轨迹,需要对多条轨迹进行评价,选取最优的轨迹,机器人根据最优轨迹对应的速度进行运动。
评价函数的标准如下:
- h e a d i n g ( v , w ) {heading(v,w)} heading(v,w)为方位角评价函数:评价机器人在当前的设定的速度下,预测轨迹末端朝向于目标点之间的角度差距;
- d i s t ( v , w ) {dist(v,w)} dist(v,w)主要意义为机器人处于预测轨迹末端点位置时与地图上最近障碍物的距离,对于靠近障碍物的采样点进行惩罚,确保机器人的避障能力,降低机器人与障碍物发生碰撞的概率;
- v e l o c i t y ( v , w ) {velocity(v,w)} velocity(v,w)为当前机器人速度的线速度,为了促进机器人快速到达目标;
- α , β , γ , δ { \alpha,\beta,\gamma,\delta} α,β,γ,δ为权重系数。
论文索引:Fox D., Burgard W., Thrun S… (1997). The dynamic window approach to collision avoidance. IEEE Robotics & Automation Magazine, 4, 23-33. http://dx.doi.org/10.1109/100.580977. 10.1109/100.580977.
DWA整体运行流程:采样——》运动——》采样,循环以此达到目的点,同时达到避障和及时刹车的效果。
备注:
机器人的运动模型分为两种,一种是全向模型(有x轴速度、z轴角速度和y轴速度),另一种是非全向模型(只有x轴速度和z轴角速度)。
优缺点
- 优点
计算效率高,实现简单,适用于资源有限的系统 - 缺点
- 可能陷入局部最小值,依赖对周边环境的感知能力,需要经过精细调整,才能在不同场景下达到最佳性能,且在高度动态环境时有局限性;
- 避障效率不高;
- 动态避障能力弱;
- 遇到稠密障碍物区外侧绕行;
- 易困于C型(凹形)障碍物。