第二章: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。惯性导航,那又是另一番天地了。