1. 课程导入

自动驾驶系统在公开道路上的表现,往往不是由“平均场景”决定的,而是由极少数低频、高风险、语义模糊、传感器退化或交互博弈的困难场景决定。这类场景通常被称为 Hard Case(困难案例)。它们可能表现为:施工区锥桶突然侵入车道、夜间逆光下行人横穿、无保护左转与对向车博弈、前车急刹导致的多车连锁反应、隧道出口强光造成感知短暂失效、雨雾天气下车道线缺失等。Hard Case 的核心特征不是“罕见”本身,而是系统在当前能力边界内无法稳定、安全、舒适地处理,并且一旦处理失败,后果可能非常严重。

因此,Hard Case 挖掘与闭环工程的目标,不是简单收集“难例”,而是建立一条从数据发现 → 场景理解 → 问题归因 → 算法/策略改进 → 仿真与实车验证 → 回归上线的完整闭环。它把零散的“路测问题”转化为可度量、可复现、可迭代的工程资产。对于自动驾驶团队而言,这条闭环决定了版本迭代的速度与安全上限。

核心判断:一个 Hard Case 是否值得进入闭环,取决于三个维度——发生频率、风险等级、当前系统是否可复现。高频低危场景优先做体验优化;低频高危场景必须做安全兜底;不可复现场景则要先解决数据回传与场景重建问题。

一、Hard Case 的定义与边界

在工程实践中,Hard Case 不能只靠“感觉难”来定义。更严谨的定义是:在特定 ODD(运行设计域)内,系统感知、预测、规划或控制模块的输出,与安全、合规、舒适或效率目标发生显著偏差,且该偏差在统计上具有重复出现或潜在重复出现的可能。这一定义包含四个要素:

  • 特定 ODD:离开 ODD 谈困难没有意义,高速 NOA 与城市 Robotaxi 的 Hard Case 完全不同。
  • 模块偏差:可能是感知漏检、预测错误、规划保守、控制抖动,也可能是多模块耦合失效。
  • 目标冲突:安全、合规、舒适、效率之间发生冲突,例如“礼让行人”与“避免后车追尾”同时存在。
  • 可重复性:能够通过日志、仿真或场景重建复现,否则无法进入闭环。

需要区分三个容易混淆的概念:Corner Case 强调边界条件组合;Edge Case 强调极端参数;Hard Case 强调系统当前能力不足。三者有交集,但 Hard Case 更关注“工程上必须解决且能闭环”的问题。

二、挖掘与闭环工程的价值

Hard Case 挖掘的价值体现在四个层面。第一,安全价值:通过高危场景的提前暴露与回归,降低实车事故风险。第二,效率价值:把路测中偶发的问题转化为可批量仿真的场景库,减少重复路测成本。第三,算法价值:为感知、预测、规划提供针对性训练与评测数据,避免“平均指标好看、关键场景崩溃”。第四,组织价值:形成统一的问题描述语言与优先级机制,让数据、算法、仿真、测试、安全团队协同迭代。

闭环工程的关键在于“闭环”二字。很多团队有数据回传,但没有场景挖掘;有场景挖掘,但没有归因;有归因,但没有回归验证。任何一个环节断裂,Hard Case 就只是“日志里的故事”,无法转化为版本能力。

Hard Case 挖掘与闭环工程主线 数据采集 路测/回传/影子模式 场景挖掘 触发规则/聚类/主动学习 场景理解 标注/重建/语义标签 问题归因 感知/预测/规划/控制 优先级评估 频率×风险×可复现 算法改进 模型/规则/策略 仿真验证 场景回放/泛化/对抗 实车验证 封闭场地/指定路线 回归上线 版本发布/监控 未通过则回流补充数据 闭环工程的关键度量 • 场景覆盖率:已挖掘 Hard Case 占目标 ODD 风险场景的比例 • 回归通过率:改进后版本在场景库中的通过比例 • 平均闭环周期:从问题发现到版本上线的天数 • 误报率:被标记为 Hard Case 但实际非问题的比例 • 漏报率:真实高危场景未被挖掘出的比例 • 场景复用率:同一场景被多团队/多版本复用的次数

