GNSS 高级篇
6 跟踪算法
6.1 载波跟踪环原理深究
捕获找到了信号的"大概位置",接下来跟踪环要做的是:把信号"锁死",持续、精确地跟踪载波相位和码相位的变化。
在正式开始前,请大家思考几个问题:
1,捕获给出的频率估计只有几百 Hz 的精度,但定位需要的是厘米级——载波跟踪环是怎么把频率精度从几百 Hz 提升到几 Hz 甚至 0.1Hz 的?
2,什么是锁相环(PLL)?为什么 GNSS 跟踪要用 PLL?它跟我们常说的"环路"是什么关系?
3,跟踪环有"带宽"这个参数——带宽宽了好还是窄了好?为什么不同场景要选不同的带宽?
4,什么是"周跳"?为什么周跳是 RTK 的噩梦?载波跟踪环怎么减少周跳?
接下来我们深入载波跟踪环的内部,看看这个"精密锁相"的机制是怎么工作的。
6.1.1 跟踪环的基本结构
GNSS 接收机的跟踪环,本质上是一个反馈控制系统——不断比较接收信号和本地信号的差异,然后调整本地信号,让差异趋近于零。
a. 跟踪环的三大组成
一个典型的跟踪通道包含三个环:
载波跟踪环(PLL,锁相环):跟踪载波的相位和频率
- 输入:下变频后的 I/Q 信号
- 输出:载波相位、载波频率(多普勒)
- 测量值:载波相位(用于 RTK)、多普勒频率(用于速度解算)
码跟踪环(DLL,延迟锁定环):跟踪伪随机码的相位
- 输入:解扩后的相关结果
- 输出:码相位(伪距)
- 测量值:伪距(用于定位)
比特同步/帧同步:找到数据比特的边界,解调出电文
- 在载波和码都锁定后进行
- 输出:导航电文比特流
三个环协同工作:载波环提供频率参考,码环提供时间参考,比特同步提供数据。
b. 载波环的基本流程
载波跟踪环的工作流程:
- 接收信号跟本地载波(NCO 生成)相乘,得到 I(同相)和 Q(正交)两路信号
- I/Q 信号跟本地码做相关,得到相关结果
- 载波相位鉴别器根据 I/Q 相关结果,计算本地载波跟接收载波的相位差
- 环路滤波器对相位差做滤波(平滑、降噪)
- 滤波结果送给载波 NCO,调整本地载波的频率和相位
- 回到步骤 1,持续循环
这是一个典型的负反馈闭环——相位差大了,NCO 就多调一点;相位差小了,就少调一点。最终稳态时,本地载波跟接收载波保持同步。
6.1.2 锁相环(PLL)的数学原理
a. 相位鉴别器
相位鉴别器是 PLL 的"眼睛"——它判断本地载波跟接收信号的相位差有多大。
常用的鉴别器:
二象限反正切:atan(Q/I)
- 最简单,直接计算相位差
- 只在 ±90° 范围内线性
- 适用于有导频或已知比特的情况
四象限反正切:atan2(Q, I)
- 范围 ±180°,更全面
- 计算量大一些
Costas 鉴别器:I×Q(或归一化版本)
- 不需要知道数据比特,对电文翻转不敏感
- 适用于数据分量的跟踪
- 有"平方损耗",性能比纯 PLL 略差
鉴别器的输出是相位误差——这个误差经过环路滤波器后,用来调整 NCO。
b. 环路滤波器
环路滤波器是 PLL 的"大脑"——它决定了怎么响应相位误差。
最常用的是二阶或三阶环路滤波器:
- 一阶环:只有比例项,简单但有稳态误差
- 二阶环:比例 + 积分,可以消除稳态频率误差
- 三阶环:比例 + 积分 + 二阶积分,可以消除稳态频率率误差,适合高动态
阶数越高,能跟踪的动态越大,但稳定性越难保证。
GNSS 接收机常用二阶或三阶环——二阶环适合中低动态,三阶环适合高动态。
c. 环路噪声带宽
环路噪声带宽(Bn)是跟踪环最重要的参数之一——它决定了环路对噪声的抑制能力和对动态的响应能力。
- 宽带宽:响应快,能跟上快速变化,但噪声大,跟踪精度低
- 窄带宽:噪声小,跟踪精度高,但响应慢,跟不上快速变化
这是一个根本的权衡——没有"最好"的带宽,只有"最合适"的带宽。
典型带宽选择:
- 开阔场地、低动态:10~15Hz(窄带,高精度)
- 城市环境、中动态:15~25Hz(中等)
- 高动态(车载、无人机):25~40Hz(宽带,跟得上)
- 极高动态(导弹):50Hz 以上
d. 跟踪精度跟什么有关?
载波跟踪环的相位测量精度(热噪声)公式:
σ_PLL = λ / (2π) × sqrt(Bn / (C/N0) × (1 + 1/(T×C/N0)))
其中:
- λ 是载波波长(L1 约 19cm)
- Bn 是环路带宽
- C/N0 是载噪比
- T 是积分时间
可以看出:
- 载噪比越高,精度越高(信号强当然更准)
- 环路带宽越窄,精度越高(噪声少)
- 积分时间越长,精度越高(平均掉更多噪声)
在良好条件下(C/N0 = 45dB-Hz,Bn = 10Hz),载波相位测量精度可以达到 0.1mm 量级——这就是 RTK 能做到厘米级的基础。
6.1.3 PLL、FLL、Costas 环:三种载波跟踪模式
载波跟踪不是只有一种模式——根据信号条件和应用场景,有三种常用模式。
a. PLL(锁相环)
- 跟踪载波相位
- 精度最高(相位测量)
- 对动态敏感——高动态下容易失锁
- 需要数据比特同步(否则比特翻转会破坏相位)
- 适用于信号强、动态低的场景
b. FLL(锁频环)
- 跟踪载波频率(而不是相位)
- 精度比 PLL 低(频率测量,对应速度)
- 对动态不敏感——高动态下更稳定
- 不受比特翻转影响(频率跟比特翻转无关)
- 适用于高动态、弱信号场景,或作为 PLL 的辅助
c. Costas 环
- 一种特殊的 PLL,对数据比特翻转不敏感
- 用 I×Q 作为鉴别器,比特翻转时 I 和 Q 同时变号,乘积不变
- 有平方损耗(约 3dB),性能比纯 PLL 差
- 适用于数据分量的跟踪(没有导频的老信号)
实际接收机通常是"FLL + PLL"混合模式:
- 刚捕获时,频率误差大,用 FLL 先把频率拉准
- 频率锁定后,切换到 PLL 做精密相位跟踪
- 高动态时,自动切换回 FLL 或增大带宽
- 弱信号时,用 Costas 环或导频分量
这种自适应切换,让跟踪环在各种条件下都能稳定工作。
6.1.4 周跳:载波跟踪的"噩梦"
a. 什么是周跳?
载波相位测量是"相对"的——跟踪环只能测量相位的小数部分,整数部分(整周模糊度)是未知的。
只要跟踪不中断,整周模糊度保持不变,载波相位测量值是连续的。
但如果跟踪环短暂失锁又重新锁定,整周模糊度可能跳变一个整数——这就是"周跳"(Cycle Slip)。
周跳的表现:载波相位测量值突然跳变 N 个整周(N 是整数),但伪距没有对应跳变。
b. 周跳的原因
- 信号被遮挡(城市峡谷、树荫、室内)
- 强干扰导致载噪比骤降
- 高动态下跟踪环失锁
- 晶振抖动或相位噪声过大
- 多径导致相关峰畸变
c. 周跳的危害
对于普通定位(用伪距),周跳影响不大——因为伪距不受周跳影响。
但对于 RTK(用载波相位),周跳是致命的——整周模糊度变了,之前的解算全部作废,需要重新固定模糊度。
RTK 中,一次周跳可能导致定位从厘米级退回到米级,需要几秒到几十秒才能重新固定。
d. 怎么减少周跳?
硬件层面:
- 用好的晶振(低相位噪声、高稳定度)
- 好的射频设计(低噪声、高线性度)
- 多天线/抗干扰设计
算法层面:
- 自适应带宽——信号弱时自动收窄带宽,减少噪声
- FLL 辅助 PLL——频率稳定了,相位才不容易跳
- 惯导辅助——用 IMU 预测多普勒,减轻跟踪环压力
- 周跳检测与修复——用 MW 组合、GF 组合等方法检测周跳,并用算法修复
- 多频观测——一个频点周跳了,其他频点可以辅助修复
e. 周跳检测
常用的周跳检测方法:
- 多普勒积分检验:载波相位变化应该跟多普勒积分一致,不一致就有周跳
- Melbourne-Wübbena 组合:码相位和载波相位的组合,对周跳敏感
- Geometry-Free 组合:双频载波相位差,检测周跳
- 高阶差分:相位的高阶差分应该平滑,突变就是周跳
好的接收机,周跳检测率可以做到 99% 以上,小周跳(1 周)也能检测到。
6.1.5 载波跟踪的性能指标
| 指标 | 含义 | 典型值 |
|---|---|---|
| 跟踪灵敏度 | 能维持跟踪的最弱载噪比 | 25~35 dB-Hz |
| 相位测量精度 | 载波相位热噪声 | 0.1~1mm(良好条件) |
| 频率测量精度 | 多普勒测量精度 | 0.01~0.1Hz |
| 失锁概率 | 单位时间内失锁的概率 | < 0.1%/小时(良好条件) |
| 周跳率 | 单位时间内周跳次数 | < 1次/小时(开阔场地) |
| 最大跟踪动态 | 能稳定跟踪的最大加速度/加加速度 | 跟环路阶数和带宽有关 |
小结一下:
载波跟踪环是一个精密的反馈控制系统——用 PLL 锁定相位,用 FLL 锁定频率,用 Costas 环应对数据比特。
环路带宽是核心权衡参数——窄带高精度但响应慢,宽带跟动态但噪声大。
周跳是载波跟踪的"阿喀琉斯之踵"——硬件和算法两方面都要下功夫才能减少周跳。
载波相位的毫米级测量精度,是 RTK 厘米级定位的基础。
下一节,我们讲码跟踪环(DLL)——伪距测量是怎么来的,码跟踪环跟载波环有什么不同。