1. 课程导入

在自动驾驶、工业机器人、无人机、航天器以及高端医疗设备中,传感器是系统感知外部世界的“眼睛”和“耳朵”。然而,真实运行环境中的传感器并不总是可靠的:镜头被泥水遮挡、激光雷达在雨雾中回波衰减、IMU 因温漂产生零偏、GPS 在城市峡谷中多路径反射、轮速计在打滑时读数失真。如果系统盲目相信所有传感器数据,轻则定位漂移、控制抖动,重则引发安全事故。因此,传感器异常检测与降级融合成为多传感器系统必须具备的核心能力。

本课程的目标不是孤立地讲解某个滤波器公式,而是建立一条完整的技术链路:发现异常 → 隔离异常 → 评估剩余可信度 → 动态调整融合权重 → 输出降级但安全的估计结果。这条链路贯穿感知、定位、控制多个模块,是功能安全与预期功能安全的重要支撑。

一、学习目标

完成本课程后,学习者应能够达到以下四个层次的目标:

  • 概念层:准确区分故障、异常、失效、降级、融合等术语,理解残差、新息、一致性检验、置信度等基础概念。
  • 方法层:掌握基于阈值、统计检验、模型预测、机器学习等异常检测方法,并理解卡尔曼滤波、协方差交叉、粒子滤波等融合框架中如何嵌入异常处理。
  • 工程层:能够针对 IMU、GPS、激光雷达、摄像头、轮速计等典型传感器设计检测与降级策略,并配置合理的参数与日志。
  • 系统层:能够从功能安全角度设计故障树、降级状态机与冗余切换逻辑,平衡可用性、精度与安全性。

二、核心概念

在进入具体算法之前,需要先厘清几个容易混淆的概念。异常是指观测值偏离正常模式,但系统未必失效;故障是传感器或模块本身无法完成规定功能;失效是故障导致系统输出不可接受;降级则是在部分传感器不可用时,系统主动降低性能指标以维持安全运行;融合是利用多个信息源估计同一状态,而降级融合就是在异常条件下动态调整融合策略。

异常检测的核心是构造一个能够反映“预期与实际差异”的指标。最常见的是残差,即观测值与预测值之差。以卡尔曼滤波为例,新息 y = z - Hx⁻ 及其协方差 S = HP⁻Hᵀ + R 构成马氏距离 d² = yᵀS⁻¹y,当 d² 超过卡方分布阈值时,即可判定该观测异常。这个指标既考虑了偏差大小,也考虑了不确定性,比单纯阈值更稳健。

三、整体知识框架

本课程的知识框架可以概括为“三层四环”。三层分别是:数据层(原始信号质量评估)、特征层(残差、一致性、相关性等指标)、决策层(隔离、降级、重构、告警)。四环则是:检测、诊断、隔离、恢复。下图展示了从多传感器输入到降级融合输出的整体关系。

传感器异常检测与降级融合整体框架 数据层 · 多源传感器输入 IMU GPS / GNSS 激光雷达 摄像头 轮速计 其他 特征层 · 异常检测指标 残差 / 新息 z - Hx⁻ 马氏距离 d² = yᵀS⁻¹y 一致性检验 NIS / NEES 相关性 / 模型预测 时序一致性 学习模型 分类 / 回归 决策层 · 隔离、降级与融合 异常判定 阈值 / 卡方检验 故障隔离 剔除 / 降权 置信度评估 协方差 / 权重 降级融合 动态权重 / 重构 安全输出 告警 / 状态机 反馈 安全可用的状态估计输出

四、典型应用场景

异常检测与降级融合并非实验室概念,而是大量工程系统的刚需。下表列出了几个典型场景及其关键挑战。

应用场景 易发异常 降级策略 关键指标
自动驾驶定位 GPS 多路径、激光雷达雨雾衰减 切换至 IMU + 轮速计航位推算 定位误差、可用性
工业机器人 编码器丢脉冲、力矩传感器漂移 多关节冗余估计、限速运行 轨迹跟踪误差
无人机导航 磁力计受扰、气压计突变 视觉/光流辅助、姿态降级 姿态角误差、失控率
航天器姿控 陀螺仪饱和、星敏感器遮挡 陀螺积分 + 太阳敏感器重构 姿态确定精度

五、常见误区与复盘

误区一:只做检测,不做降级。很多系统能发现异常并报警,但融合模块仍然使用异常数据,导致估计结果被污染。检测与降级必须成对设计。
误区二:阈值一刀切。固定阈值在不同工况下表现差异巨大。高速、低温、强振动场景下,残差分布会变化,应使用自适应阈值或统计检验。
复盘建议:每次异常事件后,应记录异常发生时间、传感器编号、残差大小、判定依据、降级动作和最终输出误差。这些日志是优化阈值和权重的重要依据。

下面是一段典型的异常检测与降级融合伪代码,展示了新息卡方检验与权重调整的基本逻辑:

for each sensor i:
    y_i = z_i - H_i * x_pred
    S_i = H_i * P_pred * H_i.T + R_i
    d2_i = y_i.T * inv(S_i) * y_i

    if d2_i > chi2_threshold:
        status_i = ABNORMAL
        weight_i = 0.0
    else:
        status_i = NORMAL
        weight_i = 1.0 / trace(S_i)

normalize(weight)
x_est = sum(weight_i * K_i * y_i) + x_pred
P_est = update_covariance(P_pred, weight, S_i)

从这段代码可以看出,异常检测并不是一个孤立的分类问题,而是与状态估计、协方差传播、权重分配紧密耦合的闭环过程。理解这一点,是学好本课程的关键。

本课程后续将围绕这条主线展开:先讲异常检测的数学工具,再讲多传感器融合的经典框架,然后进入降级策略与状态机设计,最后通过自动驾驶、机器人等综合案例进行实战复盘。希望学习者带着“如何让系统在传感器不可靠时仍然安全可用”这个问题,进入每一节的学习。