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:
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 属于哪类风险?它能否被复现?改进后如何证明它不再发生?把这三个问题贯穿全课程,就能把零散知识点串成可落地的工程能力。