4. 差分定位原理:单差、双差、三差模型,RTK与DGNSS技术对比
差分定位,说白了就是「找两个接收机一起干活,把公共误差干掉」。我刚开始接触这个领域时,总觉得单点定位也能用,直到有一次在工地测试,单点定位飘了十几米,差点把桩基打偏。嗯,从那以后,差分定位就成了我的标配。
4.1 为什么需要差分?
卫星定位的误差源很多:电离层延迟、对流层延迟、卫星钟差、接收机钟差、多路径效应……这些误差中,大部分在空间上是相关的。你想想看,两台接收机如果离得不远,它们看到的卫星基本一样,穿过的大气层也差不多。那这些公共误差,是不是可以互相抵消?
差分定位的核心思想就是:利用基准站已知坐标,反算出误差修正量,然后发给流动站用。
关键前提:基准站和流动站的距离不能太远。一般RTK在20km以内效果较好,超过50km,大气误差不再相关,差分效果就大打折扣了。
4.2 单差模型
单差是最基础的差分形式。它是在两个接收机之间,对同一颗卫星的观测值做差。
假设基准站 r 和流动站 u 同时观测卫星 i,它们的伪距观测方程分别是:
P_r^i = ρ_r^i + c·(dt_r - dt^i) + I_r^i + T_r^i + ε_r^i
P_u^i = ρ_u^i + c·(dt_u - dt^i) + I_u^i + T_u^i + ε_u^i
做单差(站间差):
ΔP_ru^i = P_u^i - P_r^i
= (ρ_u^i - ρ_r^i) + c·(dt_u - dt_r) + (I_u^i - I_r^i) + (T_u^i - T_r^i) + (ε_u^i - ε_r^i)
注意看,卫星钟差 dt^i 被消掉了。如果两台接收机距离很近,电离层和对流层延迟也基本相等,那么 I_u^i - I_r^i ≈ 0,T_u^i - T_r^i ≈ 0。
单差模型剩下的主要未知数就是:流动站位置(包含在 ρ_u^i 中)和接收机钟差之差 dt_u - dt_r。
我个人习惯:单差虽然简单,但要注意它只能消掉卫星端误差。接收机钟差还在,所以至少需要4颗卫星才能解算(3个位置坐标 + 1个钟差参数)。
4.3 双差模型
双差是在单差的基础上,再对两颗卫星做一次差。也就是「站间差」+「星间差」。
先对卫星 i 做单差得到 ΔP_ru^i,再对卫星 j 做单差得到 ΔP_ru^j,然后两者相减:
∇ΔP_ru^ij = ΔP_ru^i - ΔP_ru^j
这一下,接收机钟差也被消掉了!因为两台接收机对同一颗卫星的钟差是相同的,做差后直接抵消。
双差模型是目前RTK和DGNSS中最常用的模型。它的优势很明显:
- 消除了卫星钟差
- 消除了接收机钟差
- 大幅削弱了大气延迟误差(短基线时)
- 整周模糊度变为整数(载波相位观测时)
我曾经踩过的坑:双差模型虽然好,但要注意「参考卫星」的选择。如果参考卫星的信噪比低或者频繁失锁,整个双差解都会崩掉。我一般会选仰角最高、信号最强的卫星作为参考星,并且每过几分钟检查一下是否需要切换。
4.4 三差模型
三差是在双差的基础上,再对两个历元做一次差。也就是「站间差」+「星间差」+「历元间差」。
三差模型的主要用途是初始化整周模糊度。因为历元间做差后,如果卫星没有失锁,整周模糊度会被消掉,剩下的就是位置变化量。
但三差也有明显缺点:
- 观测噪声被放大(三次差分后噪声约为原始噪声的2.8倍)
- 时间相关性被破坏,相邻历元的数据不再独立
- 只能得到相对位置变化,不能直接得到绝对位置
在实际工程中,三差模型用得不多。我一般只在周跳探测和模糊度初始化时才会用到它。
4.5 RTK与DGNSS技术对比
RTK(实时动态定位)和DGNSS(差分GNSS)是差分定位的两种主流实现方式。很多人搞不清它们的区别,我直接上表格:
| 对比项 | DGNSS | RTK |
|---|---|---|
| 观测值类型 | 伪距(C/A码或P码) | 载波相位 |
| 定位精度 | 亚米级(0.3~3米) | 厘米级(1~5厘米) |
| 收敛时间 | 即时(单历元即可) | 需要初始化(几秒到几分钟) |
| 整周模糊度 | 不需要解算 | 必须固定为整数 |
| 数据量 | 小(只需伪距改正数) | 大(需要载波相位观测值) |
| 适用场景 | 车辆导航、航运、农业 | 测绘、工程放样、无人机 |
| 典型设备成本 | 较低 | 较高 |
从表格可以看出,RTK和DGNSS的核心区别在于观测值类型。DGNSS用伪距,精度受限于码噪声,能做到亚米级就不错了。RTK用载波相位,波长只有19cm(L1),理论上精度可以做到毫米级。
但RTK有个麻烦事——整周模糊度。载波相位观测值只能测到不足一周的小数部分,整周数N是未知的。必须把这个N解出来,才能得到高精度位置。这就是所谓的「固定解」。
我的经验:RTK初始化时,如果卫星几何条件好(PDOP < 2),一般30秒内就能固定。但如果周围有遮挡或者多路径严重,可能几分钟都固定不了。这时候我会切换到DGNSS模式先用着,等条件好了再重新初始化。
4.6 差分定位的完整流程
下面我用一张SVG图来展示差分定位的核心逻辑:
4.7 实际工程中的选择建议
说了这么多理论,到底什么时候用RTK,什么时候用DGNSS?我根据实际项目经验,给出几条建议:
- 精度要求 < 10cm:必须上RTK,而且要用双频接收机。单频RTK在短基线(< 5km)下也能用,但可靠性差一些。
- 精度要求 0.3~1m:DGNSS完全够用,成本低、启动快、稳定性好。我在农业导航项目里一直用DGNSS,效果很好。
- 动态场景(车速 > 60km/h):RTK容易失锁,建议用DGNSS或者RTK+IMU组合导航。
- 城市峡谷/树林遮挡:RTK初始化困难,可以先跑DGNSS,等开阔地带再切RTK。
一个小技巧:如果你用的是RTK,但发现一直无法固定,可以检查一下「模糊度检验阈值」是不是设得太严了。我一般把Ratio阈值设为2.5~3.0,既能保证可靠性,又不会因为太苛刻而一直浮点解。
差分定位的原理其实不复杂,就是「做差消误差」。单差消卫星钟差,双差再消接收机钟差,三差再消整周模糊度。但实际工程中,误差消得越干净,噪声也放得越大,这是个永恒的trade-off。理解了这一点,你就能根据场景灵活选择最合适的差分模型了。