3. 故障检测基础:残差生成、阈值设定、卡方检验、一致性检验

各位同学,咱们今天聊点实在的。故障检测,说白了就是给导航系统装个“健康监测仪”。你想想看,一个组合导航系统在天上飞、地上跑,传感器随时可能出幺蛾子——陀螺漂移、加速度计卡死、GPS被干扰……要是没有一套靠谱的检测手段,系统就像个瞎子开车,迟早要出事。

我个人习惯把故障检测拆成四个核心环节:残差生成、阈值设定、卡方检验、一致性检验。这四步走下来,基本能把大部分故障揪出来。咱们一个一个说。

3.1 残差生成——故障的“影子”

残差是什么?说白了就是实际测量值与模型预测值之间的差值。系统正常时,残差应该很小,像个听话的小跟班;一旦出故障,残差就会突然变大,像影子突然跳起来吓你一跳。

在组合导航里,残差通常来自卡尔曼滤波器的新息序列(innovation sequence)。公式很简单:

r_k = z_k - H_k * x̂_k|k-1

其中,z_k 是实际观测值,H_k * x̂_k|k-1 是预测观测值。残差 r_k 就是两者的差。

关键点:残差是故障检测的“原材料”。没有残差,后面所有检验都是空中楼阁。

我在项目中遇到过一件事:有个同事直接用原始传感器数据做检测,结果误报率奇高。后来我帮他改成用卡尔曼新息,问题立马解决了。为什么?因为新息已经经过了滤波处理,噪声被压制了,故障特征更明显。

3.2 阈值设定——划条“红线”

有了残差,下一步就是定个标准:多大算大?多小算正常?这就是阈值设定。

阈值设得太宽,故障漏报;设得太窄,误报满天飞。我见过一个项目,阈值设得跟头发丝一样细,结果系统每秒钟报三次警,操作员直接崩溃。

常用的阈值设定方法有几种:

方法 原理 适用场景
固定阈值 根据经验或标定数据设定常数 噪声特性稳定的系统
自适应阈值 根据实时噪声统计量动态调整 噪声时变的系统
统计阈值 基于残差分布的概率密度函数 需要定量化误报率/漏报率

我的建议:新手先用固定阈值,跑通流程后再上自适应。别一上来就搞复杂算法,容易翻车。

嗯,这里要注意:阈值设定不是一劳永逸的。系统老化、环境变化都会影响最优阈值。我习惯在系统里留个“阈值校准模式”,定期跑一下标定流程。

3.3 卡方检验——给残差“打分”

卡方检验,听起来高大上,其实核心思想很简单:判断残差是否服从预期的统计分布

在卡尔曼滤波框架下,如果系统正常,新息序列应该服从零均值高斯分布,其马氏距离(Mahalanobis distance)服从卡方分布。检验统计量是:

q_k = r_k^T * S_k^{-1} * r_k

其中,S_k 是新息协方差矩阵。q_k 服从自由度为 m 的卡方分布(m 是观测维数)。

判断逻辑:

  • 如果 q_k ≤ χ²_α(m),认为系统正常
  • 如果 q_k > χ²_α(m),认为存在故障

α 是显著性水平,通常取 0.05 或 0.01。查卡方分布表就能得到阈值。

避坑指南:我曾经在一个项目里直接用卡方检验,结果发现误报率特别高。排查了半天,原来是新息协方差矩阵 S_k 算错了——滤波器没调好,协方差偏小,导致 q_k 偏大。所以,卡方检验的前提是滤波器必须收敛,否则检验结果不可信。

3.4 一致性检验——多源信息“对账”

一致性检验,说白了就是让多个传感器互相“对账”。你想想看,如果GPS说你在北京,惯导说你在上海,那肯定有一个在撒谎。

常用的方法包括:

  • 状态估计一致性:比较不同滤波器输出的状态估计值,看差异是否在合理范围内
  • 观测一致性:比较实际观测与预测观测的差异
  • 协方差一致性:检查估计协方差与实际误差是否匹配

我特别喜欢用归一化新息平方和(NIS)来做一致性检验。公式是:

NIS_k = (1/N) * Σ_{i=k-N+1}^{k} q_i

N 是滑动窗口长度。NIS 同样服从卡方分布,但因为是滑动平均,对缓变故障更敏感。

核心思路:一致性检验的本质是“冗余”。你有多少冗余信息,就能检测多少种故障。所以,组合导航系统里,传感器越多,故障检测能力越强——当然,成本也越高。

3.5 知识体系总览

下面这张图,是我自己画的故障检测知识体系。你看一眼,就能明白这四个环节怎么串起来的。

故障检测基础:知识体系 传感器数据 → 卡尔曼滤波 → 残差生成 残差生成 r_k = z_k - H·x̂ 故障的“影子” 阈值设定 固定/自适应/统计 划条“红线” 卡方检验 q_k = r^T·S^{-1}·r 给残差“打分” 一致性检验 多源信息“对账” NIS滑动平均 故障检测结果:正常 / 故障(含故障类型) 反馈:调整阈值或滤波器参数 图3-1 故障检测基础知识体系

从图上你能看到,整个流程是闭环的。残差生成是入口,阈值设定和卡方检验是核心判断逻辑,一致性检验是兜底方案。最后,检测结果还能反馈回去调整参数——这就是自适应故障检测的雏形。

3.6 实战要点总结

说了这么多,我给大家总结几条实战经验:

  1. 残差要“干净”——滤波器没调好之前,别急着做故障检测。否则你检测到的不是故障,是滤波器自己的抖动。
  2. 阈值要“留余量”——理论阈值往往偏紧。我习惯在理论值基础上乘以1.2~1.5的安全系数,先跑一段时间再微调。
  3. 卡方检验要“看窗口”——单点卡方检验对突变故障敏感,但对缓变故障不敏感。配合滑动窗口(比如NIS)效果更好。
  4. 一致性检验要“多维度”——别只盯着一个指标。状态一致性、观测一致性、协方差一致性,三个维度都看看,才能全面评估系统健康状态。

一个小技巧:我在实际项目中,会把残差和卡方统计量都记录下来,画成趋势图。肉眼观察比纯算法判断更直观。有时候算法说“正常”,但图上一看,残差已经在缓慢爬坡了——这就是缓变故障的前兆。

好了,这一章的内容就到这里。故障检测是容错设计的第一步,也是最重要的一步。检测不准,后面所有容错策略都是白搭。希望大家在实际项目中,能把这四个环节扎扎实实落地。


公众号:蓝海资料掘金营,微信deep3321