系列文章目录
最近想系统地学习一下路径规划的相关知识,于是就打算写一个专栏记录一下。 Planning是目前无人车最困难也最具有挑战的部分之一。文章目录
这篇文章是B站上面一个无人驾驶课程路径规划的笔记,博主就当拿它入门了。说是入门,其实之前也做过相关的项目,不过最近是想系统地学习一下路径规划的知识,说不定以后从事相关的工作呢?
Motion Planning的三个领域
- Robotic Fields
- 生成轨迹寻找目标
- RRT, A*, D* ,Dijkstra
- Control Theory
- 动态系统理论实现目标状态
- MPC, LQR
- AI:状态到action的映射
- 强化学习,模仿学习等
如何解决一个Motion Planning问题
我们需要找到一个简单的突破口,首先是一个path finding 问题,也就是路径选择问题。在这个问题中,我们不关心速度,不关心机器人如何运动,我们只关心路径的生成。
什么样的Path才是最好的path?
- 路径最短
- BFS & DFS
- Dijkstra
- 基于启发式的搜索方法:A*
- 大概知道了终点的位置
- Heuristic function
无人驾驶中的规划和A* search有什么区别?
- 无人驾驶场景下是部分感知
- 有动态障碍物
- 复杂环境:比如有交通约束(可能遇到碰瓷hhh)
- 而A* 是一个global algorithm
D* 搜索
D* 是基于部分环境信息的一种搜索算法,经典的apollo登月小车上就采用了这种算法。使用D*算法进行路径搜索不一定能够搜索到全局最优解,但是经过统计学的分析,是能够逼近全局最优解的。
至此,我们已经有了如下几个方法:
- 构造目标函数并且结合了平滑性和目标cost
- 使用通用的search方法来最小化Cost从而找到一个最优解
- 通过Partial observed information 来做局部planning
路径规划还需要什么?
- 处理动态障碍物,动态环境
- 遵守交通规则,公共安全
- 实时计算
- 计算时间100ms-150ms
- 人的一般反应时间300ms-500ms
- 酒驾 1000ms
- 有限时间内找到最优解
这就是为什么很多大公司使用C++而不用python的原因,因为C++能够对代码进行更多的优化。
motion planning定义
- Safely
- Smootly
- Achieve to destination (能够到达目的地)
- 输出三维的轨迹 X,Y,Time :3D trajectory optimization problem
- 无人车硬件系统
- 定位设备
- 感知设备
- 无人车软件信息
- 动态信息
- 静态信息
- HD map(用来保证实时性,如果没有高精地图,仅仅通过感知的信息进行计算,那么很难保证实时性,因为这样会造成很大的计算量)
- 如何设置出一个合理的轨迹?
- 路径Path
- 速度Speed
基本的Planning方法
- 经典的基于环境建模的方法
- RRT
- Lattice
- 现代无人车Planning方法
- Darpa
- Lattice in Frenet Frame
- Spiral polynomial
- 刚体问题
- BycicleModel
- XY Heading
- Collision
- Planning 限制条件
- 避免碰撞
- 边界阈值
- 连续空间问题
无人车路径规划问题是求解一个连续空间问题,那么常用的一个方法就是连续空间离散化。以及网格化。
RRT
基于采样,使用增量搜索的方式来进行
找到附近可行点的最优点
- F(x)最小,cost最小
- 走过程中也不能有障碍是cost最小
- 走的过程中还可能碰到障碍物
- 所以撒点搜索不能太远,一步一步地移动
- 形成的路径是一个折现,后面还需要平滑曲线
Lattice
改进了RRT的折现问题,直接给出path的平滑曲线
思路:网格化,每个采样个中都是用曲线连接
DP(动态规划)
- 减少搜索空间
- 复用已知结果
Lattice DP
Lattice DP平滑度够吗?
- 曲率连续
- 曲率倒数不一定连续
QP(二次规划)
- 凸优化问题最优化求解
- 性质:在凸优化中的凸空间问题,用QP中有最优解
- QP如何找到平滑曲线?
- 一阶导数最优化
- 二阶导最优化
- 三阶导数最优化
- 其他平滑曲线的方法:贝塞尔曲线,样条插值
参考文献
- 经典参考书籍
- Steve Lavelle, Motion Planning Algorithm
- Principles of Robot Motion:Theory, Algorithm, and Implementations
- 经典文献(一篇综述):
- A review of Motion Planning Techniques for Automated Vehicles