4、GNSS定位基础:伪距定位、载波相位、RTK/PPK技术原理与局限
各位同学好,我是老张。今天咱们聊聊GNSS定位。
说实话,很多做感知融合的工程师,一听到GNSS就觉得「这东西不就是给个经纬度嘛,精度还差」。嗯,这话对了一半。GNSS原始定位确实粗糙,但你要是把伪距、载波相位、RTK这些搞明白了,会发现它其实是自动驾驶定位里不可或缺的一环。
我当年刚入行时,也踩过不少坑。有一次在隧道口测试,定位直接跳了十几米,吓得我赶紧把融合算法里的GNSS权重调低了。后来才明白,那不是GNSS的错,是我没理解它的局限。
4.1 伪距定位:最基础的定位方式
伪距定位,说白了就是「测距定位」。卫星告诉你「我在哪」,你的接收机测量「卫星离我多远」,然后解算出你的位置。
原理其实很简单:
- 每颗卫星都在广播自己的位置和发射时间
- 接收机收到信号,记录到达时间
- 时间差 × 光速 = 距离
- 至少4颗卫星,就能解出三维坐标 + 钟差
但这里有个坑——伪距的精度其实不高。为什么?因为接收机的时钟不准,卫星的时钟也有漂移,再加上大气延迟、多路径效应……这些误差加起来,伪距定位的精度通常只有5-10米。
核心公式:
ρ = r + c·(δt_u - δt_s) + I + T + ε
其中ρ是伪距测量值,r是真实几何距离,c是光速,δt_u和δt_s分别是接收机和卫星钟差,I和T是电离层和对流层延迟,ε是噪声。
我在项目中遇到过一件事:有一次用单点定位做车道级导航,结果车辆在高速上左右横跳,轨迹像喝醉了酒。后来一查,是伪距噪声太大,加上多路径效应。从那以后,我但凡做融合定位,一定会在伪距解算后加一个粗差剔除。
避坑指南:我曾经在城区高架桥下测试,伪距定位误差飙到30米。后来发现是信号反射导致的。建议在融合算法里,对伪距残差设置一个阈值,超过20米的直接丢弃。
4.2 载波相位:精度提升的关键
伪距精度不够,怎么办?用载波相位。
载波相位测量的是卫星信号载波的相位变化。你想想看,L1载波的波长才19厘米,相位测量精度可以做到毫米级。这比伪距的米级精度高了好几个数量级。
但问题来了:载波相位测量存在整周模糊度。什么意思?就是你只能测到相位的小数部分,整数部分不知道。就像你只知道钟表指针的位置,但不知道现在是几点。
载波相位观测方程:
Φ = λ^(-1)·r + N + c·(δt_u - δt_s)/λ + I/λ + T/λ + ε
其中Φ是载波相位观测值(以周为单位),λ是波长,N是整周模糊度(整数)。
整周模糊度N的求解,是载波相位定位的核心难点。我刚开始做RTK时,最头疼的就是模糊度固定。有时候明明卫星数够了,但模糊度就是固定不下来,定位精度直接掉回米级。
为什么会这样?因为模糊度解算需要足够多的观测数据,而且对多路径和电离层非常敏感。我记得有一次在雷雨天气测试,电离层活跃,模糊度解算了整整5分钟才固定。嗯,这在自动驾驶里是不可接受的。
注意:载波相位还有一个问题——周跳。当接收机失锁再重新捕获信号时,整周计数会跳变。如果不处理周跳,定位结果会直接崩掉。我建议在预处理阶段一定要做周跳检测,常用的方法有GF(几何无关)组合和MW(Melbourne-Wübbena)组合。
4.3 RTK:实时动态差分定位
RTK(Real-Time Kinematic)是目前自动驾驶里用得最多的高精度定位技术。它的核心思想很简单:利用基准站和流动站的观测值做差分,消除公共误差。
RTK的工作流程:
- 基准站架设在已知坐标点上,连续观测卫星
- 基准站通过电台或4G网络,把观测值发给流动站
- 流动站收到数据后,做双差处理,消除钟差和大气延迟
- 解算整周模糊度,得到厘米级定位
我做过一个测试:在开阔环境下,RTK的定位精度可以稳定在2-3厘米。这个精度对于车道级定位来说,绰绰有余。
但RTK的局限也很明显:
- 依赖通信链路:基准站和流动站之间需要实时数据传输。一旦断链,RTK就退化成单点定位
- 作用距离有限:基准站和流动站距离超过30公里,大气延迟差异变大,模糊度固定困难
- 初始化时间:每次开机或失锁后,需要重新固定模糊度,通常需要几十秒
实战经验:我曾经在城区测试RTK,发现只要经过高架桥下,RTK就会失锁。后来我加了一个策略:在失锁期间,用IMU做航位推算,等RTK重新固定后再融合。这样定位的连续性好了很多。
4.4 PPK:后处理差分定位
PPK(Post-Processed Kinematic)和RTK的原理一样,区别在于PPK是事后处理,不需要实时通信链路。
PPK的优势:
- 不需要实时数据链路,适合偏远地区
- 可以回放数据,反复优化解算参数
- 精度通常比RTK更稳定,因为可以后处理滤波
PPK的局限:
- 不能实时输出定位结果,不适合自动驾驶
- 需要存储原始观测数据,数据量较大
- 后处理流程复杂,需要专业软件
说实话,PPK在自动驾驶里用得不多。但我在做高精度地图采集时,经常用PPK做后处理验证。先把RTK的实时结果存下来,再用PPK跑一遍,对比两者的差异,就能发现RTK解算中的问题。
我的建议:如果你在做自动驾驶定位系统,RTK是首选。但一定要做好降级策略——当RTK不可用时,能平滑切换到伪距定位或IMU推算。别让定位精度突然跳变,那对控制模块是灾难。
4.5 三种技术的对比与选择
| 技术 | 精度 | 实时性 | 依赖条件 | 适用场景 |
|---|---|---|---|---|
| 伪距定位 | 5-10米 | 实时 | 无 | 低精度导航、辅助定位 |
| 载波相位 | 厘米级(需解模糊度) | 实时/后处理 | 需解算整周模糊度 | 高精度定位基础 |
| RTK | 2-5厘米 | 实时 | 基准站+通信链路 | 自动驾驶、无人机 |
| PPK | 1-3厘米 | 后处理 | 基准站+数据存储 | 测绘、地图采集 |
你想想看,在实际的感知融合定位系统里,我们通常不会只用一种技术。伪距定位做粗定位和故障检测,RTK做高精度主定位,IMU做短时间推算——这才是工程上的成熟方案。
最后提醒一句:GNSS定位不是万能的。在隧道、地下车库、高楼峡谷这些场景,GNSS信号会完全丢失。这时候,感知融合里的视觉、激光雷达、IMU就要顶上。别把鸡蛋都放在一个篮子里。
可可精品资料库