一、算法介绍

DWA算法全称为dynamic window approach,其原理主要是在速度空间(v,w)中采样多组速度,并模拟出这些速度在一定时间内的运动轨迹,并通过评价函数对这些轨迹进行评价,选取最优轨迹对应的速度驱动机器人运动。

动态窗口法 DWA 的实现包含两个步骤:
(1)对机器人速度进行约束限制,形成动态窗口进行速度采样;
(2)根据速度采样点求出待评价轨迹,最大化评价函数选取最优速度命令。
动态窗口是由一系列的约束构成,其中约束主要包括差动机器人的非完整约束、环境障碍物约束与受结构与电机影响的动力学约束。

由于使用C++在Qt上对DWA的可视化效果较差,故使用python。
C++工程源码文件
程序参考PythonRobotics-master

原始DWA

二、机器人运动学模型

下图为两轮差动机器人运动模型示意图,v和w分别代表机器人在世界坐标系下的平移速度与转动速度。
在一次采样时间内,机器人的移动距离较小,所以可以把两次采样间运动的轨迹看作是一条直线,所以得到以下公式。

三、DWA算法采样空间

下图为传统DWA算法的速度矢量空间示意图,图中横坐标为机器人角速度,纵坐标为机器人线速度,整个区域为Vs ,所有白色区域Va 为避免碰撞的可行区域,灰色区域的速度表示执行该速度可能造成机器人碰撞障碍物,Vd 为考虑电机扭矩在控制周期内限制的机器人可达速度范围,Vr 为上述三个集合的交集,即最终确定的动态窗口。 滑动窗口主要由以下三个方面限制,移动机器人受自身最大速度最小速度的限制 、移动机器人受电机性能的影响(加速度)、移动机器人受障碍的影响。

(1)移动机器人受自身最大速度最小速度的限制

(2)移动机器人受电机性能的影响

(3)移动机器人受障碍的影响

综上所述,DWA的动态窗口为以上三个速度集合的交集,即:


在速度空间Vr中,等间距采集离散点(v,w),并使用采样点,根据机器人运动模型对机器人在之后T时间内进行仿真。(T与上文中△t不同,在仿真时间T内,默认机器人的速度v和角速度w不变,均为采样点的速度)仿真图如下图所示:

四、DWA算法评价函数

根据采样的速度得到相应轨迹后,需要对轨迹进行评价,进而选择当前状态下的最佳轨迹。评价函数的定义如下:

heading(v,w)

heading(v,w) 主要促进机器人在移动过程中使其航向角不断的朝向目标点。
方位角示意图如下所示:

distance(v,w)

distance(v,w) 主要的意义为机器人处于预测轨迹末端点位置时与地图上最近障碍物的距离,对于靠近障碍物的采样点进行惩罚,确保机器人的避障能力,降低机器人与障碍物发生碰撞的概率。
设定L的目的是,一旦轨迹上没有障碍物,将函数输出为一较大的固定值,避免在评价函数中占比重过大。

velocity(v,w)

为了促进机器人快速到达目标而采用的评价函数,具体定义如下:

五、DWA算法优化

DWA算法未考虑到待评价轨迹的方向性,运动的平滑性及到达目标点的快速性等缺点。因此可增加评价函数来优化DWA算法,如提增加方向评价子函数、平滑速度评价子函数以及加速度评价子数,以提高机器人运动方向的稳定性,运动的平滑性,并且减少了机器人到达终点的时间。
具体参考以下论文
面向家庭环境的移动机器人局部路径规划算法研究
例如增加离终点额距离评价函数后,可视化如下:

优化评价函数DWA

