2、全球导航卫星系统(GNSS)基础:GNSS系统组成、定位原理、误差源分析
各位同学好,我是老张。今天咱们聊聊GNSS,也就是全球导航卫星系统。说实话,搞自动驾驶这些年,我见过太多人把GNSS想得太简单,觉得不就是个GPS嘛。其实这里面的门道,比你想象的多得多。
2.1 GNSS系统组成:天上飞的,地上跑的,手里拿的
GNSS系统说白了,就是三大部分:空间段、地面段、用户段。我习惯叫它们「天上的、地上的、手里的」。
2.1.1 空间段——卫星星座
目前全球有四大卫星导航系统:
- GPS(美国):24颗卫星,全球覆盖最成熟。我记得2010年第一次做车载导航时,用的就是GPS L1频段,那时候精度也就10米左右。
- 北斗(中国):目前有30多颗卫星,特色是短报文通信。我在项目里用过北斗+GPS双频,效果确实比单GPS好。
- GLONASS(俄罗斯):24颗卫星,频率分多址。说实话,早期GLONASS的稳定性一般,但近几年改善不少。
- 伽利略(欧盟):目前30颗左右,精度号称1米以内。我还没在实际量产车上用过,但测试过,确实不错。
关键点:自动驾驶中,我们通常使用多系统融合。比如GPS+北斗+GLONASS,这样卫星数量多,遮挡环境下也能保持定位。
2.1.2 地面段——监控站和主控站
地面段负责监控卫星状态、上传星历、修正时间。说白了,就是给卫星「擦屁股」的。卫星在天上飞,轨道会漂,时钟会偏,地面段就是干这个的。
2.1.3 用户段——接收机
这就是咱们车上的GNSS接收机。我建议选接收机时,重点关注三点:
- 频点支持:至少支持L1/L2双频,最好支持L5
- 通道数:至少72通道,越多越好
- 更新率:自动驾驶至少10Hz,最好20Hz
2.2 定位原理:三球交汇,没那么玄乎
GNSS定位原理,说白了就是「三球交汇」。你想想看,如果你知道卫星A离你多远,卫星B离你多远,卫星C离你多远,那你的位置不就是三个球的交点吗?
具体来说:
- 卫星发射信号,包含卫星位置和发射时间
- 接收机收到信号,记录到达时间
- 时间差 × 光速 = 距离
- 至少4颗卫星,解算出三维位置+时间
避坑指南:我曾经犯过一个低级错误——以为3颗卫星就够了。实际上,因为接收机时钟和卫星时钟不同步,需要第4颗卫星来解算钟差。所以最少需要4颗卫星才能定位。
定位方程其实很简单:
// 伪距观测方程
ρ_i = sqrt((x - x_i)² + (y - y_i)² + (z - z_i)²) + c * Δt
其中:
ρ_i:第i颗卫星的伪距观测值
(x, y, z):接收机位置(未知)
(x_i, y_i, z_i):第i颗卫星位置(已知)
c:光速
Δt:接收机钟差(未知)
嗯,这里要注意,实际解算时用的是最小二乘法或者卡尔曼滤波。我习惯用卡尔曼滤波,因为可以结合IMU做组合导航,效果更好。
2.3 误差源分析:为什么GNSS不准?
这个问题我经常被问到。说白了,GNSS误差来源主要有这几类:
2.3.1 卫星端误差
- 星历误差:卫星轨道预报不准。我记得有一次项目测试,发现定位突然跳了5米,查了半天是星历更新延迟了。
- 卫星钟差:卫星上的原子钟也会漂移。虽然地面段会修正,但修正值本身也有误差。
2.3.2 传播路径误差
- 电离层延迟:信号穿过电离层时,速度会变慢。双频接收机可以消除这个误差,单频机只能靠模型修正。
- 对流层延迟:大气中的水汽、温度变化也会影响信号。这个误差在低仰角卫星上尤其明显。
- 多路径效应:信号反射后到达接收机,造成测距误差。这是城市峡谷中最头疼的问题。
警告:多路径效应是自动驾驶的「隐形杀手」。我曾经在隧道出口处遇到过,GNSS定位突然跳了10米,差点导致车辆变道到错误车道。所以一定要结合IMU和轮速计做融合。
2.3.3 接收机端误差
- 接收机噪声:硬件本身的噪声,一般0.5-1米
- 天线相位中心变化:天线接收信号的位置会随方向变化
2.4 知识体系总览
下面这张图是我自己画的,把GNSS的核心逻辑串起来了。你仔细看看,应该能一目了然。
2.5 实际项目中的经验总结
最后,我分享几个实际项目中的经验:
| 场景 | 常见问题 | 我的建议 |
|---|---|---|
| 城市峡谷 | 卫星遮挡严重,定位跳变 | 使用多系统融合,结合IMU做航位推算 |
| 隧道 | 完全无GNSS信号 | 提前预判,切换到IMU+轮速计模式 |
| 高架桥下 | 多路径效应严重 | 使用抗多路径天线,降低低仰角卫星权重 |
| 开阔道路 | 精度一般 | 使用RTK差分,精度可达厘米级 |
核心总结:GNSS不是万能的,但没有GNSS是万万不能的。在自动驾驶中,GNSS提供绝对位置基准,IMU提供相对位置推算,两者结合才是王道。我做了这么多年,最大的体会就是——别迷信任何一个传感器,融合才是出路。