论文解读——Hybrid A*
参考资料来源:《Practical Search Techniques in Path Planning for Autonomous Driving》、《Path Planning in Unstructured Environments:A Real-time Hybrid A* Implementation for Fast and Deterministic Path Generation for the KTH Research Concept Vehicle》、《自动驾驶汽车决策和控制》
注:第二篇论文ROS实现的github链接:https://github.com/karlkurzer/path_planner
0 Hybrid A*介绍
hybrid A*带字幕
视频地址https://www.youtube.com/watch?v=qXZt-B7iUyw,YouTube机翻的字幕不一定正确,辩证学习
上面是关于hybrid A*的介绍视频。HA *算法由2010年斯坦福大学首次提出,并在(DARPA)的城市挑战赛中得以运用。大家在学习HA * 算法的过程中请关注以下几个问题:
- 启发式函数如何设计
- 什么是Analytic Expansions
- 如何平滑路径
1 基础知识
1.1 A*算法admissible结论
当A*算法中启发式函数 h ^ \hat{h} h^满足 h ^ < h \hat{h}<h h^<h时,A *算法找到的路径是最优的,所以一般希望启发式函数设计的大一些,越靠近 h h h意味着所拓展的节点数量较少。
注:
h ^ \hat{h} h^ : 启发式函数;
h h h : 当前节点到目标节点的最短距离;
(上述是A*算法原文结论,一般来说都用 h h h表示启发式函数!!!)
1.2 hybrid A*的搜索方式
上图是传统A*的搜索方式,其搜索方向共8个(东西南北、东北、东南、西北、西南方向),节点只能位于cell中心中,更为关键的是无人车不能执行的
该图是hybrid A*的搜索方式,其搜索方向共6个,节点可以不位于cell中心中,同时也是可以无人车可执行的,下面详细说一下搜索方向的问题。
HA*采用控制采样的方式,在给定T和U时,可以得到基于车辆运动学的轨迹,如下图所示共6条。(关于车辆运动学,后续会在自动驾驶控制模块介绍)
随后从起点到终点按照6个方向不断搜索,这也是与传统A*不相同的地方
1.3 Dubins和Reeds-Sheep曲线
关于Dubins和Reeds-Sheep曲线大家可以参考《自动驾驶汽车决策和控制》一书介绍的内容了解(懒得敲字了)
注:上述说明的两条曲线是实际可运行的,HA*中使用的曲线是Reeds-Sheep曲线
1.4 Voronoi Field
因为要求无人车生成的路径必须与障碍物保持一定距离,由于传统的人工势场法在狭窄路段有较高的数值,使得车辆无法通过,因此,构造需要Voronoi函数如下:
Voronoi图:
简单的说,当看到空间中的一系列给定的点,例如x,…,我们希望为每个点,例如点x,划定一个包围这个点的区域,例如区域Cx,这一包含了点x的区域 Cx 我们称为Voronoi Cell,构成的图即为Voronoi图
符号定义:
- d o d_{o} do : 离最近障碍物的距离
- d v d_{v} d