1. 课程导入

欢迎进入《Apollo行为规划与场景决策工程》课程。行为规划是自动驾驶系统中承上启下的关键模块:上游接收路由、感知、预测与地图信息,下游向控制模块输出可执行的轨迹或动作指令。它决定了车辆在复杂交通环境中“怎么走、何时让、何时抢、如何绕”的核心策略。本课程将围绕Apollo平台的行为规划框架,系统讲解场景决策、规则引擎、状态机建模、交互博弈与工程落地方法。

学习目标:完成本课程后,你应能够理解Apollo行为规划的整体架构,掌握场景识别与决策树设计方法,能够编写基于规则的场景决策逻辑,并具备对行为规划模块进行调试、评测与优化的工程能力。

一、核心概念:行为规划在自动驾驶中的位置

自动驾驶系统通常分为感知、预测、规划、控制四大模块。规划模块又细分为路由规划、行为规划、运动规划三层。路由规划回答“从A到B走哪条路”,行为规划回答“在当前场景下应采取什么驾驶策略”,运动规划则回答“具体轨迹如何生成”。行为规划的输出通常是语义级动作,例如“跟车”“换道”“让行”“停车”“绕行”,而非具体的油门刹车数值。

Apollo的行为规划模块以场景(Scenario)为组织单元。每个场景对应一类典型交通情境,如车道保持、变道、路口通行、人行横道、停车让行等。场景内部通过阶段(Stage)和任务(Task)两层结构实现决策逻辑。阶段表示场景内的状态迁移,任务表示阶段内需要执行的具体计算或判断。这种“场景—阶段—任务”的层级设计,使行为规划具备良好的可扩展性与可维护性。

另一个核心概念是决策框架(Decision Framework)。Apollo采用基于规则与基于学习相结合的方式:规则引擎负责处理确定性场景,如红绿灯停车、停止线让行;博弈与优化方法负责处理交互性强的场景,如无保护左转、汇入车流。理解这两类方法的适用边界,是后续工程实践的基础。

二、整体框架:从场景到动作的决策链路

Apollo行为规划的整体框架可以概括为“场景管理—阶段推进—任务执行—决策输出”四层链路。场景管理器根据地图、感知、预测信息判断当前激活场景;阶段管理器根据场景内条件触发状态迁移;任务执行器调用具体算法完成任务;最终输出决策结果给运动规划模块。

Apollo行为规划决策链路 感知信息 障碍物/车道线/信号灯 预测信息 轨迹/意图/交互 地图与路由 HD Map/Routing 定位信息 位姿/速度/航向 场景管理器 Scenario Manager 场景识别 · 场景切换 · 优先级仲裁 · 生命周期管理 阶段管理器 Stage Manager 状态迁移 · 条件判断 · 阶段进入/退出 · 超时处理 任务执行器 Task Executor 规则判断 · 博弈决策 · 路径生成 · 速度规划 · 安全检查 决策输出 Decision Output 动作指令 · 目标车道 · 速度约束 · 让行/抢行标志 输入层 多源融合 决策层 分层递进 输出层 语义动作

上图展示了Apollo行为规划从多源输入到决策输出的完整链路。输入层融合感知、预测、地图与定位信息;场景管理器负责识别当前所处场景并管理场景切换;阶段管理器在场景内部推进状态迁移;任务执行器调用具体算法完成决策计算;最终输出语义级动作指令给运动规划模块。

三、方法流程:场景决策的工程实现步骤

在实际工程中,开发一个行为规划场景通常遵循以下步骤:

  1. 场景定义:明确场景的触发条件、边界条件与退出条件。例如“人行横道场景”的触发条件是车辆前方一定距离内存在人行横道且检测到行人。
  2. 阶段划分:将场景拆解为若干阶段,如“接近人行横道—检测行人—减速停车—等待通行—起步通过”。
  3. 任务设计:为每个阶段设计具体任务,如“计算停止线距离”“判断行人意图”“生成减速曲线”。
  4. 规则编写:使用配置文件或代码实现判断逻辑与参数设置。
  5. 仿真验证:在Apollo仿真平台中回放典型场景,验证决策逻辑的正确性与鲁棒性。
  6. 实车调试:在封闭场地与开放道路进行实车测试,收集边界案例并迭代优化。

以下是一个场景配置的简化示例,展示了场景、阶段与任务的组织方式:

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场景决策工程的核心世界。