路径规划算法学习笔记(一)——基于搜索

时间:2024-03-31 08:11:38

路径规划算法学习笔记(一)——基于搜索

在这里分享了路径规划方面的一些基本的算法原理和伪代码实现,主要包括基于搜索、基于采样、基于曲线插值和基于人工势场等四方面,计划每篇博客单列一类,其中内容可能存在不完善和错误之处,如有读者发现,欢迎批评指正。

基于搜索

第一部分是基于搜索的路径规划算法,这一部分依次介绍BFS、Dijkstra、A* 和Hybrid A*,从顺序上说,这四种算法也是一个不断迭代和优化的过程。另外,有关A* 的其他衍生的算法,日后更新…

BFS

BFS(Breadth-First-Searc),基本思想是以放射状扩散的方式遍历所有点。
图解BFS点这里
BFS的伪代码解释如下:
1、基本过程
路径规划算法学习笔记(一)——基于搜索
2、为生成路径,引入父节点的定义
路径规划算法学习笔记(一)——基于搜索
3、为避免枚举的问题,引入启发式搜索,以当前点到终点的距离为代价(优先级)
路径规划算法学习笔记(一)——基于搜索
4、路径回放,生成最终路径
路径规划算法学习笔记(一)——基于搜索
5、BFS的一个问题是容易先入为主地认为最先遍历的就是最短路径上的点。

Dijkstra

Dijkstra也采用了BFS类似的方法,其代价的计算方式为以当前点到起点的距离为代价(优先级)。
路径规划算法学习笔记(一)——基于搜索

A*

A*算法结合了BFS和Dijkstra的思想,综合当前点到起点和终点的距离和(代价和/优先级)。
路径规划算法学习笔记(一)——基于搜索

Hybrid A*

A*算法规划的轨迹经过方格中心,现实车辆路径无法满足这一情况,因此提出了Hybrid A *。

1、这里整理了几种车辆的运动学模型

① 自行车模型的基本假设
·不考虑车辆垂直方向的运动,认为车辆在二维平面上运动
·左右车轮在转速和转角上一致,两个车轮可以合为一个
·车速缓慢,忽略前后轴载荷的转移
·车身和悬架均为刚性
·车辆转向和驱动由前轮完成
② 以后轴中心为原点的车辆运动学模型——输入(a,φ) 输出车辆位姿(x,y,θ)
路径规划算法学习笔记(一)——基于搜索
③ 以质心为中心的车辆运动学模型——输入(a,δ) 输出车辆位姿(x,y,ψ)
路径规划算法学习笔记(一)——基于搜索
④ 前轮驱动的车辆运动学模型——输入(a,δ) 输出车辆位姿(x,y,ψ)
路径规划算法学习笔记(一)——基于搜索
这里假设汽车是前轮驱动的,所以认为方向盘的转角就等于前轮的转角,后轮偏角为0。

2、一种运动学模型下的Hybrid A* 算法伪代码实现
①运动学模型:4-D 离散网格中的车辆状态 <x, y, θ, is_foward>,以后轴为中心的车辆运动学模型(离散)。
路径规划算法学习笔记(一)——基于搜索
②伪代码
路径规划算法学习笔记(一)——基于搜索
路径规划算法学习笔记(一)——基于搜索
路径规划算法学习笔记(一)——基于搜索
路径规划算法学习笔记(一)——基于搜索
③与A*的不同
0x00:二维变三维,新增偏航角这一维
0x01:寻找当前位置周围四点,变成寻找当前位置在不同前轮转角下的多个点(range(-35,40,5))

参考文献

1、https://www.redblobgames.com/pathfinding/a-star/introduction.html
2、https://blog.csdn.net/AdamShan/article/details/79945175 无人驾驶汽车系统入门(十六)——最短路径搜索之A* 算法
3、https://zhuanlan.zhihu.com/p/103834150 自动驾驶中的车辆运动学模型
4、https://zhuanlan.zhihu.com/p/139489196 自动驾驶运动规划-Hybird A* 算法
5、https://blog.csdn.net/Rickey_lee09/article/details/104795530 无人驾驶学习笔记–路径规划(一)【Trajectory Generation – Hybrid A*】