2、GNSS基础原理:GPS/北斗/GLONASS/Galileo系统简介、卫星定位基本原理、伪距与载波相位
各位好,欢迎来到第二章。上一章我们聊了定位漂移到底有多烦人,这一章咱们得把地基打牢——GNSS到底是怎么工作的?
说实话,我入行头两年,一直觉得GNSS就是个黑盒子,天线一接,经纬度就出来了。直到有一次在楼宇密集的CBD做路测,定位点满街乱跳,我才意识到:不懂原理,你连问题都描述不清楚。好,咱们开始。
2.1 四大全球卫星导航系统
目前全球有四个GNSS系统在运行。我习惯把它们分成两代:GPS和GLONASS是80后,北斗和Galileo是90后、00后。
| 系统 | 所属国家 | 卫星数量(约) | 轨道高度 | 特点 |
|---|---|---|---|---|
| GPS | 美国 | 31颗 | 20,200 km | 最成熟,民用L1频段 |
| 北斗 | 中国 | 30颗(含5颗GEO) | 21,528 km + 35,786 km | 有短报文通信能力 |
| GLONASS | 俄罗斯 | 24颗 | 19,130 km | 频分多址,抗干扰稍好 |
| Galileo | 欧盟 | 24颗(在轨) | 23,222 km | 民用信号精度高,免费 |
2.2 卫星定位基本原理
说白了,GNSS定位就是三件事:测距、解方程、修正误差。
你想想看,如果你知道一颗卫星的位置,又知道它到你接收机的距离,那你就在以卫星为球心的球面上。三颗卫星,三个球面交于一点——理论上就定位了。但实际中,接收机时钟和卫星时钟不同步,所以需要第四颗卫星来解出钟差。
这就是经典的四星定位原理。方程组长这样:
ρ_i = sqrt((x - x_i)² + (y - y_i)² + (z - z_i)²) + c * Δt
其中:
ρ_i —— 第i颗卫星的伪距测量值
(x_i, y_i, z_i) —— 第i颗卫星的位置(从星历解算)
(x, y, z) —— 接收机位置(待求)
Δt —— 接收机钟差(待求)
c —— 光速
四个方程,四个未知数(x, y, z, Δt),迭代求解。嗯,这里要注意:卫星位置不是固定的,它们以约3.9 km/s的速度飞过天空,所以每毫秒位置都在变。
2.3 伪距与载波相位
这是本章的重头戏。GNSS接收机有两种测距方式,我当年刚接触时也迷糊了好一阵。
2.3.1 伪距(Code Pseudorange)
伪距,就是接收机通过比对卫星发出的伪随机码和自己本地生成的码,算出信号传播时间,再乘以光速得到距离。
为什么叫「伪」?因为这里面包含了钟差、大气延迟、多径等各种误差。说白了,它不是真实几何距离,而是「带误差的距离」。
- 优点:无模糊度,直接得到绝对距离
- 缺点:精度低,民用码精度约3-5米
- 典型应用:单点定位、冷启动
2.3.2 载波相位(Carrier Phase)
载波相位测量的是接收机本地振荡器与卫星载波信号之间的相位差。因为载波波长很短(L1约19 cm),所以理论上精度可以达到毫米级。
但问题来了——相位测量只能测到不足一个波长的小数部分,整周数(N)是未知的。这就是著名的整周模糊度问题。
Φ = ρ + c * (Δt - δt) + λ * N + ε
其中:
Φ —— 载波相位观测值(以米为单位)
λ —— 载波波长
N —— 整周模糊度(整数)
ε —— 其他误差项
你看,多了个N。解出N的过程,就是模糊度固定。一旦固定了,精度就能从米级跳到厘米级。
| 对比项 | 伪距 | 载波相位 |
|---|---|---|
| 测量精度 | 分米~米级 | 毫米~厘米级 |
| 模糊度 | 无 | 有(整周模糊度N) |
| 周跳 | 无 | 容易发生 |
| 抗多径能力 | 较弱 | 较强 |
| 典型应用 | 导航、定位 | RTK、精密定位 |
2.4 本章知识体系
下面这张图,是我自己梳理的GNSS定位知识框架。每次带新人,我都会先让他们看这张图——搞清楚每个模块在干什么,漂移问题出在哪一环。
从这张图可以看得很清楚:系统层提供信号,观测层提取距离,方法层解算位置,误差层决定精度。漂移问题,本质上就是误差层里的某个因素在作怪。