自动驾驶规划控制基础:感知-预测-规划-控制架构、经典规划算法与控制方法及其局限性
自动驾驶系统本质上是一个“感知-决策-执行”的闭环智能体。要理解端到端规划控制为何兴起,首先必须厘清传统模块化架构中每个环节的职责边界、经典算法的数学内核以及它们在真实道路场景中的失效模式。本章将系统拆解感知、预测、规划、控制四层流水线,深入剖析A*、Dijkstra、RRT三类路径搜索算法与PID、MPC两类控制方法的适用条件与瓶颈,为后续引入强化学习奠定对比基准。
2.1 模块化自动驾驶架构:感知-预测-规划-控制
核心原理:四层流水线的数据流与职责边界
传统自动驾驶系统采用串行流水线架构。感知层负责将传感器原始数据(图像像素、点云、雷达回波)转化为结构化环境表达,包括目标检测(车辆、行人、骑行者)、车道线识别、可行驶区域分割、交通标志检测。预测层基于感知输出的历史轨迹与语义地图,估计动态目标的未来状态分布,常见输出为若干条带概率的候选轨迹或意图类别(直行、变道、转弯)。规划层接收自车状态、高精地图与预测结果,先进行行为决策(跟车、超车、让行、停车),再生成满足运动学约束的局部轨迹(路径+速度曲线)。控制层将规划轨迹转化为底层执行指令,通过转向、油门、制动实现精确跟踪。
这一架构的核心设计哲学是“分而治之”——每个模块可独立开发、测试与替换。感知模块输出标准化目标列表(位置、速度、朝向、类别),预测模块输出轨迹假设,规划模块在离散或连续空间搜索可行解,控制模块处理动力学跟踪。接口协议通常采用Protobuf或ROS Message定义,保证模块间松耦合。
判断方法:架构设计的五个关键检查点
- 接口完备性:感知是否输出目标的速度协方差?预测是否给出概率置信度?规划是否考虑横向/纵向耦合约束?
- 延迟预算:全链路延迟需控制在100ms内(感知40ms+预测20ms+规划30ms+控制10ms),任何模块超时都会导致控制抖动。
- 失效模式:感知漏检时规划是否有保守策略(如减速)?预测发散时是否有默认轨迹?
- 可解释性:每个模块的决策依据能否回溯?例如规划避让是源于感知的哪个目标?
- 计算资源分配:GPU负责感知推理,CPU负责预测与规划,MCU负责控制,需明确各模块的算力上限。
案例拆解:高速NOA场景下的级联失效
某L2+级自动驾驶系统在高速公路上遇到侧方车辆近距离切入。初始现象:自车以120km/h巡航,左侧车道一辆轿车以130km/h相对速度逼近。感知模块在80ms内完成检测,输出目标框位置与速度;预测模块基于匀速模型给出该车将保持当前车道行驶的单一轨迹假设;规划模块据此判断无需避让,保持巡航;控制模块维持油门。然而实际场景中,该车因前方慢车突然变道切入自车车道,预测模块未建模该交互行为,导致自车制动启动延迟300ms,触发AEB紧急制动。
复盘分析:根因在于预测模块的独立性假设——它只基于目标历史轨迹外推,未考虑目标与自车、目标与第三方的博弈关系。模块化架构中,预测无法获取规划层的意图,规划也无法反向影响预测的不确定性。最终改进方案是引入交互式预测(交互候选轨迹集),但这也暴露了模块间信息单向流动的结构性缺陷。
常见误区与总结复盘
- 误区一:认为模块越多越安全。实际上每增加一个模块就增加一个接口信息损失点,且延迟累积。
- 误区二:忽视预测的不确定性表达。很多系统只输出单一轨迹,导致规划层过度自信。
- 误区三:将规划与控制割裂。规划生成的运动学轨迹可能超出车辆动力学极限(如曲率变化率过大),控制层无法跟踪。
| 层级 | 输入 | 输出 | 典型算法 | 延迟预算 |
|---|---|---|---|---|
| 感知 | 传感器原始数据 | 目标列表/语义地图 | CNN、Transformer、点云检测 | 30-50ms |
| 预测 | 目标历史轨迹+地图 | 多模态轨迹+概率 | LSTM、Social GAN、规则模型 | 20-30ms |
| 规划 | 自车状态+预测+地图 | 局部轨迹(路径+速度) | A*、RRT、优化方法 | 30-50ms |
| 控制 | 参考轨迹+车辆状态 | 转向/油门/制动指令 | PID、MPC、LQR | 5-10ms |
2.2 经典规划算法:A*、Dijkstra与RRT
核心原理:三类搜索算法的数学本质
Dijkstra算法是广度优先搜索的加权扩展,从起点开始逐层扩展,每次选择当前代价最小的节点,直到到达终点。它保证在非负权图中找到最短路径,但搜索范围呈圆形扩散,效率较低。其代价函数为g(n),表示从起点到节点n的实际累计代价。
A*算法在Dijkstra基础上引入启发式函数h(n),估计从节点n到终点的最小代价。总评价函数f(n)=g(n)+h(n)。当h(n)满足可采纳性(即h(n)≤真实代价)时,A*保证找到最优解且扩展节点数远少于Dijkstra。在自动驾驶中,h(n)常用欧氏距离或曼哈顿距离,但需注意启发式函数的设计直接影响搜索效率与最优性。
RRT(快速扩展随机树)是一种基于采样的方法,通过在状态空间随机撒点,逐步构建从起点到终点的树状结构。它不显式构建栅格地图,适合高维连续空间,能处理非完整约束(如车辆最小转弯半径)。但RRT不保证最优性,且路径不平滑,通常需要后处理(如B样条平滑、剪枝)。
操作流程:A*在栅格地图上的实现步骤
- 将环境离散化为栅格,标记障碍物与可通行区域。
- 初始化open list(待扩展节点)与closed list(已扩展节点),将起点加入open list。
- 循环:从open list中取出f值最小的节点作为当前节点;若当前节点为终点,则回溯路径。
- 对当前节点的8邻域(或4邻域)进行扩展:计算g值、h值、f值;若邻域节点已在closed list中则跳过;若已在open list中且新g值更小则更新。
- 将当前节点移入closed list,重复直到找到终点或open list为空。
案例拆解:城市道路全局路径规划
某Robotaxi在园区内进行全局路径规划,地图为50m×30m的栅格,分辨率0.5m。起点(5,5),终点(45,25),中间有建筑物与禁行区。使用A*算法,启发式函数采用欧氏距离。初始搜索扩展了约1200个节点,耗时15ms,生成路径总长62m。对比Dijkstra扩展了3400个节点,耗时38ms,路径长度相同。RRT在相同地图上采样5000个点,生成路径长68m,且存在锯齿状折线,需额外平滑处理。
关键参数分析:栅格分辨率直接影响搜索空间大小——分辨率从0.5m提高到0.25m,节点数增加4倍,耗时增加约3倍。实际工程中需权衡精度与实时性。此外,A*的启发式函数若采用曼哈顿距离,在允许对角移动的地图上会高估代价,导致搜索非最优路径。
常见误区与总结复盘
- 误区一:将A*用于高维状态空间(如同时规划位置与速度),导致维度爆炸。应分解为路径规划与速度规划两个子问题。
- 误区二:忽视栅格地图的精度损失。离散化误差可能导致生成的路径穿过狭窄通道时过于保守。
- 误区三:RRT直接用于实车控制。必须进行路径平滑与曲率约束检查,否则控制层无法跟踪。
| 算法 | 最优性 | 计算复杂度 | 适用场景 | 局限性 |
|---|---|---|---|---|
| Dijkstra | 保证最优 | O(V²)或O(E log V) | 小规模静态地图 | 搜索效率低,不适合实时 |
| A* | 保证最优(可采纳启发式) | 取决于启发式质量 | 全局路径规划 | 高维空间失效,需离散化 |
| RRT | 不保证最优 | O(n log n)采样 | 高维/非结构化环境 | 路径不平滑,需后处理 |
2.3 经典控制方法:PID与MPC
核心原理:从反馈到预测控制
PID控制基于误差的比例、积分、微分三项线性组合生成控制量。在自动驾驶中,横向控制常用PID跟踪路径曲率或横向偏差,纵向控制用PID跟踪速度或距离。其优点是结构简单、无需模型、调参直观;缺点是难以处理系统延迟、非线性特性与多变量耦合。例如,高速工况下纯PID横向控制容易产生振荡,因为转向执行器存在延迟,且轮胎侧偏特性随速度变化。
MPC(模型预测控制)在每个控制周期内,基于车辆动力学模型预测未来N步的状态,通过在线求解带约束的优化问题,得到最优控制序列,并仅执行第一步。其核心优势是显式处理约束(转向角限幅、加速度限幅、障碍物避让)与多目标优化(跟踪精度、舒适性、能耗)。代价是计算量大,需要实时求解二次规划(QP)或非线性规划(NLP)。
判断方法:选择PID还是MPC的决策依据
- 模型复杂度:若车辆模型可近似为线性时不变系统(低速、小转角),PID足够;若需考虑轮胎非线性、载荷转移,MPC更合适。
- 约束重要性:MPC可硬约束转向极限与加速度边界,PID只能通过限幅处理。
- 计算资源:PID在MCU上运行(1kHz),MPC需要高性能处理器(50-100Hz)。
- 预测需求:若需预瞄前方道路曲率变化,MPC天然支持;PID需额外引入前馈补偿。
案例拆解:高速变道工况下的控制对比
某测试车辆以100km/h进行自动变道,参考轨迹为S形曲线。使用PID控制器(Kp=0.8, Ki=0.1, Kd=0.3),横向偏差峰值达到0.35m,且出现明显超调,车辆在变道完成后有0.2s的横向振荡。改用MPC(预测时域N=20,步长0.1s,约束转向角±30°,加速度±3m/s²),横向偏差峰值降至0.12m,无超调,且转向指令平滑。
深入分析:PID的振荡源于积分项在变道过程中的累积误差——当车辆进入第二段反向曲率时,积分项仍保留第一段的修正量,导致过度转向。MPC通过滚动优化,每步重新计算未来轨迹,能提前感知曲率变化,且约束保证了转向指令不超出物理极限。但MPC的代价是单步求解耗时8ms(使用OSQP求解器),而PID仅需0.1ms。
常见误区与总结复盘
- 误区一:认为MPC一定优于PID。在低速、简单场景下,PID的简单性与鲁棒性反而更优。
- 误区二:忽视MPC的模型失配问题。车辆质量变化、轮胎磨损都会导致预测模型不准,需引入自适应机制。
- 误区三:PID参数固定不变。应设计增益调度(gain scheduling),根据车速、载荷调整参数。
| 维度 | PID | MPC |
|---|---|---|
| 模型依赖 | 无需模型 | 需要动力学模型 |
| 约束处理 | 间接(限幅) | 显式(硬约束) |
| 预测能力 | 无 | 有(N步预测) |
| 计算开销 | 极低(kHz级) | 较高(50-100Hz) |
| 鲁棒性 | 对模型误差不敏感 | 对模型误差敏感 |
| 适用场景 | 低速、简单跟踪 | 高速、强约束、多目标 |
2.4 经典方法的局限性总结
模块化架构与经典算法在L2-L3级辅助驾驶中已得到充分验证,但面对L4级复杂城市场景时暴露出系统性瓶颈。规划层面,A*与RRT本质上是几何搜索,无法建模其他交通参与者的意图与博弈行为;控制层面,PID与MPC均依赖精确的参考轨迹,而轨迹生成本身又依赖感知与预测的准确性。这种“感知-预测-规划-控制”的串行结构,使得误差逐级放大,且无法在全局层面进行联合优化。