算法学习之DWA局部路径规划算法

Posted wbscpp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法学习之DWA局部路径规划算法相关的知识,希望对你有一定的参考价值。

DWA算法是近日工作中常用到的算法,在此分享一下。

DWA算法又名动态窗口法,其原理较为简单,属于局部路径规划算法,常用于局部避障.

技术图片

简单介绍一下算法流程:

根据车体模型不同,DWA对于预测点的方式有所不同,对于前轮前驱模型,DWA预测方式为对前轮角度和速度的预测.

对于两轮差速模型,DWA预测方式为左右轮速.

假设车体模型为前轮前驱模型:

1 .  已知前轮偏角范围-pi/2 ~ pi/2, 间隔0.1取角度值. 假设有A个取值

2.   已知前轮速度区间 0~ v1, 间隔 0.1m/s 取值.假设有B个取值.

3.   已知预测时长 假设为t s . 

4 .  构造DWA预测轨迹:  以上三个条件构造三层循环(条件2也可设置为恒定速度,减少计算量和轨迹数目),预测定位点在 未来 t s 时间 在角度速度组合下的 运动轨迹,每条轨迹单独存储,存储轨迹上每个点的位姿.  可计算出A*B 条运动预测轨迹.

5.  碰撞检测: 依此对每条轨迹做碰撞检测,若轨迹上有一个点会发生碰撞,当前轨迹废弃,依此类推,保存无碰撞轨迹.

6 . 构造评价函数:  对于步骤5 剩余的无碰撞轨迹, 根据目标点位置和航向,构造评价函数,常用评价指标有: 航向差异大小,速度大小等,可自行发挥.总之选择出最合适的一组速度和角度即可.

 

对于两轮差速模型: 就不存在偏转角度,只需要对左右轮角度进行预测即可,替换上述步骤的1和2.

假设左右轮的速度均为v1  -  v2区间.

步骤1 . 2 只需要将速度间隔取值即可.后续步骤一致.

 碰撞检测部分是比较关键的一部分:后续有空单独讲解 .  碰撞模型的不同会对路径选择具有较大的影响.

下面是DWA实现,工作原因,代码就不贴了. 实现也比较简单,贴个简图.效果还是不错的.

技术图片

以上是关于算法学习之DWA局部路径规划算法的主要内容,如果未能解决你的问题,请参考以下文章

路径规划局部路径规划算法——DWA算法(动态窗口法)|(含python实现 | c++实现)

路径规划基于matlab DWA算法机器人局部避障路径规划含Matlab源码 890期

ROS局部运动规划器Teb/DWA

路径规划基于matlab GUI改进的DWA算法机器人动态避障路径规划含Matlab源码 1271期

路径规划基于改进动态窗口DWA算法机器人静态避障matlab源码

机器学习之回归算法