Apollo自动驾驶教程学习笔记-Apollo规划技术详解6-2

视频链接:http://bit.baidu.com/Course/detail/id/390.html
讲师:樊昊阳 百度Apollo研发工程师

说明:因个人工作方向变更的原因,该系列学习笔记不再更新,如有影响还请抱歉

无人驾驶中的路径规划方法

这节课内容也很丰富,老师讲的也很好,自己数学基础不扎实,所以听得半懂不懂的,不懂就多记笔记,下来再学习。我感觉这几节课学下来,都可以写一篇综述了,内容很丰富很全面,幸好自己之前自学过路径规划算法,所以还不算完全听不懂。总之,数学基础要扎实,什么牛顿法、凸优化、插值啥的都出来了。

规划方法综述

传统方法

  • RRT
  • Lattic
  • Configuration Space

现代方法

  • Darpa Challenge Approaches
  • Lattic in Frenet Frame
  • Spiral, Polynomial and Splines
  • Functional Optimization

数据驱动方法

之后讲

引出各种规划问题

这块概念太多,没记很清楚,反正是说规划可能的各种问题,比如车不是质点之类的问题、环境是动态的问题、车受到局部约束的问题(运动限制,要求连续性)。
举了一个例子说明连续性问题:Roadmap方法下,会找出一个最短路径,但是这个最短路径不是车辆可以行进的路线,因为曲率不连续。

各种规划算法

PRM

很传统的办法,就是在规划空间中随机撒一些点,然后连接这些点,形成一个没有闭环的图,然后解这个图,寻找两点之间最优路径。
传统方法落实到实际还是有很多问题的,比如不平滑、比如是否有障碍物、比如必须是全局环境下等等。但是之后很多算法都是在这个基础上研究的。

RRT

RRT可以在局部环境下实现PRM的算法,也就是每个局部环境下执行PRM,然后在相邻两个局部环境中,连接最近的点,对于距离太远的两个点,重新采样。
但RRT依然没解决连续性的问题,改进办法是用曲线连接,但曲线连接依然会不平滑,轨迹太随意,不适合用在车上,反正是还有问题。

lattice类型方法

lattice就是打网格,所有和打网格有关系的算法都是lattice方法的改进。最原始的lattice方法就是在网格中计算最优点,但这种计算是指数复杂度的,计算时间长,改进方法是先撒点,再采样,可以简化计算,这样可以把过去重复计算的路径重复利用,也就是动态规划算法。
但是撒点依然还不是平滑的轨迹。
改进办法是Frenet Frame,在移动方向和垂直方向上建立坐标系(SL坐标系)。

3维问题

另外一个问题是,除了空间连续性,还需要考虑时间连续性,也就是车的速度、加速度的连续,这样就增加了一个优化的维度,变成3维问题。动态环境下动态规划不好用,尤其在时间维度上。三维问题在拓扑问题上不好解。

Path Speed iterative方法

将三维的x,y,t转化为先求x,y的问题,再求s(x,y),t的问题,经过多次迭代反复求解,降低三维优化问题的难度。

Quadratic Programming方法

这种方法是二次规划法,可以迅速找到最优解,但是要求优化环境是凸的。而无人车的优化环境不是凸的,所以这又涉及到如何把非凸问题转换为凸问题。

Splines

也就是平滑算法,先求解一个不连续的轨迹,再针对这个轨迹做平滑,问题是平滑的效果抖动严重,可以用高阶平滑处理,但是高阶平滑又会过处理,也就是平滑曲线不再跟随优化曲线,可能会撞到障碍物。
还有Bsplines方法,反正这块挺多内容,也各有各的一些问题,插值法可能会出现龙格现象。

总结

  1. Lattice Search在结构化道路上是一种简单而灵活的方法,所以有很多改进算法的衍生。
  2. Search在3D Lattice中计算复杂度高,路径速度迭代的Search和直接Search各有优缺点。
  3. Dynamic Programming方法依赖于状态维度,3维不好解了。
  4. Quadratic Programming方法是一个二次优化能解的问题,而且收敛快,但是需要是凸优化环境。
  5. Splines可以平滑离散轨迹。

你可能感兴趣的:(自动驾驶,学习笔记)