4. GPS/RTK定位原理:从单点定位到厘米级精度的演进
各位同学好。今天我们来聊聊飞控里最让人又爱又恨的传感器——GPS。说它爱,是因为没有它,无人机就不知道自己在哪;说它恨,是因为普通GPS那几米甚至十几米的误差,在复杂环境下真的能把飞机带偏。
我个人习惯把定位精度分成三个层次:能飞、稳飞、精飞。普通GPS只能做到“能飞”,RTK才能做到“精飞”。这一章,我们就来拆解一下,从单点定位到厘米级精度,中间到底发生了什么。
核心观点:GPS定位的本质是“测距+解算”。精度提升的关键,在于如何消除测距过程中的各种误差。
4.1 单点定位:为什么只有米级精度?
先说说最基础的。GPS卫星不停地广播自己的位置和发射时间。接收机收到信号后,算出信号传播的时间差,乘以光速,就得到了距离。
理论上,只要同时收到4颗卫星的信号,就能解算出三维位置和时间。但问题出在“时间差”上。
我在项目中遇到过这样的情况:明明天气很好,开阔无遮挡,但GPS定位却突然跳了十几米。排查了半天,发现是卫星星历更新了,接收机没及时同步。
单点定位的误差来源主要有这几个:
- 卫星钟差:卫星上的原子钟虽然准,但也不是绝对精确。
- 轨道误差:卫星实际轨道和广播的星历有偏差。
- 电离层/对流层延迟:信号穿过大气层时,速度会变慢。
- 多路径效应:信号打到建筑物或地面上反射过来,造成测距错误。
- 接收机噪声:硬件本身的底噪。
这些误差叠加起来,单点定位的水平精度通常在2-5米,垂直精度更差,5-10米都很常见。说白了,这种精度只能告诉你“大概在这条街上”,没法告诉你“停在哪个车位”。
我的经验:在飞控调试时,如果发现悬停位置漂移超过3米,先别急着调PID参数。先看看GPS的HDOP(水平精度因子)值。HDOP大于1.5时,定位质量已经不太好了。
4.2 差分定位(DGPS):消除公共误差
那怎么提高精度呢?一个很自然的想法是:既然卫星钟差、轨道误差、大气延迟这些误差,对同一地区的所有接收机来说都是差不多的,那能不能找个已知位置的基准站,算出差值,然后发给移动站去修正?
这就是差分定位(DGPS)的基本思路。
基准站架设在已知坐标的点上。它接收GPS信号,算出自己的测量位置,然后和真实位置做差,得到一个“改正数”。移动站收到这个改正数后,修正自己的测量结果。
这样做的好处很明显:
- 卫星钟差和轨道误差基本被完全消除
- 电离层和对流层延迟被大幅削弱
- 精度可以提升到亚米级(0.5-1米)
但DGPS也有局限。它只能消除“空间相关”的误差。像多路径效应和接收机噪声这种“本地误差”,它无能为力。而且,基准站和移动站的距离越远,大气延迟的相关性就越差,修正效果也会打折扣。
注意:DGPS的改正数通常通过电台或网络传输。如果通信链路中断,移动站会立刻退化为单点定位模式。这在飞控设计中是个必须考虑的安全边界。
4.3 RTK:载波相位才是关键
好了,DGPS能做到亚米级,但离厘米级还差一个数量级。问题出在哪?
你想想看,DGPS用的是伪距观测值。伪距的测量精度大概在0.1-0.3米左右。就算把所有误差都消掉,最终精度也不会比这个好太多。
那有没有更精密的测量手段?有,就是载波相位。
GPS信号有两个部分:一个是用来传数据的伪码,一个是用来测距的载波。载波的波长很短,L1波段是19厘米,L2波段是24厘米。如果能测量载波的相位,理论上精度可以达到毫米级。
但问题来了:接收机只能测量载波相位的小数部分,整周部分(整周模糊度)是未知的。这就好比你知道自己站在第几级台阶的哪个位置,但不知道这是第几层楼。
RTK(实时动态差分定位)的核心工作,就是快速、可靠地解算出整周模糊度。
我记得第一次调RTK的时候,花了整整两天才把模糊度固定下来。后来发现是基准站的天线相位中心标定出了问题。嗯,这里要注意,天线相位中心偏差虽然只有几厘米,但在RTK里足以让解算失败。
RTK的工作流程大致如下:
- 基准站和移动站同时观测同一组卫星
- 基准站将载波相位观测值通过数据链发给移动站
- 移动站做双差计算,消除大部分公共误差
- 用LAMBDA等算法搜索整周模糊度的最优解
- 一旦模糊度固定,位置解算精度直接进入厘米级
关键指标:RTK的精度取决于“固定率”。固定率越高,定位越可靠。业内通常要求固定率在95%以上才算可用。
4.4 从理论到实战:RTK在飞控中的落地
理论讲完了,我们来看看实际怎么用。下面这张图是我自己画的RTK数据流框架,帮你理清各个模块的关系。
在实际的飞控代码里,RTK数据通常以NMEA或UBX协议输出。我建议你重点关注这几个字段:
| 字段 | 含义 | 典型值 |
|---|---|---|
| fixType | 定位状态 | 0=无, 2=2D, 3=3D, 4=RTK浮点, 5=RTK固定 |
| numSV | 可见卫星数 | ≥20颗(理想情况) |
| pDOP | 位置精度因子 | <1.5(优秀) |
| ageC | 差分龄期 | <10秒(越短越好) |
避坑指南:我曾经在项目里遇到RTK固定率突然掉到60%的情况。排查后发现是基准站的天线被树枝遮挡了。记住,基准站的环境比移动站更重要——它一旦出问题,所有移动站都会跟着遭殃。
4.5 精度对比:一张表看懂
最后,我用一张表总结一下三种定位方式的精度和适用场景:
| 定位方式 | 水平精度 | 垂直精度 | 收敛时间 | 适用场景 |
|---|---|---|---|---|
| 单点定位 | 2-5米 | 5-10米 | 即时 | 航线规划、粗略导航 |
| DGPS | 0.5-1米 | 1-2米 | 即时 | 植保作业、巡检 |
| RTK(固定解) | 1-3厘米 | 2-5厘米 | 10-60秒 | 精准起降、测绘、编队 |
看到这个表,你可能会问:RTK这么好,为什么不全用RTK?原因很简单:成本高、依赖通信链路、在城市峡谷或树荫下容易失锁。说白了,没有银弹。实际项目中,我通常的做法是:起飞前用RTK做初始化,飞行中如果RTK失锁,平滑切换到DGPS或单点定位模式,保证飞机不掉高、不偏航。
好了,这一章的内容就到这里。从单点定位到RTK,核心就是一句话:用差分消除公共误差,用载波相位实现精密测距。下一章我们会深入讲惯性导航,看看IMU是怎么和GPS配合,实现更稳定的姿态和位置估计的。
公众号:蓝海资料掘金营,微信deep3321