三、方法流程:从路测日志到版本能力

一个可落地的 Hard Case 闭环通常包含六个步骤。第一步,数据采集:通过路测、影子模式、仿真回放、用户接管事件、安全员干预记录等渠道获取原始数据。第二步,场景挖掘:用触发规则(急刹、接管、碰撞预警、横向加速度超限)、聚类算法、主动学习筛选候选场景。第三步,场景理解:对候选场景进行标注、重建、语义标签化,形成可查询的场景库。第四步,问题归因:定位是感知漏检、预测轨迹错误、规划保守还是控制延迟。第五步,改进与验证:在仿真中批量回归,再进入封闭场地或指定路线实车验证。第六步,回归上线:版本发布后持续监控同类场景是否再次出现。

下面是一个简化的场景挖掘触发规则示例,用于从日志中筛选候选 Hard Case:

trigger_rules:
  - name: hard_brake
    condition: ego.deceleration > 3.5 m/s^2
    window: 2.0s
  - name: takeover
    condition: driver.takeover == true
    window: 5.0s
  - name: near_miss
    condition: min_ttc < 1.5s
    window: 3.0s
  - name: perception_drop
    condition: object_count_drop > 40%
    window: 1.0s

四、案例场景:无保护左转的博弈失败

假设一辆自动驾驶车辆在城市路口执行无保护左转。对向有直行车流,系统预测对向车辆会减速让行,于是开始左转;但对向车辆实际未减速,导致本车在路口中间急停,后车紧急制动。这是一个典型的 Hard Case。通过日志回放可以发现:感知正确识别了对向车辆,预测模块给出了“让行”概率偏高的轨迹,规划模块选择了激进左转策略,控制模块在急停时产生了较大纵向抖动。

归因结论是预测与规划耦合失效,而非感知问题。改进方案包括:增加对向车辆意图的不确定性建模、在规划中引入防御性左转策略、在仿真中批量生成不同对向车速与让行概率的组合场景。验证通过后,该场景进入回归场景库,后续版本必须通过该场景才能上线。

常见误区:把 Hard Case 挖掘等同于“多收数据”。如果没有场景理解与归因,数据只是堆积;如果没有回归验证,改进只是猜测;如果没有优先级评估,团队会被低价值场景淹没。闭环工程的核心是可复现、可度量、可回归。

五、课程学习目标与整体知识框架

本课程围绕 Hard Case 的全生命周期展开,学习目标包括:理解 Hard Case 的定义与分类;掌握数据采集、触发规则、场景挖掘与主动学习方法;掌握场景重建、语义标签与场景库建设;掌握感知、预测、规划、控制各模块的归因方法;掌握仿真验证、实车验证与回归上线流程;建立安全、合规、效率、舒适多目标权衡的工程思维。

模块核心问题关键产出
定义与分类什么算 Hard Case?如何分级?Hard Case 分类标准与优先级矩阵
数据与挖掘从哪里发现?用什么规则?触发规则库、候选场景集
场景理解如何重建与标签化?场景库、语义标签体系
归因与改进问题出在哪个模块?归因报告、算法改进方案
验证与闭环如何证明改好了?仿真回归报告、实车验证报告

整体知识框架可以概括为“一条主线、两类数据、三层验证”。一条主线是 Hard Case 闭环;两类数据是真实路测数据与仿真生成数据;三层验证是仿真回归、封闭场地验证、公开道路验证。后续章节将沿着这条主线,逐步展开数据挖掘、场景重建、归因分析、仿真评测与版本回归的工程细节。

学习建议:在学习过程中,始终带着三个问题阅读——这个 Hard Case 属于哪类风险?它能否被复现?改进后如何证明它不再发生?把这三个问题贯穿全课程,就能把零散知识点串成可落地的工程能力。