第二章 全球导航卫星系统(GNSS)基础
做组合导航这些年,我经常被问到同一个问题:GNSS到底是怎么知道我在哪的?
说实话,我刚入行时也觉得这玩意儿挺玄乎。天上几颗卫星,地上一个接收机,就能算出厘米级的位置?后来真正啃完原理,才发现背后的逻辑其实很清晰。今天我就带你把这层窗户纸捅破。
2.1 GNSS系统组成
目前全球有四大卫星导航系统在运行。我习惯把它们比作四个"星座家族":
| 系统 | 国家/地区 | 卫星数量(约) | 特点 |
|---|---|---|---|
| GPS | 美国 | 31颗 | 最成熟,民用普及度最高 |
| 北斗 | 中国 | 30颗 | 有短报文通信能力 |
| GLONASS | 俄罗斯 | 24颗 | 频分多址,抗干扰强 |
| Galileo | 欧盟 | 26颗 | 民用信号精度高 |
每个系统都由三部分组成:空间段(卫星)、地面段(监控站)和用户段(接收机)。
我在项目里最常用的组合是GPS+北斗。为什么?因为在中国区域,北斗的可见卫星数多,两者互补效果很好。你想想看,多一颗卫星,定位的几何构型就更优,精度自然就上去了。
核心要点:多系统融合不是简单的"卫星数量相加",而是要考虑各系统的时间基准和坐标基准统一。这是做组合导航的第一个坑。
2.2 卫星定位基本原理
定位原理其实就一句话:通过测量卫星到接收机的距离,解算位置。
具体怎么算?我画个图你就明白了。
数学上,这是个四元方程组:
ρ₁ = √[(x₁ - x)² + (y₁ - y)² + (z₁ - z)²] + c·Δt
ρ₂ = √[(x₂ - x)² + (y₂ - y)² + (z₂ - z)²] + c·Δt
ρ₃ = √[(x₃ - x)² + (y₃ - y)² + (z₃ - z)²] + c·Δt
ρ₄ = √[(x₄ - x)² + (y₄ - y)² + (z₄ - z)²] + c·Δt
其中ρ是伪距测量值,(x,y,z)是接收机位置,c是光速,Δt是钟差。四个方程解四个未知数,刚好。
个人经验:实际工程中,可见卫星往往超过4颗。这时候我会用最小二乘法做最优估计,而不是只挑4颗。多一颗卫星,冗余度就多一分,定位也更稳健。
2.3 伪距与载波相位观测值
这是GNSS里最核心的两个观测值。我分别说说。
2.3.1 伪距观测值
伪距,说白了就是"有误差的距离"。接收机通过测量信号从卫星到接收机的传播时间,乘以光速,得到距离。
为什么叫"伪"?因为这里面有各种误差:卫星钟差、接收机钟差、电离层延迟、对流层延迟……
伪距的精度一般在米级。我做过测试,单点定位的伪距精度大概3-5米。够用吗?导航够用,但做RTK厘米级定位,远远不够。
2.3.2 载波相位观测值
载波相位就厉害了。它测量的是卫星发射的载波信号到达接收机时的相位差。
GPS的L1载波频率是1575.42MHz,波长约19厘米。相位测量精度可以做到波长的1%甚至更高,也就是毫米级。
但有个大问题——整周模糊度。相位测量只能测到不足一周的小数部分,整周数N是未知的。
避坑指南:我曾经在一个项目中,整周模糊度解错了,导致定位结果偏了十几厘米。查了两天才发现是周跳没处理好。所以做RTK,周跳检测和修复是基本功,千万别偷懒。
载波相位的观测方程长这样:
Φ = ρ + c·(dt - dT) + λ·N + I + T + ε
其中Φ是载波相位观测值,λ是波长,N是整周模糊度,I是电离层延迟,T是对流层延迟,ε是噪声。
2.4 导航电文结构
导航电文,就是卫星广播给接收机的"自我介绍"。里面包含了卫星的轨道参数、钟差参数、健康状态等信息。
以GPS为例,导航电文的结构是这样的:
| 层级 | 长度 | 内容 |
|---|---|---|
| 超帧 | 25帧 × 1500bit = 37500bit | 完整星历+历书,12.5分钟播完 |
| 帧 | 5子帧 × 300bit = 1500bit | 30秒播完一帧 |
| 子帧 | 10字 × 30bit = 300bit | 6秒播完一个子帧 |
| 字 | 30bit | 0.6秒播完一个字 |
子帧1-3播的是该卫星的星历(精确轨道参数),子帧4-5播的是历书(所有卫星的概略轨道)。
我记得刚做接收机开发时,为了解析导航电文,对着协议看了整整三天。后来发现,其实核心就两个东西:星历用于定位,历书用于搜星。
工程要点:导航电文的更新周期是2小时。也就是说,如果你接收机断电超过2小时,重新开机后需要重新下载星历。这就是为什么冷启动比热启动慢得多——冷启动要等卫星把整帧电文播完。
北斗的导航电文结构和GPS类似,但帧格式略有不同。北斗的D1导航电文速率是50bps,D2是500bps。速率越高,播完一轮的时间越短,这也是北斗的一个优势。
好了,GNSS基础就聊到这儿。这些概念是后面理解RTK和INS融合的基石。尤其是伪距和载波相位,后面讲差分定位时会反复用到。