2、全球导航卫星系统(GNSS)基础:GPS/北斗/GLONASS/Galileo系统架构、定位原理、误差源分析

各位同学,咱们今天聊聊GNSS。说白了,就是天上的卫星给你报位置。我最早接触这个,是在一个隧道口的测试项目上。当时GPS信号一丢,列车定位直接跳变,吓得我一身冷汗。从那以后,我就明白了一个道理:搞自动驾驶列车,不懂GNSS的底细,迟早要踩坑。

2.1 四大系统架构:谁在天上给你指路?

目前全球有四大GNSS系统。它们各有各的脾气,但核心逻辑差不多。我习惯把它们比作四个“导航俱乐部”。

系统 国家/地区 卫星数量(约) 轨道高度 特点
GPS 美国 31颗 20200 km 最成熟,民用普及
北斗 中国 30颗 21500 km 有短报文通信,区域增强
GLONASS 俄罗斯 24颗 19100 km 高纬度覆盖好
Galileo 欧盟 26颗 23222 km 精度高,搜救功能

你想想看,为什么要有这么多系统?说白了,就是怕一个系统出问题。我在项目里就遇到过,单GPS在城市峡谷里信号被遮挡,定位直接飘到隔壁车道。后来我们用了多系统融合,情况就好多了。

核心要点:自动驾驶列车通常采用多星座接收机,同时接收GPS+北斗+GLONASS信号。这样能保证在任何时刻,至少看到10颗以上的卫星。

2.2 定位原理:三球交汇与时间同步

GNSS定位的原理,其实特别简单。你想想看,每个卫星都在广播自己的位置和发射时间。接收机收到信号后,算出信号飞了多久,乘以光速,就知道距离了。

嗯,这里要注意:光速大约是30万公里每秒。信号从卫星到地面,大概要飞0.07秒。这个时间差,就是定位的关键。

具体来说,定位需要解一个四元方程:

// 伪距观测方程
ρ_i = √[(x_i - x_u)² + (y_i - y_u)² + (z_i - z_u)²] + c * Δt

其中:
ρ_i = 第i颗卫星的伪距测量值
(x_i, y_i, z_i) = 第i颗卫星的位置
(x_u, y_u, z_u) = 接收机的位置(未知)
c = 光速
Δt = 接收机时钟误差(未知)

为什么叫“伪距”?因为测量出来的距离包含了时钟误差。我刚开始做定位算法时,总想把这个误差去掉,后来发现根本去不掉——接收机的石英钟和卫星的原子钟,精度差了好几个数量级。

所以,解这个方程需要至少4颗卫星。3颗解位置,1颗解时间。这就是为什么你手机导航时,搜到4颗星才能定位。

避坑指南:我曾经在测试中发现,如果卫星几何分布不好(比如都在头顶),定位精度会变差。这个叫DOP(精度因子)。DOP值越小越好,一般要求小于3。

2.3 误差源分析:谁在捣乱?

定位不准,不是卫星的错。误差来源主要有这么几个。我按影响大小排个序:

  1. 电离层延迟(影响最大,可达5-15米)
  2. 对流层延迟(2-5米)
  3. 卫星轨道误差(1-2米)
  4. 卫星时钟误差(1-2米)
  5. 多路径效应(0.5-10米,看环境)
  6. 接收机噪声(0.1-0.5米)

你想想看,最头疼的是哪个?我个人觉得是多路径效应。在列车经过高架桥、隧道口、或者站台雨棚时,信号反射特别严重。我遇到过最夸张的一次,定位直接跳了30米,列车紧急制动,乘客差点摔倒。

警告:在轨道交通场景中,多路径效应是最大的隐形杀手。它不像电离层延迟那样有规律可循,完全取决于周围环境。建议在关键区段(如道岔、站台)部署地面差分基站。

怎么对付这些误差?常用的方法有:

  • 差分GPS(DGPS):地面基站算出差分修正量,发给列车。能消除大部分公共误差。
  • RTK(实时动态定位):利用载波相位测量,精度能到厘米级。但需要基站和列车之间通信良好。
  • 多频接收:比如GPS的L1/L2/L5频段,利用不同频率的电离层延迟差异,直接建模消除。

我记得有一次在高铁测试线上,我们用RTK配合惯性导航,在隧道口实现了无缝切换。定位精度从10米直接降到0.1米。那一刻,我觉得所有加班都值了。

2.4 列车场景下的特殊考量

最后说点实际的。在自动驾驶列车上用GNSS,有几个坑必须注意:

  • 隧道内无信号:这是硬伤。必须配合惯性导航或里程计。
  • 高架桥下信号遮挡:卫星被桥体挡住,可见星数骤降。
  • 电气化铁路的电磁干扰:受电弓产生的电弧,会干扰接收机。
  • 列车速度高:300 km/h时,多普勒频移明显,接收机需要快速跟踪。

嗯,这里要特别强调一下。我曾经在一条电气化铁路测试时,发现GNSS接收机在受电弓通过时,定位会突然丢失。后来排查发现,是电弧产生的宽带电磁噪声,直接把接收机的前端放大器给饱和了。解决方案是加装带通滤波器,并调整天线安装位置。

好了,这一章就到这里。下一章我们聊聊惯性导航系统,那是另一个有意思的话题。