3. 异常检测概述
在自动驾驶系统中,“异常”并不是一个模糊的“感觉不对”,而是一个可被定义、可被观测、可被判定并需要触发响应的工程对象。异常检测的目标,是在系统仍处于可纠正阶段时,尽早识别出偏离预期行为、预期状态或预期环境模型的事件,为降级、告警、靠边停车或紧急接管争取时间。若把自动驾驶比作一名持续工作的驾驶员,异常检测就是它的“警觉系统”:既要发现传感器看不清、算法算不准,也要发现环境突变和系统自身失效。
3.1 异常的定义与判定边界
异常检测不是单纯追求“发现所有不同”,而是要在误报与漏报之间取得平衡。工程上通常从三个维度定义异常:
- 统计维度:观测值偏离历史分布或预测分布,例如激光雷达点云密度骤降、摄像头图像亮度突变。
- 逻辑维度:违反系统设计约束或物理规律,例如车速与轮速长期不一致、障碍物轨迹穿越不可行驶区域。
- 安全维度:虽未立即失效,但已进入风险边界,例如制动距离余量不足、接管时间窗口小于阈值。
因此,异常判定通常需要“阈值 + 上下文 + 持续时间”共同作用。单帧跳变可能是噪声,连续多帧偏离才可能是故障;单传感器异常可能由遮挡引起,多传感器一致性破坏则更可能是系统级问题。
3.2 异常分类:四类典型异常
结合自动驾驶感知—决策—控制链路,可将异常分为传感器异常、算法异常、环境异常和系统异常。四类异常并非孤立,常会级联传播。
| 异常类别 | 典型表现 | 常见根因 | 检测信号示例 |
|---|---|---|---|
| 传感器异常 | 图像模糊、点云缺失、雷达回波异常、IMU漂移 | 遮挡、污损、雨雪、标定失效、硬件老化 | 信噪比、点云密度、时间戳偏差、标定残差 |
| 算法异常 | 漏检、误检、轨迹预测跳变、分类置信度异常 | 分布外样本、模型过拟合、后处理逻辑缺陷 | 置信度分布、检测框抖动、预测轨迹曲率 |
| 环境异常 | 施工区、事故现场、极端天气、突然闯入目标 | 场景超出训练分布、动态目标不可预测 | 场景复杂度、未知障碍物比例、能见度估计 |
| 系统异常 | 通信延迟、算力过载、执行器响应迟滞、电源波动 | 资源竞争、网络抖动、硬件故障、软件死锁 | 端到端延迟、CPU/GPU占用、CAN报文周期 |
3.3 检测难点与挑战
异常检测的困难,首先来自“正常”的边界本身就不固定。城市道路、高速公路、园区道路的正常模式差异巨大,同一场景在白天与夜间、晴天与雨天的统计特性也完全不同。其次,异常样本稀少且长尾,真实道路中严重故障和极端场景占比极低,导致监督学习难以覆盖。第三,多传感器和多模块之间存在耦合,一个传感器异常可能被融合算法“平滑”掉,也可能被误判为算法异常。第四,检测实时性要求高,必须在毫秒到百毫秒级完成判断,否则接管窗口会被压缩。最后,误报会降低用户信任,漏报则直接威胁安全,二者需要根据风险等级动态权衡。
3.4 方法流程:从观测到接管
一个可落地的异常检测流程通常包含以下步骤:
- 数据采集与同步:对齐摄像头、激光雷达、毫米波雷达、IMU、GNSS和底盘信号的时间戳。
- 特征提取:计算点云密度、图像清晰度、检测置信度、轨迹残差、通信延迟等指标。
- 异常评分:用统计阈值、重构误差、分类器或规则引擎给出异常分数。
- 融合判定:结合多传感器一致性和时序持续性,输出异常类别与风险等级。
- 响应决策:触发告警、功能降级、靠边停车或紧急接管请求。
异常检测伪代码示例:
for frame in stream:
features = extract(camera, lidar, radar, imu, can)
score_sensor = sensor_consistency(features)
score_algo = model_uncertainty(features)
score_env = scene_complexity(features)
score_sys = latency_and_resource(features)
risk = fuse(score_sensor, score_algo, score_env, score_sys)
if risk >= TAKEOVER_TH:
request_emergency_takeover()
elif risk >= DEGRADE_TH:
degrade_function()
else:
continue_driving()
3.5 案例与场景:施工区锥桶引发的连锁异常
车辆在城市快速路行驶,前方出现临时施工区。摄像头因逆光导致锥桶检测置信度下降,激光雷达点云被锥桶稀疏反射削弱,算法模块将部分锥桶误判为可行驶区域边缘。此时,环境异常(施工区)先出现,随后引发传感器异常(视觉退化)和算法异常(漏检)。若系统仅依赖单帧视觉结果,可能继续行驶;若引入多传感器一致性检测和时序跟踪,则能发现“视觉消失但雷达仍有回波”的矛盾,提前触发降级并提示接管。这个案例说明:异常检测必须跨模块、跨时间、跨传感器联合判断。
3.6 复盘:检测能力评估清单
- 是否覆盖四类异常:传感器、算法、环境、系统?
- 是否定义清晰的正常基线与风险阈值?
- 是否具备时间一致性和多传感器交叉验证?
- 是否区分误报、漏报和延迟三类指标?
- 是否与接管策略、降级策略形成闭环?
- 是否在极端天气、施工区、通信抖动等场景中验证?
综上,异常检测概述的关键在于建立统一的异常定义、覆盖四类异常的检测视野,并正视长尾、耦合、实时和误报漏报等挑战。只有把异常检测嵌入感知、决策、控制与接管的全链路,才能让自动驾驶系统在不确定环境中保持可解释、可降级、可接管的安全能力。