第二章:GNSS基础原理
各位同学,今天我们来聊聊GNSS。说白了,就是那些在天上飞着的导航卫星,到底是怎么帮你定位的。
我刚开始接触定位时,觉得卫星导航特别神秘。后来拆开一看,核心原理其实不复杂。嗯,咱们一步步来。
2.1 全球导航卫星系统简介
GNSS,全称Global Navigation Satellite System。翻译过来就是全球导航卫星系统。目前全球有四大系统在运行:
- GPS:美国搞的,最早,1978年就开始发射卫星了
- 北斗:咱们中国的,2020年正式全球组网完成
- GLONASS:俄罗斯的,冷战时期就开始搞了
- Galileo:欧盟的,2016年开始提供服务
你可能会问:为什么要有这么多系统?
我个人习惯,在自动驾驶项目里至少用双系统。为什么?单系统万一出问题,车还在路上跑着呢。多系统融合,说白了就是多一层保险。
2.2 GPS/北斗/GLONASS/Galileo系统对比
这几个系统各有特点。我整理了一张表,方便你对比:
| 特性 | GPS | 北斗 | GLONASS | Galileo |
|---|---|---|---|---|
| 所属国家 | 美国 | 中国 | 俄罗斯 | 欧盟 |
| 卫星数量 | 31颗 | 30颗 | 24颗 | 24颗 |
| 轨道高度 | 20200km | 21500km | 19100km | 23222km |
| 定位精度 | 3-5米 | 3-5米 | 5-10米 | 1-3米 |
| 特色功能 | 成熟稳定 | 短报文通信 | 抗干扰强 | 搜救服务 |
关键点:北斗有个独门绝技——短报文通信。你在无人区没信号时,可以用北斗发短信。我在西部测试时,这功能救过急。
我记得有一次在山区做路测,GPS信号被山体遮挡,丢星严重。还好同时用了北斗和GLONASS,才把定位数据补回来。所以我的建议是:能多用几个系统,就别只用一家。
2.3 定位原理:伪距测量
好了,重头戏来了。卫星到底怎么知道你在哪?
核心原理其实就一句话:测量卫星到你接收机的距离。
怎么测?用时间。卫星发一个信号,你收到它。知道信号飞了多久,乘以光速,就是距离。
公式很简单:
距离 = 光速 × 时间差
但这里有个坑。你想想看,卫星上的时钟是原子钟,精度极高。你手里的接收机呢?石英钟,便宜货。时间对不上。
注意:接收机时钟和卫星时钟不同步,这就是「伪距」中「伪」字的来源。测出来的不是真实距离,而是带误差的「伪距离」。
我曾经在调试定位算法时,发现定位结果总是偏几米。查了半天,原来是接收机时钟漂移没处理好。嗯,这个坑我踩过。
要解决这个问题,需要至少4颗卫星。为什么是4颗?
3颗卫星解三个未知数(x, y, z)。但接收机时钟误差是第四个未知数。所以需要4颗卫星,联立四个方程:
ρ₁ = √[(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
其中ρ是伪距测量值,c是光速,Δt是接收机时钟误差。
实用技巧:实际项目中,我们通常用6-8颗卫星做解算。多出来的卫星用来做冗余校验,剔除异常值。我一般设个阈值,偏差超过3倍标准差的卫星直接扔掉。
伪距测量还有个问题——多路径效应。城市峡谷里,信号在楼宇间反射,测出来的距离就偏大。我在上海陆家嘴测试时,定位误差能到20米。后来加了载波相位平滑,才压到5米以内。
总结一下今天的内容:
- 四大GNSS系统各有千秋,建议多系统融合使用
- 伪距测量是定位基础,核心是测时间算距离
- 接收机时钟误差是主要误差源,需要4颗卫星解算
- 实际应用中要注意多路径效应等干扰
下一章我们聊IMU。惯性导航,那又是另一番天地了。