一、算法概述
DWA算法(dynamic window approach)是移动机器人在运动模型下推算(v,w)对应的轨迹,确定速度采样空间或者说是动态窗口(三种限制);在速度空间(v,w)中采样多组速度,并模拟这些速度在一定时间内的运动轨迹,通过一个评价函数对这些轨迹打分,选取最优的轨迹来驱动机器人运动。
二、算法原理
1、运动学模型
**(1)非全向运动:**只能前进和旋转(相邻时刻码盘采样,近似直线v*detaT)
**(2) 全向运动:**考虑x方向运动、y方向运动和旋转。将y轴移动距离投影世界坐标系上。
2、速度采样
(1)自身最大速度最小速度的限制
(2)受电机性能的影响:由于电机力矩有限,存在最大的加減速限制, 移动机器人轨迹前向模拟的周期内,存在一个动态窗口,该窗口内是机器人能够实际达到的速度(ps: 为啥叫动态窗口)
(3)安全的考虑:为了能在碰到障碍物前停下, 在最大减速度条件下,速度有一个范围。
3、目标函数
一般考虑三种约束,可根据实际进行设计复杂的目标函数:
目标函数 = w1* 方位角函数(轨迹终点朝向与目标点之间的角度差距) + w2* 障碍物函数(轨迹终点位置时与地图上最近障碍物的距离) + w3* 线速度函数(鼓励快速到达终点)
三、应用场景
计算复杂度低: 只考虑安全的轨迹,每次采样的时间较短,可以实时避障,但避障效果一般
应用模型: 适用于两轮差分和全向移动模型、不能用在阿克曼模型。
缺点:
(1)前瞻性不足: 只模拟并评价了下一步,如在机器人前段遇见“C”字形障碍时,不能很好的避障
(2)非全局最优路径: 每次都选择下一步的最佳路径,而非全局最优路径
四、ros功能包
机器人获得目的地信息后,首先全局路径规划规划出一条大致可行的路线,然后局部路径规划器根据这条路线及costmap的信息规划出机器人在局部时做出具体行动策略,ROS中主要是使用了DWA算法。在ROS中每当move_base处于规划状态就调用DWA算法计算出一条最佳的速度指令,发送给机器人运动底盘执行。
ros导航功能包,https://www.guyuehome.com/5500
参考论文:
《The Dynamic Window Approach To Collision Avoidance》
参考链接:
原理:https://zhuanlan.zhihu.com/p/519958218
原理:https://blog.csdn.net/peakzuo/article/details/86487923
代码:https://blog.csdn.net/weixin_37835423/article/details/89683302
内容来源于网络和参考链接整理,侵权联系删。
欢迎关注!