3、GNSS定位原理与误差源

各位同学好,我是老张。今天咱们聊聊GNSS定位,这是多源融合定位里最基础、也最绕不开的一块。说白了,不管你是做组合导航还是做自动驾驶,GNSS都是那个“锚”。但你要是以为GNSS就是“天上掉坐标”,那可就太天真了。

我刚开始做定位算法那会儿,就吃过GNSS的亏。有一次在楼宇密集区测试,定位结果直接飘出去几十米,我当时还以为是IMU出了问题,查了半天才发现是GNSS的多路径效应在作怪。从那以后,我就养成了一个习惯:拿到GNSS数据,先看误差源,再看定位结果。

3.1 伪距定位:最朴素的定位方式

伪距定位,说白了就是“测距+解方程”。卫星告诉你“我在这里”,接收机测出“你离我多远”,然后解一个四元方程组,就能算出你的位置。

为什么叫“伪距”?因为测出来的距离不是真距离,里面藏着各种误差。卫星钟差、接收机钟差、大气延迟……这些都会让测距结果“掺水”。

伪距定位的数学表达很简单:

ρ = r + c·(δt_u - δt_s) + I + T + ε

其中:

  • ρ 是伪距观测值
  • r 是卫星到接收机的几何距离
  • c 是光速
  • δt_u 是接收机钟差
  • δt_s 是卫星钟差
  • I 是电离层延迟
  • T 是对流层延迟
  • ε 是其他噪声

你看,一个简单的测距公式,背后藏着这么多“坑”。我当年第一次写伪距定位程序,解出来的坐标误差有上百米,后来才发现是忘了补偿卫星钟差。

我的经验:伪距定位精度一般在米级,适合做初始定位或低成本场景。但如果你要做厘米级定位,伪距就不够用了,得请出“载波相位”。

3.2 载波相位定位:精度高,但麻烦也多

载波相位定位,精度能到厘米甚至毫米级。为什么?因为载波的波长比伪距码短得多。GPS的L1载波波长约19厘米,而C/A码的码元长度约293米。你想想看,用尺子量东西,尺子越精细,量得越准。

但载波相位有个大麻烦——整周模糊度。说白了,接收机能测出载波相位的小数部分,但不知道整数部分是多少。就像你只知道钟表指针的位置,却不知道现在是几点几分。

整周模糊度的求解,是载波相位定位的核心难题。常用的方法有:

  • LAMBDA算法:最小二乘模糊度降相关平差,业内主流
  • TCAR方法:三频载波模糊度解算,适合多频接收机
  • 运动学初始化:通过移动接收机来解算模糊度

我记得有一次做RTK项目,整周模糊度怎么都固定不了,折腾了两天。后来发现是卫星几何构型太差,PDOP值高达6.0。换了个时间段测试,问题就解决了。所以啊,载波相位定位不仅算法要强,观测条件也很关键。

注意:载波相位定位虽然精度高,但容易发生周跳。一旦发生周跳,整周模糊度就得重新解算。我建议在融合定位中,把载波相位定位结果作为“高精度观测值”,而不是“唯一解”。

3.3 单点定位与差分定位

单点定位,就是一台接收机自己算自己的位置。精度嘛,伪距单点定位约5-10米,载波相位单点定位约1-2米。为什么这么差?因为误差源没有被消除。

差分定位就不一样了。它利用“误差的空间相关性”——两个距离不远的接收机,受到的卫星钟差、大气延迟等误差是相似的。通过做差,就能把这些公共误差消掉。

差分定位主要有两种:

类型 原理 精度 应用场景
伪距差分(DGPS) 基准站发送伪距改正数 亚米级 船舶导航、农业机械
载波相位差分(RTK) 基准站发送载波相位观测值 厘米级 测绘、无人机、自动驾驶

我个人更偏爱RTK,因为精度高、实时性好。但RTK也有短板——依赖基准站。一旦基准站信号丢失,或者距离太远(超过30公里),误差相关性就会下降,定位精度会急剧恶化。

核心要点:差分定位的本质是“用空间换精度”。基准站越近,误差消除越彻底。但别忘了,差分定位只能消除空间相关误差,多路径效应这种局部误差是消不掉的。

3.4 GNSS主要误差源

GNSS的误差源,我习惯分成三类:卫星端、传播路径端、接收机端。咱们一个一个说。

