今天读了一篇关于机器人路径规划的论文,在这里记录一下。
原文:改进 A*和动态窗口法的移动机器人路径规划 :https://kns.cnki.net/kcms/detail/detail.aspx?dbcode=CAPJ&dbname=CAPJLAST&filename=JSJJ2020102300M&v=l5%25mmd2FDG1c37fumFRahpllN7JWV7J8kDILJRNZEVRg08wG9PMHUwc7HUH8oEHwUpjio
1、提出问题
文章提出了结合A*算法和动态窗口法的融合算法。
首先,,使用 A*算法规划出一条全局路径,再利用一种关键折点提取算法,用于剔除全局路径上的冗余拐点及冗余节点,保证路径的全局最优。
然后,根据关键节点对全局路径进行分段,再结合动态窗口法对每段局部路径进行优化,提高路径的安全性和平滑性。
A*算法存在的问题:拐点过多、节点冗余、与障碍物距离近等问题。
动态窗口法:极容易陷入布局最优,寻路成功率低。
2、提出算法
(1)优化A*算法
(a)获取 A*算法所规划路径的全部节点集 ,其中 表示规划路径的起点, 表示规划路径的终点。创建初始值只包含路径起点 和终点 的关键节点集 用来存放算法优化后的关键转折点。
(b)从 开始作直线依次连接 ,判断直线 是否经过障碍物,若直线 经过障碍物,则节点 为路径的必经节点,且必为关键转折点,将节点 添加至集合V ;若直线 没有经过障碍物,则判定节点为冗余节点,从 继续向后连接节点集U 中的节点,直到连接到路径的终点 ,将所有的关键节点都添加至集合V 。关键节点选取完成后,集合 包含了所有关键节点,假设集合V 中包含的路径关键节点数为m。
(c)依次连接集合V 中所有的节点,完成对路径的全局优化,路径全局优化步骤图如图
(2)优化动态窗口法
由动态窗口法的原理可知,路径的影响因素主要是移动机器人的航向角和角速度,由于角速度通常是固定配置值,所以影响路径平滑程度和路径长度的主要因素是航向角。航向角偏差越大,所需的转弯距离越长,越容易造成路径的冗余。故本文主要针对航向角进行改进和优化,局部优化的具体步骤如下。
(a)从起点 开始,依次将关键节点集 中除开终点 的所有节点作为局部路径规划的起点 ;从第二个节点 开始,依次将集合 中的所有节点作为局部路径规划的终点 ,将全局路径分为 共 m-1 段路。
这里没有看懂
(b)计算路径 即原线段 的倾斜角度,计算线段倾斜角度的公式如下。
(c)将路径的倾斜角度转换为弧度值,作为移动机器人的初始航向角,斜率角度转化弧度值的公式如下。
(d)初始化移动机器人的状态参数集 L{l},其中l{x,y,yaw,v,w} 记录移动机器人路径规划过程中的状态参数,包括位置、航向角、线速度、角速度。
(e)按照实际环境需要,设定移动机器人的初始线速度V(m/s) 、初始角速度 w(rad/s) ,结合前三步得到起点、终点 、初始航向角 yaw(rad) ,综合得到 。
(f)使用动态窗口法进行局部路径规划,并将机器人的所有状态参数更新到到状态参数集L 中,记录路径的所有节点和机器人的位姿信息,每段路径完成后状态参数集变成 表示移动机器人的最新状态参数。
(g)按照式(b)计算下一段路径的倾斜角度 ,同时将机器人上一状态参数l中的 yaw转换为角度值 ,弧度值转化为角度值的公式如下。
这里为什么要将机器人的航向角设为yaw/2呢???
(h)重复(g),
图片文字均来自该论文,仅供学习,侵权联删。