Bootstrap

局部规划算法:DWA算法原理

一、算法概述

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

内容来源于网络和参考链接整理,侵权联系删。

欢迎关注!

;