路径规划算法C++实现(三)--DWA相关推荐

  1. 局部路径规划算法——实现DWA(dynamic window approach)控制空间采样

    DWA算法是局部路径规划算法,在全局路径规划算法完成后,DWA算法能够根据当前小车(机器人)位置.障碍物.终点的位置进行控制空间(速度.角速度)的采用,从而完成局部路径规划. DWA算法流程: 初始化 ...

  2. DWA局部路径规划算法论文阅读:The Dynamic Window Approach to Collision Avoidance。

    DWA(动态窗口)算法是用于局部路径规划的算法,已经在ROS中实现,在move_base堆栈中:http://wiki.ros.org/dwa_local_planner DWA算法第一次提出应该是1 ...

  3. 【ROS-Navigation】—— DWA路径规划算法解析

    文章目录 前言 1. 涉及的核心配置文件与启动文件 1.1 demo01_gazebo.launch 1.2 nav06_path.launch 1.3 nav04_amcl.launch 1.4 n ...

  4. 局部路径规划算法-DWA动态窗口法

    引言 本文主要是转载学习的内容,为了记录传统算法的学习,方便复习,对比看看传统算法和新的算法有哪些相似的地方. DWA算法,在仿真上效果好些,在扫地机器人等室内机器人方面可能效果好,但是在自动驾驶还是 ...

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

    文章目录 参考资料 1. DWA算法原理 1.1 简介 1.2 算法原理 1. 速度采样 2. 轨迹预测(轨迹推算) 3. 轨迹评价 2. Python实现 2.1 参数配置 2.2 机器人运动学模型 ...

  6. A星融合DWA的路径规划算法,可实现静态避障碍及动态避障,代码注释详细,matlab源码

    A星融合DWA的路径规划算法,可实现静态避障碍及动态避障,代码注释详细,matlab源码 ID:4525679980340317云的歌儿

  7. 基于群智能的路径规划算法(三)------遗传算法

       本系列文章主要记录学习基于群智能的路径规划算法过程中的一些关键知识点,并按照理解对其进行描述和进行相关思考.    主要学习资料是来自 小黎的Ally 的 <第2期课程-基于群智能的三维路 ...

  8. 中国物流供应链“零的突破”!阿里路径规划算法入围运筹学“奥斯卡”

    鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 最新消息,中国物流力量,刚在全球运筹和管理科学界的最高荣誉中,实现零的突破! 1月15日,国际运筹学与管理科学学会(INFORMS)公布了2 ...

  9. 多边形之间相交求交点的算法_路径规划算法总结

    本文来自知乎网友@搬砖的旺财,地平线机器人算法工程师.作者根据自己本科和硕士阶段的学习经历,整理归纳了所接触过的规划算法. 1.自主机器人近距离操作运动规划体系 在研究自主运动规划问题之前,首先需建立 ...

最新文章

  1. php-redis客户端使用方法
  2. swagger restful api form映射实体对象和body映射实体对象配置
  3. CodeForces - 1036D Vasya and Arrays(思维)
  4. HttpRequest 类
  5. Python编程基础01:搭建Python开发环境
  6. 【es】Node与NodeEnvironment的实例化
  7. Java基础零碎知识点总结(持续补充)
  8. stata15中文乱码_如何解决 Stata 14 的中文乱码问题
  9. sublime使用技巧
  10. oracle 工具ODM,oracle ODM 数据挖掘笔记
  11. python七段数码管的绘制 获取系统时间
  12. “带花树开花”算法来解非二分图的最大匹配
  13. 程序员自曝接私活:10个月时间接了30多个单子,纯收入40万
  14. 小孩终生教育工程(人生管理):有些东西比努力比钱更重要
  15. Android Parcel对象详解
  16. 【沧小海笔记】之基于FPGA的以太网设计相关知识——第二章 物理层介绍(基于88E1111)
  17. 【labelme格式json转为labelimg格式的xml(VOC)】
  18. [嵌入式开发模块]SHT30/20 温湿度传感器 驱动模块
  19. java解析excel手机号变成科学计数法形式解决
  20. 臂式血压计PCBA方案

热门文章

  1. LE PETIT PRINCE
  2. CIC-IDS-2018数据集分析笔记
  3. 原创 全城公交标注系统 (2)
  4. Xshell连接云服务器并连接宝塔面板(天翼云为例)
  5. 黄金圈法则:成功者必备的深度思考方法
  6. TIM-定时器——STM32
  7. 量化交易有因子动物园 深度学习里有模型动物园(ModelZoo)又叫模型市场基于深度学习的增量学习,迁移学习等技术发展而来【调研】
  8. Linux pstack命令
  9. 初级者与转行者,大数据如何学习最高效,简历该如何优化?
  10. 2021-06-22 离散数学图论复习笔记