1. 课程导入
欢迎进入《Apollo行为规划与场景决策工程》课程。行为规划是自动驾驶系统中承上启下的关键模块:上游接收路由、感知、预测与地图信息,下游向控制模块输出可执行的轨迹或动作指令。它决定了车辆在复杂交通环境中“怎么走、何时让、何时抢、如何绕”的核心策略。本课程将围绕Apollo平台的行为规划框架,系统讲解场景决策、规则引擎、状态机建模、交互博弈与工程落地方法。
学习目标:完成本课程后,你应能够理解Apollo行为规划的整体架构,掌握场景识别与决策树设计方法,能够编写基于规则的场景决策逻辑,并具备对行为规划模块进行调试、评测与优化的工程能力。
一、核心概念:行为规划在自动驾驶中的位置
自动驾驶系统通常分为感知、预测、规划、控制四大模块。规划模块又细分为路由规划、行为规划、运动规划三层。路由规划回答“从A到B走哪条路”,行为规划回答“在当前场景下应采取什么驾驶策略”,运动规划则回答“具体轨迹如何生成”。行为规划的输出通常是语义级动作,例如“跟车”“换道”“让行”“停车”“绕行”,而非具体的油门刹车数值。
Apollo的行为规划模块以场景(Scenario)为组织单元。每个场景对应一类典型交通情境,如车道保持、变道、路口通行、人行横道、停车让行等。场景内部通过阶段(Stage)和任务(Task)两层结构实现决策逻辑。阶段表示场景内的状态迁移,任务表示阶段内需要执行的具体计算或判断。这种“场景—阶段—任务”的层级设计,使行为规划具备良好的可扩展性与可维护性。
另一个核心概念是决策框架(Decision Framework)。Apollo采用基于规则与基于学习相结合的方式:规则引擎负责处理确定性场景,如红绿灯停车、停止线让行;博弈与优化方法负责处理交互性强的场景,如无保护左转、汇入车流。理解这两类方法的适用边界,是后续工程实践的基础。
二、整体框架:从场景到动作的决策链路
Apollo行为规划的整体框架可以概括为“场景管理—阶段推进—任务执行—决策输出”四层链路。场景管理器根据地图、感知、预测信息判断当前激活场景;阶段管理器根据场景内条件触发状态迁移;任务执行器调用具体算法完成任务;最终输出决策结果给运动规划模块。
上图展示了Apollo行为规划从多源输入到决策输出的完整链路。输入层融合感知、预测、地图与定位信息;场景管理器负责识别当前所处场景并管理场景切换;阶段管理器在场景内部推进状态迁移;任务执行器调用具体算法完成决策计算;最终输出语义级动作指令给运动规划模块。
三、方法流程:场景决策的工程实现步骤
在实际工程中,开发一个行为规划场景通常遵循以下步骤:
- 场景定义:明确场景的触发条件、边界条件与退出条件。例如“人行横道场景”的触发条件是车辆前方一定距离内存在人行横道且检测到行人。
- 阶段划分:将场景拆解为若干阶段,如“接近人行横道—检测行人—减速停车—等待通行—起步通过”。
- 任务设计:为每个阶段设计具体任务,如“计算停止线距离”“判断行人意图”“生成减速曲线”。
- 规则编写:使用配置文件或代码实现判断逻辑与参数设置。
- 仿真验证:在Apollo仿真平台中回放典型场景,验证决策逻辑的正确性与鲁棒性。
- 实车调试:在封闭场地与开放道路进行实车测试,收集边界案例并迭代优化。
以下是一个场景配置的简化示例,展示了场景、阶段与任务的组织方式:
scenario: CROSSWALK
trigger:
distance_to_crosswalk: < 30.0
pedestrian_detected: true
stages:
- APPROACH:
tasks: [compute_stop_distance, check_pedestrian_intent]
- STOP:
tasks: [generate_decel_profile, hold_brake]
- WAIT:
tasks: [monitor_pedestrian_state]
- PASS:
tasks: [release_brake, generate_accel_profile]
exit:
distance_past_crosswalk: > 5.0
四、案例场景:无保护左转的决策挑战
无保护左转是行为规划中最具挑战性的场景之一。车辆需要在没有专用左转信号灯的路口,判断对向直行车辆、行人、非机动车的动态,寻找安全间隙完成左转。这一场景涉及多智能体交互、博弈决策与风险评估。
在Apollo框架中,无保护左转场景通常包含以下阶段:接近路口、等待间隙、执行左转、完成左转。每个阶段需要综合判断对向车辆的距离、速度、加速度,以及本车的转向能力与舒适性约束。决策结果可能是“等待”“缓慢蠕行”“加速通过”或“中止左转”。
工程提示:无保护左转场景中,建议设置保守的初始参数,优先保证安全。随着数据积累与算法迭代,再逐步优化通行效率。切勿在早期阶段追求“像人一样果断”,安全冗余是行为规划的第一原则。
五、常见误区与复盘要点
| 误区 | 表现 | 正确做法 |
|---|---|---|
| 场景划分过粗 | 一个场景包含过多逻辑,难以维护 | 按交通情境细分场景,保持单一职责 |
| 忽略边界条件 | 场景切换时出现逻辑跳变或死锁 | 明确定义进入/退出条件与超时处理 |
| 规则硬编码 | 参数散落在代码中,难以调优 | 使用配置文件管理参数,支持在线更新 |
| 缺乏仿真验证 | 直接实车测试,风险高、效率低 | 先仿真回放,再封闭场地,最后开放道路 |
| 忽视交互博弈 | 仅考虑本车行为,忽略他车反应 | 引入预测与博弈模型,评估交互影响 |
复盘要点:每次场景调试后,应记录触发条件、决策结果、实际表现与预期差异。重点关注“该停未停”“该走未走”“决策抖动”三类问题。建立场景回归测试集,确保新修改不会破坏已有场景的稳定性。
六、学习路径建议
本课程共30章,建议按以下路径学习:
- 基础篇(第1-6章):理解行为规划架构、场景管理、阶段与任务机制、规则引擎基础。
- 核心篇(第7-18章):掌握典型场景决策方法,包括跟车、变道、路口通行、人行横道、停车让行、无保护左转、汇入汇出、环岛通行等。
- 进阶篇(第19-24章):学习交互博弈、风险评估、决策优化、多场景协调与优先级仲裁。
- 工程篇(第25-30章):掌握仿真验证、实车调试、性能评测、日志分析、故障排查与持续迭代方法。
学习过程中,建议结合Apollo开源代码与仿真工具同步实践。每学完一个场景,尝试在仿真环境中复现并调整参数,观察决策变化。行为规划是一门实践性极强的工程学科,只有通过反复调试与复盘,才能真正掌握其设计精髓。
现在,让我们从行为规划的基本概念与整体框架开始,逐步深入Apollo场景决策工程的核心世界。