4、GPS定位原理:伪距测量、载波相位测量、单点定位与差分定位(DGPS/RTK)基础
各位同学,欢迎来到第四章。这一章我们聊聊GPS定位的核心原理。说实话,很多做组合导航的工程师,对GPS的理解往往停留在“能定位就行”的层面。但如果你不懂伪距和载波相位的区别,不懂单点定位和差分定位的适用场景,那融合算法做出来大概率是“能用但不好用”。
我个人习惯,在讲融合之前,先把GPS的底裤扒干净。你想想看,IMU和GPS互补,你得知道GPS到底在补什么、怎么补。好,我们开始。
4.1 伪距测量:最基础的测距方式
伪距测量,说白了就是“用时间差算距离”。卫星发一个信号,你的接收机收到它,记录下时间差。光速一乘,距离就出来了。
但为什么叫“伪”距?因为这里面有误差。卫星时钟和接收机时钟不同步,信号穿过电离层、对流层会延迟,还有多路径效应。这些误差加起来,伪距的精度通常在米级,大概3到10米的样子。
伪距观测方程:
ρ = r + c·(δt_u - δt_s) + I + T + ε
其中:ρ是伪距观测值,r是真实几何距离,c是光速,δt_u是接收机钟差,δt_s是卫星钟差,I是电离层延迟,T是对流层延迟,ε是噪声。
我在项目中遇到过一件事。有一次做车载导航,伪距定位结果突然跳了十几米。排查了半天,发现是接收机附近有高楼反射信号。嗯,多路径效应,伪距测量的老对手了。
4.2 载波相位测量:精度高但麻烦
载波相位测量,精度比伪距高两个数量级,能达到厘米级甚至毫米级。原理很简单:卫星发射的载波信号(L1波段1575.42MHz,波长约19cm),接收机测量它和本地复制信号之间的相位差。
但这里有个大坑——整周模糊度。你测到的相位差只是小数部分,整数部分不知道。比如相位差是0.3个波长,但到底是3.3个波长还是4.3个波长?你不知道。
整周模糊度问题:
载波相位观测值 = 真实距离/波长 + 整周模糊度 + 小数相位 + 误差
整周模糊度N是一个整数,必须正确求解才能得到厘米级定位。我曾经在一个RTK项目里,整周模糊度解错了,定位结果直接偏了半米,找了三天bug才找到原因。
还有一个问题——周跳。信号中断时,整周计数会跳变。你想想看,本来数得好好的,突然断了再连上,中间丢了多少个整周?不知道。所以载波相位数据处理,周跳检测和修复是基本功。
4.3 单点定位:简单但精度有限
单点定位,就是只用一台接收机,接收卫星信号,解算自己的位置。原理是解四个方程(三个位置坐标加一个钟差),至少需要四颗卫星。
精度嘛,伪距单点定位大概5到10米。为什么这么差?因为卫星轨道误差、卫星钟差、大气延迟这些误差,你一个都消除不了。说白了,就是“裸奔”定位。
我的建议:
单点定位适合精度要求不高的场景,比如车载导航、手机定位。但如果你要做自动驾驶、无人机精准降落,单点定位远远不够。我见过有人用单点定位做车道级导航,结果定位误差直接跨了两个车道,太危险了。
4.4 差分定位(DGPS):消除公共误差
差分定位的原理很简单:在已知位置架设一个基准站,基准站接收卫星信号,计算出误差,然后把误差改正数发给流动站。流动站用这个改正数修正自己的观测值,精度就能提升到亚米级甚至分米级。
DGPS主要消除的是公共误差:卫星轨道误差、卫星钟差、电离层延迟、对流层延迟。这些误差在基准站和流动站之间是高度相关的,距离越近,相关性越强。
| 误差类型 | 单点定位 | DGPS | RTK |
|---|---|---|---|
| 卫星轨道误差 | 存在 | 消除 | 消除 |
| 卫星钟差 | 存在 | 消除 | 消除 |
| 电离层延迟 | 存在 | 部分消除 | 消除 |
| 对流层延迟 | 存在 | 部分消除 | 消除 |
| 多路径效应 | 存在 | 存在 | 存在 |
| 接收机噪声 | 存在 | 存在 | 存在 |
DGPS的局限也很明显:基准站和流动站的距离不能太远,一般建议在100公里以内。距离远了,大气延迟的相关性下降,改正效果就差了。
4.5 RTK:厘米级定位的利器
RTK(实时动态差分定位)是DGPS的升级版。它用载波相位观测值代替伪距,通过差分消除公共误差,再解算整周模糊度,最终实现厘米级定位。
RTK的核心流程:
- 基准站和流动站同时观测卫星,记录载波相位数据
- 基准站通过数据链(电台或4G)把观测值发给流动站
- 流动站做双差处理,消除公共误差
- 解算整周模糊度(这是最关键的步骤)
- 一旦模糊度固定,定位精度就是厘米级
RTK定位精度:
水平精度:1cm + 1ppm(每公里误差1毫米)
垂直精度:2cm + 1ppm
初始化时间:通常几秒到几十秒
我曾经在一个无人机项目里用RTK。无人机起飞前,RTK初始化花了30秒还没固定。我一看,卫星数不够,周围还有树遮挡。后来换了个开阔场地,5秒就固定了。所以RTK对环境要求很高,开阔天空是前提。
4.6 伪距 vs 载波相位:怎么选?
很多初学者会问:既然载波相位精度那么高,为什么还要用伪距?
原因很简单:载波相位太“娇气”了。整周模糊度解不对,定位就废了。周跳检测不好,数据就断了。而伪距虽然精度低,但稳定可靠,永远不会出现整周模糊度的问题。
所以在实际工程中,我通常的做法是:
- 伪距用于粗定位和故障检测
- 载波相位用于精确定位
- 两者结合,互相校验
避坑指南:
我曾经在一个项目中,只用载波相位做定位,结果整周模糊度解错了,定位结果偏了十几厘米。从那以后,我养成了一个习惯:先用伪距算一个大概位置,再用载波相位做精细调整。伪距虽然精度低,但它是“安全网”。
4.7 小结
这一章我们讲了GPS定位的四个层次:
- 伪距测量:精度米级,稳定可靠
- 载波相位测量:精度厘米级,但需要处理整周模糊度和周跳
- 单点定位:简单但精度有限,适合粗定位
- 差分定位:DGPS消除公共误差,RTK实现厘米级定位
下一章,我们会把这些知识用到组合导航里。你想想看,IMU提供高频短时精度,GPS提供低频长时精度,两者怎么融合?嗯,卡尔曼滤波就要登场了。
好,这一章就到这里。有问题随时交流。