4. 全球导航卫星系统(GNSS)原理:GPS/北斗/GLONASS/Galileo概述、伪距与载波相位观测、单点定位与差分定位

4.1 四大系统,各有千秋

做多传感融合这些年,我打交道最多的就是GNSS。说白了,GNSS就是让接收机知道自己在地球上哪儿的系统。目前全球有四大系统:美国的GPS、中国的北斗、俄罗斯的GLONASS、欧盟的Galileo。

GPS 是最老的,1978年就开始干活了。我刚开始做导航那会儿,能用的只有GPS。它的轨道高度约20200公里,有31颗卫星在轨。信号是CDMA的,L1频段1575.42MHz。优点是稳定,缺点是容易受干扰。

北斗 是后起之秀。我个人特别喜欢它的短报文功能——能发短信,这在野外救援时太有用了。北斗采用混合星座,有GEO、IGSO、MEO三种轨道。GEO卫星在赤道上空静止,覆盖亚太地区特别好。嗯,这里要注意:北斗三号已经全球组网,2020年就正式开通了。

GLONASS 是俄罗斯的,跟GPS不太一样。它用FDMA,每颗卫星频率不同。轨道高度19100公里,倾角64.8度。在高纬度地区,GLONASS的覆盖比GPS好。我在北极圈附近做过测试,确实如此。

Galileo 是欧盟的,2016年才开始提供初始服务。它的特点是精度高,免费信号也能到米级。轨道高度23222公里,比GPS高。Galileo的搜救功能很强大,能反向确认求救信号已收到。

系统 国家 卫星数 轨道高度 信号体制
GPS 美国 31 20200 km CDMA
北斗 中国 30+ 混合轨道 CDMA
GLONASS 俄罗斯 24 19100 km FDMA
Galileo 欧盟 26 23222 km CDMA
我的经验: 多系统融合能显著提升可用性。在城市峡谷里,单GPS可能只能看到4颗星,加上北斗和GLONASS,能到12颗以上。定位精度和可靠性都上去了。

4.2 伪距观测:测距的基本功

伪距是什么?就是卫星到接收机的距离,但带误差。你想想看,卫星发信号,接收机收信号,时间差乘以光速就是距离。但卫星钟和接收机钟不同步,所以叫「伪」距。

伪距观测方程长这样:

ρ = r + c*(δt_u - δt_s) + I + T + ε

其中:

  • ρ 是伪距观测值
  • r 是真实几何距离
  • c 是光速
  • δt_u 是接收机钟差
  • δt_s 是卫星钟差
  • I 是电离层延迟
  • T 是对流层延迟
  • ε 是测量噪声

我遇到过最头疼的事,就是电离层延迟。白天和晚上能差好几米。单频接收机只能用模型修正,效果一般。双频接收机可以直接消除电离层影响,好很多。

核心要点: 伪距精度一般在米级。C/A码精度3-5米,P码精度0.3-1米。对于普通导航够用,但做高精度定位就不行了。

4.3 载波相位观测:高精度的秘密武器

载波相位观测,说白了就是测卫星信号的相位差。精度能到毫米级,比伪距高两个数量级。为什么会这样?因为载波波长短啊——L1波长19cm,L2波长24cm。测相位比测码容易得多。

但载波相位有个大问题:整周模糊度。你只能测到小数部分,整数部分不知道。就像你只知道钟表指针的位置,但不知道是几点。

载波相位方程:

φ = r/λ + N + (δt_u - δt_s)*c/λ - I/λ + T/λ + ε

N就是整周模糊度,是个整数。解出N的过程叫「固定模糊度」。我做过一个项目,在城市里固定模糊度特别难,因为多路径效应严重。后来用了LAMBDA方法,成功率才上去。

注意: 载波相位观测值容易发生周跳。就是信号中断后,整周计数断了。处理周跳是数据预处理的关键步骤。我建议用TurboEdit方法,效果不错。

4.4 单点定位:最简单的定位方式

单点定位,就是只用一台接收机,接收卫星信号算位置。原理很简单:解四个方程(三个位置坐标加一个钟差),需要至少四颗卫星。

定位步骤:

  1. 接收卫星星历,知道卫星位置
  2. 测量伪距,得到距离观测值
  3. 建立观测方程,线性化
  4. 用最小二乘法求解

精度怎么样?单频C/A码,水平精度5-10米,高程精度10-15米。双频P码,能到3-5米。我做过测试,在开阔地带,单点定位的RMS大概在4米左右。

单点定位的误差来源:

  • 卫星轨道误差:1-2米
  • 卫星钟差:1-2米
  • 电离层延迟:2-10米
  • 对流层延迟:0.5-2米
  • 多路径效应:0.5-5米
  • 接收机噪声:0.3-1米
避坑指南: 我曾经在隧道口做测试,信号刚出来时,定位会跳好几米。这是因为卫星几何构型突然变化。建议加一个滤波器,比如卡尔曼滤波,能平滑过渡。

4.5 差分定位:消除公共误差

差分定位的原理很简单:两个接收机,一个在已知位置(基准站),一个在未知位置(流动站)。公共误差(卫星钟差、轨道误差、电离层、对流层)可以差分掉。

差分方式有三种:

类型 原理 精度 作用距离
位置差分 基准站位置修正 1-3米 100 km
伪距差分 伪距观测值修正 0.5-1米 200 km
载波相位差分(RTK) 载波相位观测值差分 厘米级 10-20 km

RTK(实时动态差分)是我用得最多的。它用载波相位观测值做差分,固定模糊度后,精度能到1-2厘米。我在自动驾驶项目里就用RTK,车道级定位完全没问题。

RTK的关键步骤:

  1. 基准站发送原始观测值
  2. 流动站接收,做双差
  3. 解算整周模糊度
  4. 固定模糊度,得到厘米级位置
我的建议: 差分定位虽然精度高,但依赖数据链路。基准站到流动站的数据传输不能断。我建议用4G或电台,双链路备份。另外,作用距离超过20公里时,电离层残差会变大,RTK精度会下降。

4.6 知识体系总览

下面这张图,是我梳理的本章知识结构。你看一眼,心里就有数了。

GNSS定位原理知识体系 四大卫星系统 GPS 北斗 GLONASS Galileo 观测值类型 伪距观测 载波相位 米级精度 毫米级精度 定位方法 单点定位 差分定位 精度5-10m 精度cm级 差分定位三种方式 位置差分 精度1-3m 伪距差分 精度0.5-1m RTK 精度cm级 主要误差来源 卫星轨道误差 电离层延迟 对流层延迟 多路径效应 接收机噪声

这张图把本章的核心内容串起来了。从四大系统出发,到两种观测值,再到两种定位方法,最后是差分方式和误差来源。你把它记在脑子里,GNSS原理这块就通了。

最后说一句: 做多传感融合,GNSS只是其中一环。但这一环很重要。我建议你动手写一个伪距单点定位的程序,哪怕精度只有10米,也能帮你理解整个流程。代码写一遍,比看十遍书都管用。

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