自动驾驶决策规划
学习记录b站老王对自动驾驶规划系列的讲解,有一说一,老王真的强。因为主要学习理论部分,所以老王代码系列不作记录。
参考视频:自动驾驶决策规划算法序章 总纲与大致目录
1 自动驾驶等级详解
自动驾驶总共分成了六个等级:L0 - L5
等级 | 详述 |
---|---|
L0 | 没有任何自动驾驶功能 |
L1 | 有横向和纵向的自动驾驶功能,但是横纵向无法联合作用 |
L2 | 横纵向可以联合作用,但是驾驶员必须对一切情况负责 |
L3 | 功能和L2基本相同,最大的区别在于责任,对于部分场景,驾驶员不必负责 |
L4 | 大部分道路皆可自动驾驶,大部分场景都不需要驾驶员负责 |
L5 | 完全自动驾驶 |
自动驾驶级别两条关键因素:功能、责任
L0 - L2: 主要是功能区分
L3 - L5: 主要是责任区分
L2这个概念很宽泛,自动驾驶的功能只有巡航、车道保持或者车什么都能做,但是只要驾驶员要负全责,这个车就是L2级别的自动驾驶。
决策规划算法就是普通L2到什么都能做的L2的一个重要模块。
在L4中决策规划模块是最重要,也是最复杂、最难做的模块。
2 自动驾驶规划算法
规划算法细致分有三个:
- 导航规划算法
该算法就是从A点到B点规划出一条粗略的路径,该算法比较成熟,像A*,Dijstra,混合A*,不做讲解。 - 行为规划算法
又叫决策算法,决定车辆行驶意图的算法,对于静态障碍物,到底是往左还是往右绕。对于动态障碍物,到底是该减速避让,还是加速超车。决策算法决定了车辆的意图,也是整个规划算法里最难做的部分。
特点:
(1)决策算法会给一个车辆的行驶意图,会指导车辆该避让,该超车,该左转还是该右转,但是决策规划算法不会给具体的运动建议,例如左转多少度,车辆加速到多少。
(2)实际环境瞬息万变,因此决策算法需要较高的执行频率,一般为10Hz。决策算法需要有一定的稳定性,不允许在周围环境出现朝令夕改的现象。前一秒下达左转意图,下一秒就右转了。
- 运动规划算法
根据决策给出的行为意图在相关的时空中搜索出(或优化出)一条具有详细路径速度信息,并且满足各个约束条件的轨迹,将此轨迹发给控制模块去跟踪。此轨迹在几米到几十米不等。
特点:
运动规划生成的轨迹是决策规划模块的最终输出,具有详细的路径速度信息,执行频率与决策相同,为10Hz,同样,运动规划也要求一定的稳定性。
EM Planner是Apollo的经典决策规划算法,擅长处理复杂环境下的决策规划问题。