4. 失锁检测与识别

失锁并不是一个瞬时事件,而是一个从“跟踪质量下降”到“环路失锁”再到“观测量不可用”的渐变过程。工程上真正困难的地方在于:接收机往往在完全失锁前仍能输出观测量,但这些观测量已经严重偏离真实值。因此,失锁检测的核心任务是尽早识别异常,并在观测量污染定位解之前将其隔离。本节围绕四类互补的检测量展开:载噪比、跟踪环路参数、残差检验和新息序列。

核心思想:单一指标容易误判,四类检测量分别从信号强度、环路动态、观测一致性、滤波一致性四个维度交叉验证,构成“由外到内”的失锁识别链。
失锁检测四维检测量与判决链 GNSS 中频信号 捕获 → 跟踪通道 ① 载噪比 C/N₀ 信号强度维度 阈值:约 28–35 dB-Hz ② 跟踪环路参数 环路动态维度 鉴相器/鉴频器输出 ③ 残差检验 观测一致性维度 伪距/多普勒残差 ④ 新息序列 滤波一致性维度 卡尔曼新息统计 多指标融合判决 加权 / 投票 / 序贯 滑动窗口统计 连续 N 次超限 迟滞与去抖 置信度输出 0 ~ 1 失锁概率 正常跟踪 观测量可用 疑似失锁 降权 / 短时保持 确认失锁 隔离 / 重捕 四类检测量互补:强度 → 动态 → 一致性 → 滤波一致性,逐层收紧误判空间

一、四类检测量的原理与适用边界

载噪比(C/N₀)是最直观的指标,反映接收信号功率与噪声谱密度之比。当信号被遮挡、衰减或干扰时,C/N₀ 会先于环路失锁下降。其优点是计算简单、无需额外状态;缺点是响应较慢,且在弱信号但环路仍稳定时容易误报。工程上常设两级阈值:低于 35 dB-Hz 进入“关注”,低于 28 dB-Hz 进入“告警”。

跟踪环路参数包括鉴相器输出、鉴频器输出、环路滤波器状态和 I/Q 支路幅度。当动态应力增大或信号畸变时,鉴相器输出会出现持续偏置或抖动加剧。相比 C/N₀,环路参数对失锁的响应更快,但噪声也更大,需要配合滑动平均或方差统计使用。

残差检验从定位解算层面反推观测异常。对伪距残差、多普勒残差进行卡方检验或标准化残差检验,可以识别出与其余卫星不一致的观测。其优势是能发现“信号强度正常但观测值错误”的情况,例如多径或欺骗干扰;缺点是需要足够的冗余观测,且受最小二乘或卡尔曼滤波模型影响。

新息序列是卡尔曼滤波中观测预测值与实际观测值之差。正常跟踪时,新息应近似零均值白噪声;失锁或观测异常时,新息会出现均值偏移或方差突增。对新息做 NIS(归一化新息平方)检验或 CUSUM 累积和检验,可以在滤波框架内实现最优检测。

二、阈值设计方法与参数建议

阈值设计不能只靠经验拍脑袋,应结合统计特性和场景需求。常用方法包括:基于历史数据的均值±k倍标准差、基于卡方分布的统计检验阈值、以及基于误报率/漏报率权衡的 ROC 曲线法。下表给出四类检测量的典型阈值与工程建议。

检测量 典型阈值 响应速度 主要误判来源 工程建议
载噪比 C/N₀ 关注 35 dB-Hz;告警 28 dB-Hz 慢(秒级) 弱信号、天线增益变化 作为一级粗筛,配合迟滞
鉴相器/鉴频器输出 |Δφ| > 15°;|Δf| > 5 Hz 快(毫秒级) 动态应力、热噪声 滑动窗口方差联合判决
伪距/多普勒残差 标准化残差 > 3σ;卡方检验 α=0.01 中(解算周期) 多径、粗差、模型误差 需冗余观测,配合 RAIM
新息序列 NIS NIS > χ²(0.99);CUSUM > 5σ 中快(滤波周期) 滤波模型失配、初值偏差 自适应调整 R 矩阵

三、融合判决流程与代码示例

实际工程中,四类检测量不会各自独立报警,而是通过融合判决输出统一的失锁置信度。典型流程为:先做单指标超限判断,再进行滑动窗口计数,最后通过状态机输出“正常 / 疑似 / 确认”三态。以下伪代码展示了融合判决的核心逻辑。

# 失锁检测融合判决伪代码
def lock_detection(cn0, phase_err, freq_err, residual, nis):
    # 单指标超限标志
    flag_cn0  = 1 if cn0 < 28 else 0
    flag_loop = 1 if (abs(phase_err) > 15 or abs(freq_err) > 5) else 0
    flag_res  = 1 if abs(residual) > 3 * sigma_res else 0
    flag_nis  = 1 if nis > chi2_threshold else 0

    # 加权融合,权重按场景可调
    score = (0.25 * flag_cn0 + 0.30 * flag_loop +
             0.25 * flag_res + 0.20 * flag_nis)

    # 滑动窗口计数与迟滞判决
    window.append(score)
    if sum(window[-5:]) >= 3:
        return "CONFIRMED_LOSS"   # 确认失锁,隔离并重捕
    elif sum(window[-5:]) >= 1:
        return "SUSPECT_LOSS"     # 疑似失锁,降权保持
    else:
        return "NORMAL"           # 正常跟踪
调参提示:权重和窗口长度应根据场景调整。城市峡谷中多径严重,应提高残差和新息的权重;高动态场景中应提高环路参数的权重;弱信号场景中应降低 C/N₀ 的权重,避免频繁误报。

四、典型场景与误区复盘

场景一:城市峡谷多径。信号强度可能正常,但伪距残差和新息会显著增大。此时若只看 C/N₀,会漏报;应重点依赖残差检验和新息序列,并对多径卫星降权。

场景二:高动态机动。环路鉴相器和鉴频器输出会因动态应力而剧烈波动,C/N₀ 可能仍较高。此时应提高环路参数权重,并适当放宽残差阈值,避免将动态应力误判为失锁。

场景三:弱信号室内。C/N₀ 长期低于阈值,但环路可能仍勉强锁定。此时应结合新息方差判断,若新息仍为白噪声,可维持跟踪;若新息出现偏移,则确认失锁。

常见误区:① 只用单一阈值,导致误报或漏报;② 阈值长期不更新,无法适应场景变化;③ 忽略迟滞与去抖,导致状态频繁跳变;④ 将“疑似失锁”直接当作“确认失锁”,过早隔离可用观测,反而降低定位可用性。

综上,失锁检测的关键在于“多维度交叉验证 + 统计阈值设计 + 状态机融合判决”。载噪比提供粗筛,环路参数提供快速响应,残差检验提供观测一致性约束,新息序列提供滤波一致性约束。四者互补,才能在复杂场景下实现既灵敏又稳健的失锁识别。