4、伪距测量原理:C/A码、P码,伪距是怎么测出来的?误差从哪来?
伪距测量,说白了就是GPS接收机跟卫星之间“测距离”的基本功。你想想看,卫星在天上飞,接收机在地上跑,怎么知道它们之间有多远?
我刚开始接触这个领域的时候,也觉得挺神奇的。后来才明白,原理其实不复杂——就是测时间。卫星发一个信号,接收机收到它,中间花了多少时间,乘以光速,距离就出来了。
但问题来了:这个“时间差”怎么测?用什么信号测?测出来为什么叫“伪距”?误差又从哪里冒出来的?
嗯,咱们一个一个说。
4.1 测距码:C/A码和P码
GPS卫星发射的信号,本质上是一个载波,上面调制了两种码:C/A码(粗捕获码)和P码(精密码)。
我习惯把C/A码叫做“民用码”,P码叫做“军用码”。虽然现在L2C、L5这些新信号也出来了,但C/A码和P码仍然是理解伪距测量的基础。
| 特性 | C/A码 | P码 |
|---|---|---|
| 码速率 | 1.023 MHz | 10.23 MHz |
| 码长 | 1023 码片 | 约 6.1871 × 10¹² 码片 |
| 重复周期 | 1 毫秒 | 7 天 |
| 测距精度 | 约 3 米(码片级) | 约 0.3 米(码片级) |
| 主要用途 | 民用、快速捕获 | 军用、高精度 |
你可能会问:为什么C/A码的测距精度比P码差一个数量级?
原因很简单。码速率越高,每个码片对应的时间越短,距离分辨率就越高。C/A码一个码片对应约293米,P码一个码片对应约29.3米。接收机一般能做到码片级的1%~10%的跟踪精度,所以C/A码的理论精度在3米左右,P码在0.3米左右。
4.2 伪距是怎么测出来的?
伪距测量的核心,就是码相关。
接收机内部会自己产生一个C/A码的副本,然后跟卫星发下来的信号做相关运算。当两个码对齐的时候,相关值最大。这个“对齐”的时间偏移量,就是信号传播的时间。
我画了一张图,帮你理解这个过程:
伪距的数学表达式很简单:
ρ = c × (t_r - t_s)
其中:
ρ = 伪距测量值(米)
c = 光速(299792458 m/s)
t_r = 接收机收到信号时的本地时间
t_s = 卫星发射信号时的卫星时间
但这里有个坑——t_r和t_s不是同一个时钟。卫星用的是星载原子钟,接收机用的是石英钟。两个钟之间有时间差,所以测出来的距离不是真距,而是“伪距”。
伪距的完整观测方程:
ρ = r + c × (δt_r - δt_s) + I + T + ε
其中 r 是真实几何距离,δt_r 是接收机钟差,δt_s 是卫星钟差,I 是电离层延迟,T 是对流层延迟,ε 是测量噪声。
你看,伪距里藏了这么多东西。定位的过程,其实就是从伪距里把这些误差项一个一个剥离出来。
4.3 误差从哪来?
伪距的误差来源,我习惯分成三大类:卫星端、传播路径端、接收机端。
咱们一个一个看。
4.3.1 卫星端误差
- 卫星钟差:星载原子钟虽然准,但也不是绝对精确。卫星钟差通常在几纳秒到十几纳秒,对应几米的距离误差。广播星历里会发钟差修正参数,但修正后仍有残差。
- 轨道误差:卫星的实际位置跟广播星历算出来的位置有偏差。广播星历的轨道误差一般在1~2米,精密星历可以做到厘米级。
- 相对论效应:卫星在高速运动,引力场也比地面弱,时钟会变快。GPS系统已经做了频率补偿,但残差仍然存在。
4.3.2 传播路径误差
这是伪距误差里最大的一块。我做过一个项目,在赤道附近测试,电离层延迟最大能到30米以上。
- 电离层延迟:信号穿过电离层时,传播速度会变慢(对码相位而言)。延迟量跟频率的平方成反比,所以双频接收机可以消除它。单频接收机只能靠模型修正,修正后残差仍有5~10米。
- 对流层延迟:对流层对信号也有延迟,但它是非色散的,跟频率无关。延迟量在2~25米之间,取决于卫星仰角和气象条件。
- 多路径效应:信号从建筑物、地面反射后进入接收机,跟直射信号叠加,造成测距误差。多路径误差很难建模,是城市环境下的主要误差源。
4.3.3 接收机端误差
- 接收机钟差:石英钟的稳定性远不如原子钟,漂移量很大。好在定位解算时会把接收机钟差当作未知数一起估计,所以它不直接影响定位精度,但会影响伪距观测值的质量。
- 码跟踪噪声:接收机在跟踪C/A码时,相关峰检测会有随机误差。这个噪声跟信号强度、带宽、相关器设计都有关系。
- 通道间偏差:不同射频通道的硬件延迟不一样,会造成通道间的伪距偏差。好的接收机会做通道校准。
4.4 误差量级一览
我把典型误差量级整理成了表格,方便你参考:
| 误差源 | 典型量级(1σ) | 能否消除/削弱 |
|---|---|---|
| 卫星钟差残差 | 0.5~1.0 m | 差分定位可消除 |
| 轨道误差 | 1.0~2.0 m | 精密星历、差分定位 |
| 电离层延迟 | 2.0~30.0 m | 双频消除、模型削弱 |
| 对流层延迟 | 2.0~25.0 m | 模型削弱、参数估计 |
| 多路径效应 | 0.5~10.0 m | 天线设计、抗多径算法 |
| 接收机噪声 | 0.1~1.0 m | 高带宽、高精度跟踪 |
4.5 小结
伪距测量是GNSS定位的基石。C/A码和P码提供了测距信号,码相关技术把传播时间提取出来,乘以光速就得到了伪距。但伪距里塞满了各种误差——卫星钟差、轨道误差、电离层、对流层、多路径、接收机噪声……
你想想看,如果直接拿原始伪距去定位,精度大概在10米左右。但如果我们能把这些误差一项一项地建模、消除,精度就能从10米降到1米,甚至厘米级。
嗯,这就是后面几章要讲的内容了。