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度的卫星不用),才把多路径影响压下来。
3.4.4 星历误差
星历误差,就是卫星播报的轨道位置跟实际位置之间的偏差。卫星虽然在天上飞,但受地球引力、太阳光压、潮汐力等影响,轨道会慢慢偏离。
星历误差的来源:
- 预报误差:广播星历是预报值,预报时间越长,误差越大。
- 卫星机动:卫星偶尔会调整轨道,机动期间星历误差会急剧增大。
- 轨道摄动:各种摄动力导致的微小偏差。
广播星历的精度大约在1-2米(RMS)。如果你需要更高精度,可以用精密星历(IGS产品),精度能到厘米级。但精密星历有延迟,不能用于实时定位。
我个人的做法是:实时定位用广播星历,后处理用精密星历。如果做实时高精度定位,可以考虑用PPP(精密单点定位)技术,它同时解算星历误差和接收机位置。
3.5 知识体系总览
下面这张图,是我自己画的GNSS定位知识体系。你可以把它当作本章的“地图”,方便你理解各个知识点之间的关系。
这张图把本章的核心内容串起来了。左边是定位方法,右边是误差源。你想想看,定位方法越高级,对误差源的敏感度就越高。比如载波相位定位,虽然精度高,但受多路径和整周模糊度的影响也更大。
好了,这一章的内容就到这里。GNSS定位原理和误差源,是后续所有融合定位算法的基础。你把这些搞清楚了,后面学IMU/GNSS融合、视觉/GNSS融合,都会轻松很多。
公众号:蓝海资料掘金营,微信deep3321