3.4.1 电离层延迟

电离层是大气层中带电粒子最密集的区域,大约在60-1000公里高度。GNSS信号穿过电离层时,传播速度会变慢,导致测距偏大。

电离层延迟的大小跟太阳活动、时间、地点都有关系。白天比晚上大,赤道比两极严重。最大延迟能到几十米。

消除电离层延迟的方法:

  • 双频消除法:利用两个频率的信号,通过线性组合消除电离层影响。这是最有效的方法。
  • 模型改正:使用Klobuchar模型或NeQuick模型,精度约50-70%。
  • 差分定位:短基线情况下,电离层延迟被差分消除。

我建议,只要条件允许,就用双频接收机。单频接收机在电离层活跃期(比如太阳耀斑爆发时),定位精度会大幅下降。

3.4.2 对流层延迟

对流层是大气层最底层,约0-12公里高度。对流层延迟跟电离层不同,它是非色散的——对所有频率的信号影响相同。所以双频消除法对对流层无效。

对流层延迟分为干分量和湿分量:

  • 干分量:约占90%,可以用Saastamoinen模型或Hopfield模型精确建模。
  • 湿分量:约占10%,跟水汽含量有关,变化快,建模难度大。

我在做高精度定位时,对流层湿分量是最头疼的。有时候明明模型算得好好的,一场雨过后,误差就大了。后来我改用实时估计的方法——把对流层延迟当作未知参数,跟位置一起解算。效果还不错。

3.4.3 多路径效应

多路径效应,说白了就是信号“抄近道”或者“绕远路”。GNSS信号在传播过程中,遇到建筑物、地面、水面等反射面,会形成反射信号。接收机同时接收到直射信号和反射信号,导致测距误差。

多路径效应的特点:

  • 局部性强:不同位置、不同环境,多路径情况完全不同。
  • 难以建模:因为反射环境太复杂,很难用数学模型精确描述。
  • 低频特性:多路径误差变化较慢,容易跟其他误差混淆。

我曾经在港口测试,集装箱码头附近的多路径误差能达到10米以上。后来我们用了扼流圈天线,配合仰角截止策略(低于15度的卫星不用),才把多路径影响压下来。

避坑指南:多路径效应是GNSS定位中最难对付的误差之一。我建议在融合定位中,对多路径严重的观测值进行降权处理,而不是直接剔除。因为有时候,有误差的数据比没数据要好。

3.4.4 星历误差

星历误差,就是卫星播报的轨道位置跟实际位置之间的偏差。卫星虽然在天上飞,但受地球引力、太阳光压、潮汐力等影响,轨道会慢慢偏离。

星历误差的来源:

  • 预报误差:广播星历是预报值,预报时间越长,误差越大。
  • 卫星机动:卫星偶尔会调整轨道,机动期间星历误差会急剧增大。
  • 轨道摄动:各种摄动力导致的微小偏差。

广播星历的精度大约在1-2米(RMS)。如果你需要更高精度,可以用精密星历(IGS产品),精度能到厘米级。但精密星历有延迟,不能用于实时定位。

我个人的做法是:实时定位用广播星历,后处理用精密星历。如果做实时高精度定位,可以考虑用PPP(精密单点定位)技术,它同时解算星历误差和接收机位置。

3.5 知识体系总览

下面这张图,是我自己画的GNSS定位知识体系。你可以把它当作本章的“地图”,方便你理解各个知识点之间的关系。

GNSS定位原理与误差源知识体系 GNSS定位 定位方法 伪距定位(米级) 载波相位定位(厘米级) 差分定位(亚米/厘米级) 主要误差源 电离层延迟(双频消除) 对流层延迟(干/湿分量) 多路径效应(局部性强) 星历误差(广播/精密星历)

这张图把本章的核心内容串起来了。左边是定位方法,右边是误差源。你想想看,定位方法越高级,对误差源的敏感度就越高。比如载波相位定位,虽然精度高,但受多路径和整周模糊度的影响也更大。

好了,这一章的内容就到这里。GNSS定位原理和误差源,是后续所有融合定位算法的基础。你把这些搞清楚了,后面学IMU/GNSS融合、视觉/GNSS融合,都会轻松很多。

公众号:蓝海资料掘金营,微信deep3321