当前位置:首页>自动驾驶>架构演进:自动驾驶Planning场景调度的重构之路

架构演进:自动驾驶Planning场景调度的重构之路

  • 2026-11-07 10:56:03
架构演进:自动驾驶Planning场景调度的重构之路
在自动驾驶系统(ADS)的研发中,规划模块(Planning)常被称为车辆的“大脑”。如果说规划算法是这个大脑的各种“技能”,那么场景管理(Scenario Management)就是调度这些技能的“神经中枢”。
过去,我们基于 Apollo 框架进行开发时,随着业务场景从简单的“车道跟随”扩展到复杂的业务逻辑时“代客泊车”、“掉头脱困”及“故障降级”,原有的场景切换逻辑逐渐显露出其工业化的瓶颈。
今天,我想聊聊我们对规划模块场景切换架构的一次深思熟虑的重构:从生硬的顺序匹配,进化为基于优先级的动态竞标体系。

一、 破旧:为什么“老架构”跟不上时代了?

在传统的 Apollo 设计中,场景切换逻辑相对直观,但也存在缺陷:
  1. 顺序执行的“首位效应”: 场景决策器(Deciders)是按代码顺序排列的。只要排在前面的场景(如 ParkAndGo、intersection)满足了基本条件,系统就会直接进入,而排在后面的、可能更符合当前局部最优的场景则永远没机会执行。

2. 不可逆的“状态陷阱”: 缺乏统一的等级划分。一旦进入某个复杂场景,很难在保证安全的前提下被更高优先级的安全逻辑(如紧急制动)平滑打断。
想象一下: 车辆正在执行变道,此时感知系统突然报出遮挡故障。在旧架构下,由于变道指令已发出且处于最高优先级,系统可能会硬着头皮继续完成变道,而无法即时降级到“车道保持”或“靠边停车”。

二、 立新:三大原则定义的重构蓝图

为了解决上述痛点,我们重新定义了场景切换的底层逻辑,核心围绕三个原则展开:

1. 优先级抢占 (Priority Preemption)

我们建立了一套严谨的 场景分级体系 (Scenario Grading System):
  • CRITICAL (L3): 安全兜底,如紧急制动(EMERGENCY_STOP)。

  • MISSION (L2): 核心任务,如代客泊车、掉头。

  • MANEUVER (L1): 局部动作,如路口通行。

  • CRUISE (L0): 基础巡航,如车道跟随。

2. 原子性保护 (Atomic Protection)

对于涉及复杂横纵向协同的任务(如泊车中),我们引入了 “粘性策略 (Sticky Strategy)”。除非遇到 L3 级的致命故障,否则不允许低级别或同级别场景中途截断,确保指令的一致性。

3. 状态一致性 (Stability & Hysteresis)

通过 Debounce(防抖) 和 TransitionGuard(跳转守卫),彻底杜绝了因感知噪声引起的场景频繁“闪烁(Flickering)”。

三、 深度解析:多路竞标与守卫决策流

重构后的系统不再是简单的 if-else。每一帧,系统都会进行一场打分以及评判:
  1. 并行竞标 (Bidding): 所有 Deciders 观察当前环境(Frame、Map、Routing),并交出自己的 ScenarioDecisionResult。

  2. 分值计算: 每个 Decider 会计算一个得分。

  3. 跳转守卫 (TransitionGuard): 收集所有竞标结果后,Guard 会核对“白名单”。例如,从“高速巡航”跳到“室内泊车”会被直接封杀。

  4. 最终仲裁: 优先级(Grade)最高的胜出;Grade 相同时,分数(Score)最高的胜出。

四、 实战证明:新架构的降维打击

通过以下两个典型案例,我们可以清晰地看到重构后的优势:

案例 A:功能降级流 (Degradation Path)

  • 旧逻辑: 正在变道时感知报错,系统可能卡在变道中间态,或者直接由于找不到轨迹而产生急刹。

  • 新架构: EmergencyDecider 瞬间报出 L3 级的 LANE_KEEPING 需求。由于 L3 > L1(变道),系统无条件执行抢占,动作干净利落,优先保证车辆留在车道内。

案例 B:复杂掉头脱困 (U-Turn & Escape)

  • 旧逻辑: 在狭窄死胡同,由于 intersection 逻辑依然满足某些基础条件,系统可能一直尝试前行。

  • 新架构: 当 DEADEND_TURNAROUND 识别到死胡同并给出高分竞标时,系统进入掉头场景。若空间不足,则触发 PATH_FOLLOW_BACK(倒车)。每一跳都由状态机严格控制原子性,直到完成掉头回归巡航。

五、 未来趋势:从“人工逻辑”到“强化学习”

目前的架构虽然解决了确定性和安全性的问题,但场景的分数(Score)和触发阈值仍带有一定的启发式色彩(Heuristics)。
我们的下一个目标是引入类 Q-Learning 的离散强化学习算法:
  • State (S): 当前的车速、障碍物分布、地图拓扑。

  • Action (A): 切换到的目标场景。

  • Reward (R): 基于通行效率、安全距离、乘客舒适度。

通过大规模离线仿真训练,我们将让 ScenarioManager 自动学习在什么时机切换场景能获得全局最优的行驶体验,让自动驾驶从“能开”走向“老司机”式的“好开”。  

专家点评: 自动驾驶的重构从未停止。从早期的规则驱动,到现在的分级竞标,再到未来的数据驱动,每一次架构演进都是为了在确定性与灵活性之间寻找那个完美的平衡点。

您对目前主流框架中的场景管理方案有什么看法?欢迎在评论区交流。

关注WheelOS自动驾驶社区,掌握上下游产业链信息,洞悉最新自动驾驶动态!

最新文章

随机文章