自动驾驶规划与控制简述
自动驾驶SAE
level | 简称 | 内容 |
0 | 无自动化 | 自动化系统提供一些提醒偶尔干预,但是没有持续对车辆控制 |
1 | 驾驶员协助 | 驾驶员和自动驾驶系统共同对车进行控制。ACC,LKA,Cruise control |
2 | 部分自动化 | 对车完全的控制:加速、制动、转向。驾驶员必须监测驾驶并在任何时间准备干预如果系统做出错误的决策 |
3 | 有条件的自动化 | 驾驶员可以安全地将注意力转移驾驶任务 |
4 | 高度自动化 | 在一些特定场景可以实现自动驾驶 |
5 | 完全自动化 | 完全不需要人的干预,可以工作 |
ODD
设计特定的运行场景运作基于给定的自动驾驶系统不限于环境、地理和时间的限制,还有交通和道路。
自动驾驶汽车架构
Planning模块接受的信息:
- Destination目标地
- 感知模块发送的信息
- 地图特征信息
- 车辆的位置
规划出路径给Control模块,对转向、油门、刹车进行控制。
Planner
目标:提供给控制器controller最安全、准确、可预测和舒适的导航。
输入:
- 目标位置
- 感知:提供感知的动态环境信息
- Map:提供先验信息
- 定位:提供车的当前的工作状态
输出:
- 控制器:提供可行的路径并对车进行横纵向控制来实现跟踪和维持
- 感知:有时候提供影响我们行为评估的区域信息
Controller
目标:通过理解车辆的动态信息准确执行规划器的路径要求,并且开动汽车(油门、刹车、转向、档位)。在规划器要求的路径下优化乘客舒适性。
输入:
- Planner
- 定位
输出:
- 轨迹信息
- 转向
- 速度
- 油门/刹车
PnC(规划控制)
PnC:感知到周围环境的基础上,结合无人车的目的地和当前的位置对车辆做出最正确合理的决策和控制。
规划控制的细化:
- 按照解决问题的不同层面/解决问题时间窗口的长短
- 基于时间域和空间域划分为路径规划、速度规划
- 根据算法的优劣细化:Homotopy search vs optimization
按照解决问题的不同层面划分的规划控制:
路径规划、行为决策、动作规划、动作控制
Mission/Route Planning 全局路径规划
目标:根据全局静态地图规划处一条从起始点到终点的一个可行的最优路径
输入:起始点、目标地、graph、代价函数
输出:车道/路段序列(路线)
一般算法:图搜索(Dijkstra、A*)
潜在代价有:车道变换、左转/右转、窄车道
Behavioral Decision Making 行为决策
目标:确定高层次的行动:比如在人行横道交叉口现在或以后改变车道,坚持左车道或右车道,停止/前进。
输入:Planner、localization、Map、交通规则、人类驾驶经验
输出:Planner high level decision
一般方法:
- 有限状态机 Finite State Machine
- 基于交通规则的方法 Minimum Violation Planning
- 马可夫决策 Markov Decision Process
- 形式化方法 Formal Methods (STL, LTL, process algebra, μ-calculus,…)
Motion planning/Local Planning 动作规划/局部路径规划
目标:解决在一定约束范围下的一个优化问题。找到更高精度的“好的”(接近最优wrt成本函数)路径来执行
输入:感知、Map、localization
输出:规划参考路径、轨迹(带速度)、Homotopy Space
一般方法:
- 基于搜索的方法
- 随机抽样方法
- MPC
基本的规划框架
- Local Planner 局部规划器-选择更好的准确路径和行为来到达目标地和避开障碍物
- Behavioral Planner 行为决策规划器-根据接受规划的结果,同时接收感知预测的信息,驾驶员经验、交通规则,综合这些输入来决定无人车的行为(跟着、换道、避障)
- Mission Planner 全局规划器-根据全局静态地图规划处一条从起始点到终点的一个可行的最优路径
Motion Control 运动控制
目标:跟踪最好的轨迹
输入:Planner、localization
输出:Steering Throttle Brake
一般方法:PID、Stanley、Pure pursuit、LQR、MPC
开发者的角度:
- 如何控制车辆
- 如何产生一条优化轨迹
- 如何产生一条路径
- 如何选择最好的路径
底层逻辑:from control to planning
- 好的控制是地基
- 对车辆有个更好的理解