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 知识体系总览
下面这张图,是我自己画的故障检测知识体系。你看一眼,就能明白这四个环节怎么串起来的。
从图上你能看到,整个流程是闭环的。残差生成是入口,阈值设定和卡方检验是核心判断逻辑,一致性检验是兜底方案。最后,检测结果还能反馈回去调整参数——这就是自适应故障检测的雏形。
3.6 实战要点总结
说了这么多,我给大家总结几条实战经验:
- 残差要“干净”——滤波器没调好之前,别急着做故障检测。否则你检测到的不是故障,是滤波器自己的抖动。
- 阈值要“留余量”——理论阈值往往偏紧。我习惯在理论值基础上乘以1.2~1.5的安全系数,先跑一段时间再微调。
- 卡方检验要“看窗口”——单点卡方检验对突变故障敏感,但对缓变故障不敏感。配合滑动窗口(比如NIS)效果更好。
- 一致性检验要“多维度”——别只盯着一个指标。状态一致性、观测一致性、协方差一致性,三个维度都看看,才能全面评估系统健康状态。
一个小技巧:我在实际项目中,会把残差和卡方统计量都记录下来,画成趋势图。肉眼观察比纯算法判断更直观。有时候算法说“正常”,但图上一看,残差已经在缓慢爬坡了——这就是缓变故障的前兆。
好了,这一章的内容就到这里。故障检测是容错设计的第一步,也是最重要的一步。检测不准,后面所有容错策略都是白搭。希望大家在实际项目中,能把这四个环节扎扎实实落地。
公众号:蓝海资料掘金营,微信deep3321