图片来自西门子
摄影|Siemens
自动驾驶是一门综合性复杂的技术,目前这块比较火热,趁此机会我了解了一下决策规划这块领域,看了b站范昊阳大佬的《百度自动驾驶技术系列课程》后,整理了一下心得。
#1 总论
路径规划是属于自动驾驶感知、决策、执行,互联几个关键领域里的决策环节,根据《Apollo 自动驾驶工程师技能图谱》中阐述的技能栈也可以看出决策的重要性。如果芯片被看作自动驾驶的大脑,那么决策好坏就决定这是一颗莱莎·徒利的大脑,还是一颗奥莲娜的大脑。
#2 全局规划
路径规划总体有3个层面:
全局规划,全局规划需要我们知道目的地,是一种长期的规划,更关心高层的信息,不太关心很细枝末节上的决策。全局规划的本质是一种搜索,在优化领域就是给定约束下的最小化问题。
Dijkstra算法示意图
解决全局优化常见的代表算法有:Dijkstra、A*、MDP。
Dijkstra是一种广度优先搜索,因为每个节点都要探寻,所以搜索会慢;
而A*及其各种衍生算法是一种启发式算法,搜索过程会朝着目的点前进,避免了一些无谓的搜索;
MDP是强化学习的思路,构建环境和奖励系统,让运动对象吃亏上当后,学会精致利己,沿着目标点前进。
#3 局部规划
局部规划,之所以有局部规划,是因为全局规划没有考虑很多局部信息的动态变化。原因有如下几个方面:
a. 局部信息有时候受限于传感器,运动物体在局部看到感知到的信息有限;
b.运动对象还受制于交通管控,它必须遵守交通规则。而交通路况是变化的,这刻绿灯,下一刻就可能是红灯,今天是通畅的,明天可能就封路改道;
c.由于其他交通参与者的行为会干扰到运动对象的路径;
这类情况下往往的解决算法思路是增量方法,就是走一步看一步,不断更新目前的状态信息,做出新的决策。这有别于全局优化,多考虑了时间这个重要的维度信息,是一种偏实时的路径规划。
RRT 算法
算法层面代表的就是PRM、RRT和Lattice,他们都是基于采样方法。PRM和RRT是基于树的方法,在空间内随机撒点,然后通过树生成的方式前进,最终达到目的地,这种方式路径不一定最优,但是可以快速求解并轻松避开障碍物。
Lattice主要应用栅格化处理方法(高效的经纬度和栅格对应可以用Geohash),通过网格离散化搜索空间,然后映射到frenet空间,利用cost函数避障和寻优,针对搜索困难,采用DP(动态规划)的原理避免重复计算。
#4 运动控制
运动控制,局部规划的路线,如果不进行平滑处理,那么是一条条线段,但是线段的曲率可能不连续,那么运动对象在速度、加速度上、锐度就可能突变,这样的路径是不能保证舒适性的,所以还需要进一步进行曲线平滑、角度平滑处理。
路径平滑
算法层面主要是样条曲线、插值方法、Bspline
Bspline可能会碰到边缘,插值的话容易产生龙格现象(过拟合,震荡厉害)。
#5 结尾
但是这还远远不够,运动物体在以上过程都被抽象成一个质点,然而运动物体一般是刚体,前后轮的运动特性不一样,还需要考虑运动物体的坐标系,分开建模。
附:自动驾驶名单(欢迎添加)
禾赛科技 | 自动驾驶雷达研发商 |
小鹏汽车 | 电动汽车研发生产商 |
理想汽车 | 智能新能源汽车研发商 |
域驰智能 | 自动驾驶解决方案提供商 |
安智汽车 | 智能驾驶全栈式解决方案提供商 |
斑马智行 | 智联网汽车整体解决方案提供商 |
比亚迪 | 新能源汽车制造商 |
创昂智能Tron | 低成本自动驾驶方案供应商 |
Tron.ai | 美国自动驾驶解决方案提供商 |
地平线汽车 | 智能电动车制造商 |
的卢 | 自动驾驶汽车制造商 |
滴滴自动驾驶 | 自动驾驶技术研发商 |
国汽智控 | 智能网联汽车技术研发商 |
黑芝麻智能 | 自动驾驶计算芯片制造商 |
鸿泉物联 | 商用车联网服务提供商 |
经纬恒润 | 智能驾驶整体解决方案提供商 |
岚图汽车 | 高端智能电动车研发商 |
Momenta | 自动驾驶技术研发商 |
魔视智能 | 自动安全驾驶解決方案提供商 |
轻舟智航 | 无人驾驶技术研发商 |
天瞳威视 | 汽车辅助驾驶系统研发商 |
蔚来 | 智能电动汽车研发商 |
仙途智能 | 无人驾驶清洁车研发商 |
上海易巴汽车动力系统 | 智能驾驶与新能源汽车研发商 |
MINIEYE | 自动驾驶感知系统研发商 |
驭势科技 | L4级自动驾驶解决方案提供商 |
知行科技 | 自动驾驶系统解决方案提供商 |
挚途科技 | 智能车软硬件系统研发商 |
奇点汽车 | 智能新能源汽车研发商 |
智能汽车发展平台 | 智能汽车基础设施运营商 |
纵目科技 | 自动驾驶及高级驾驶辅助系统技术产品供应商 |