4. GNSS误差源分析:电离层、对流层、多路径效应

各位做组合导航的朋友,咱们今天聊聊GNSS的三大"天敌"——电离层、对流层和多路径效应。说实话,搞了这么多年高精度定位,我见过太多项目被这几个误差源搞得焦头烂额。你想想看,明明卫星信号好好的,定位结果却飘得离谱,十有八九就是它们仨在捣鬼。

4.1 电离层延迟:最头疼的"变色龙"

电离层是什么?说白了就是距离地面60到1000公里的大气层,被太阳紫外线电离了。这层东西对GNSS信号的影响,我个人的经验是——它就像个变色龙,白天晚上不一样,冬天夏天不一样,甚至太阳黑子活动强的时候也不一样。

核心影响:电离层会改变电磁波的传播速度,造成测距误差。单频接收机在太阳活动高峰期,误差能到几十米。

为什么会这样?因为电离层中的自由电子会改变信号的折射率。信号穿过电离层时,路径变长了,速度也变了。嗯,这里要注意——伪距和载波相位受的影响是相反的。伪距被延迟(变长),载波相位却被提前(变短)。

电离层延迟的典型值:

条件天顶方向延迟低仰角(5°)延迟
白天(太阳活动低)5-15米20-60米
白天(太阳活动高)50-100米200-400米
夜间1-5米5-20米

我在项目中遇到过最夸张的一次,是在新疆做测试,正赶上太阳耀斑爆发。单频接收机的定位结果直接偏了80多米,当时我还以为是设备坏了,折腾了半天才发现是电离层在搞鬼。

4.2 对流层延迟:低空"捣蛋鬼"

对流层是离我们最近的大气层,从地面到大约10-15公里高度。这里没有电离层那么复杂,但同样让人头疼。说白了,对流层延迟就是信号穿过干空气和水汽时,速度变慢造成的。

对流层延迟分两部分:

  • 干分量:占90%,由大气压力决定,相对稳定,可以建模补偿
  • 湿分量:占10%,由水汽含量决定,变化快,很难精确建模

我个人习惯把对流层延迟分成这两部分来处理。干分量用标准大气模型就能补偿到厘米级,但湿分量嘛...说实话,我做了这么多年,湿分量还是最让人头疼的。尤其是南方梅雨季节,水汽含量忽高忽低,模型根本跟不上。

我的经验:在潮湿环境下做高精度定位,建议使用双频接收机配合精密对流层模型。如果条件允许,可以引入气象传感器实时测量温湿压,效果会好很多。

对流层延迟的典型值:

仰角干分量延迟湿分量延迟
90°(天顶)2.3米0.1-0.4米
30°4.6米0.2-0.8米
10°13.2米0.6-2.3米
26.4米1.2-4.6米

你看,低仰角的时候延迟特别大。所以我做组合导航时,一般会把5°以下的卫星直接屏蔽掉。虽然可用卫星少了点,但定位质量反而更高。

4.3 多路径效应:城市峡谷的"幽灵"

多路径效应,说白了就是信号反射。卫星信号打到建筑物、地面、水面上,反射后又被接收机收到。这些反射信号和直射信号叠加在一起,测距就乱了。

我在深圳做测试时,遇到过最典型的多路径场景——两边都是玻璃幕墙的高楼,中间一条窄路。接收机报出来的位置,一会儿在路左边,一会儿在路右边,来回跳。嗯,这就是多路径在作怪。

多路径效应的特点:

  • 伪距多路径:误差可达几十米,且变化缓慢
  • 载波多路径:误差一般不超过四分之一波长(约5厘米),但变化快
  • 低仰角卫星更容易受多路径影响
  • 反射面越光滑,多路径越严重

避坑指南:我曾经在一个项目中,把天线装在金属屋顶上,结果定位精度一直上不去。后来才发现,金属屋顶本身就是个巨大的反射面。从那以后,我选天线安装位置时,一定会避开金属表面、水面、玻璃幕墙这些"镜子"。

4.4 实战中的误差处理策略

讲了这么多理论,咱们说说实战中怎么处理。我个人总结了一套"三步走"的策略:

  1. 建模补偿:电离层用双频组合消除,对流层用模型补偿
  2. 选星策略:屏蔽低仰角卫星,减少多路径和对流层影响
  3. 滤波融合:用IMU辅助,在GNSS信号质量差时保持定位

举个实际例子。我在做车载组合导航时,代码里是这样处理卫星选择的:

// 卫星选择策略示例
void select_satellites(satellite_t *sats, int num_sats) {
    for (int i = 0; i < num_sats; i++) {
        // 1. 屏蔽低仰角卫星(< 10°)
        if (sats[i].elevation < 10.0) {
            sats[i].usable = false;
            continue;
        }
        
        // 2. 检查信噪比(> 35 dB-Hz)
        if (sats[i].snr < 35.0) {
            sats[i].usable = false;
            continue;
        }
        
        // 3. 检查多路径指标(如果接收机支持)
        if (sats[i].mp_indicator > 0.5) {
            sats[i].usable = false;
            continue;
        }
        
        sats[i].usable = true;
    }
}

这段代码看着简单,但实际效果很好。我建议你在做组合导航时,也把卫星质量检查放在最前面。毕竟,输入的数据质量不行,后面的滤波算法再牛也白搭。

4.5 小结

好了,今天的内容就到这里。总结一下:

  • 电离层延迟:双频消除是王道,单频只能靠模型
  • 对流层延迟:干分量好处理,湿分量靠运气
  • 多路径效应:选好天线位置,屏蔽低仰角卫星

下一章咱们聊聊IMU的误差模型,那个更刺激。IMU的零偏、标度因子、交轴耦合...嗯,到时候再细说。

个人建议:如果你刚开始做组合导航,别急着上复杂的算法。先把GNSS的误差源搞清楚,把卫星选择策略做好,你会发现定位精度已经提升了一大截。剩下的,交给IMU去补。