2. 自动驾驶行为规划概述
在自动驾驶的分层决策体系中,行为规划(Behavior Planning)承担着“承上启下”的关键角色。它位于任务规划与运动规划之间,负责把“从A到B”的宏观导航意图,翻译成一段段可被下游执行的具体驾驶行为。理解行为规划的定义、地位及其与运动规划、控制的关系,是掌握 Apollo 决策技术栈的起点。
一、行为规划的定义
行为规划是指在给定环境感知结果、地图信息、导航目标与交通规则约束下,为自车在有限时间窗口内选择一种或一组高层驾驶意图的过程。它的输出不是具体的油门、刹车或方向盘转角,而是诸如“跟车”“换道”“借道绕行”“路口左转”“靠边停车”这样的语义化行为指令。
可以用一个更工程化的表述来界定:行为规划解决的是“做什么”的问题,而运动规划解决的是“怎么做”的问题。前者输出离散或半离散的行为决策,后者输出连续、平滑、满足车辆动力学约束的轨迹。
行为规划的核心输出:目标车道、目标速度区间、行为类型、行为持续时间、优先级。
二、行为规划在自动驾驶系统中的地位
典型的自动驾驶软件栈可划分为感知、预测、规划、控制四大模块。规划模块内部又常被细分为三层:任务规划(Route Planning)、行为规划(Behavior Planning)、运动规划(Motion Planning)。行为规划处于中间层,向上承接任务规划给出的全局路径,向下为运动规划提供决策约束。
这种分层设计的意义在于解耦:任务规划处理分钟级的路线选择,行为规划处理秒级的驾驶意图,运动规划处理毫秒级的轨迹生成。若把三者混在一起,系统将面临状态空间爆炸、规则难以维护、验证成本极高等问题。行为规划正是把复杂的连续驾驶问题,抽象为有限状态或有限选项的决策问题。
三、行为规划与运动规划、控制的关系
三者构成一条从抽象到具体的决策链。行为规划输出的是“语义决策”,运动规划将其转化为“几何轨迹”,控制则把轨迹跟踪为“执行指令”。它们的时间尺度、输出形式和验证方法都有显著差异。
| 维度 | 行为规划 | 运动规划 | 控制 |
|---|---|---|---|
| 核心问题 | 做什么 | 怎么做 | 如何执行 |
| 输出形式 | 行为类型、目标车道、速度区间 | 连续轨迹点、曲率、加速度 | 油门、刹车、转向角 |
| 时间尺度 | 秒级(0.5~5s) | 百毫秒级(0.1~1s) | 毫秒级(10~100ms) |
| 典型方法 | 有限状态机、行为树、POMDP | EM Planner、Lattice、优化 | PID、MPC、LQR |
| 验证重点 | 决策合理性、规则符合性 | 安全性、舒适性、动力学可行 | 跟踪精度、稳定性 |
需要强调的是,行为规划并非孤立模块。它必须与预测模块形成闭环:预测给出他车未来可能的轨迹分布,行为规划据此评估不同行为的风险与收益;行为规划的结果又会反过来影响预测的交互推理。这种“预测—决策”耦合是城市复杂场景中的核心难点。
四、典型场景案例:无保护左转
以无保护左转为例,自车在路口等待左转,对向有直行车辆。行为规划需要完成以下判断:当前是否具备左转间隙?对向车辆是否会减速让行?是否有行人正在穿越?若间隙不足,应选择“等待”还是“缓慢蠕行试探”?
场景:无保护左转
输入:
- 对向直行车距离 35m,速度 12m/s
- 行人位于左侧人行横道,静止
- 左转绿灯,无左转专用相位
行为候选:
A. 立即左转
B. 等待对向车通过后左转
C. 缓慢蠕行至路口中心等待
决策依据:
- 若对向车 TTC < 4s,排除 A
- 若行人进入冲突区,排除 A、C
- 选择 B,输出目标停车点与等待行为
这个案例说明,行为规划的输出必须足够明确,才能让运动规划生成安全轨迹。如果行为规划只给出“左转”而不说明“何时转、转到哪条车道、遇到冲突如何退让”,运动规划将无法独立完成决策。
五、常见误区与复盘
- 误区一:把行为规划等同于规则判断。规则只能覆盖有限场景,真实道路存在大量模糊、交互和博弈情形,需要概率推理与学习型方法补充。
- 误区二:行为规划输出越细越好。输出过细会侵占运动规划的优化空间,导致轨迹不可行或频繁重规划;输出过粗则让运动规划承担过多决策负担。
- 误区三:忽略时间一致性。行为频繁切换会造成车辆抖动、乘客不适,甚至引发后车误判。行为规划需要引入迟滞、保持时间和切换代价。
- 误区四:只关注自车最优。行为规划必须考虑他车反应,否则容易陷入“自车认为安全、他车并不让行”的冲突。
综上,行为规划是自动驾驶决策链中连接宏观导航与微观轨迹的桥梁。它把复杂的连续驾驶问题抽象为可解释、可验证的离散决策问题,同时又要为下游运动规划保留足够的优化空间。理解它的定义、地位与上下游关系,是后续学习 Apollo 行为规划框架、场景决策与状态机设计的基础。