定位漂移现象:GPS漂移、RTK漂移与SLAM漂移
做无人机飞控这些年,我见过最头疼的问题就是定位漂移。明明飞机悬停得好好的,突然就窜出去几米远。日志里看数据一切正常,可实际飞起来就是不对劲。今天咱们就把这三种漂移掰开揉碎了讲清楚。
一、GPS漂移:最基础的定位误差
GPS漂移说白了就是卫星定位的天然缺陷。我刚开始做飞控时,总觉得GPS信号满格就万事大吉。直到有一次在楼群间试飞,飞机自己画了个8字...嗯,从那以后我再也不敢迷信GPS了。
GPS漂移的核心原因:
- 多径效应:信号反射导致伪距测量偏差
- 卫星几何分布:HDOP/VDOP值差时定位精度直线下降
- 电离层延迟:太阳活动剧烈时误差可达10米以上
- 接收机噪声:低端GPS模块的原始观测值本身就带噪声
典型表现是什么?位置跳变。你看MAVLink日志里的GPS_RAW_INT消息,lat和lon字段突然跳了0.0001度,换算成距离就是10米左右。我遇到过最夸张的一次,飞机在开阔地悬停,GPS位置在5秒内跳了30米,日志里看HDOP从0.8突然飙到2.5。
我的排查习惯:先看GPS_RAW_INT里的fix_type字段。如果从3(3D fix)掉到2(2D fix)甚至1(no fix),那漂移基本就是GPS信号问题。再看satellites_visible,低于10颗星就要警惕了。
二、RTK漂移:高精度定位的脆弱面
RTK(实时动态差分)定位精度能到厘米级,但它有个致命弱点——依赖差分链路。我做过一个农业植保项目,RTK基站架在田埂上,飞机飞了半小时突然偏航2米。查日志发现,RTK的GPS_RTK消息里baseline_length突然变成0,说明基站和移动站之间的链路断了。
| RTK漂移类型 | 日志特征 | 典型原因 |
|---|---|---|
| 固定解丢失 | rtk_fix_type从4(固定解)降到3(浮点解) |
基站信号遮挡、链路延迟 |
| 基线突变 | baseline_length在相邻报文间变化超过0.5m |
多径效应、基站位置错误 |
| 高度漂移 | alt在GLOBAL_POSITION_INT中缓慢爬升或下降 |
大气延迟模型不准、基站高程误差 |
RTK漂移最坑的地方在于——它看起来精度很高,但其实是错的。我记得有一次,日志里rtk_fix_type一直是4,但飞机实际位置偏了1.5米。后来发现是基站坐标输入错了,差分改正数全算歪了。
避坑指南:我曾经被RTK的"假固定解"坑过。现在我的习惯是:在MAVLink日志里同时对比GPS_RAW_INT和GLOBAL_POSITION_INT的经纬度。如果RTK位置和原始GPS位置差超过2米,即使rtk_fix_type是4,也要怀疑差分链路有问题。
三、视觉/激光SLAM漂移:无GPS环境下的累积误差
SLAM(同步定位与地图构建)漂移和GPS漂移本质不同。GPS是绝对定位,误差不累积;SLAM是相对定位,误差会越积越多。说白了,SLAM就像你蒙着眼睛走路,每一步都有小偏差,走远了就不知道偏到哪去了。
视觉SLAM漂移的典型表现是位置缓慢偏移。我在一个室内巡检项目里,飞机飞了5分钟,视觉里程计位置偏了3米。日志里看VISION_POSITION_ESTIMATE的x、y值,每秒钟都在缓慢增加,这就是典型的累积误差。
SLAM漂移的三种模式:
- 尺度漂移:单目视觉无法恢复真实尺度,距离估计越来越不准
- 旋转漂移:IMU和视觉的旋转估计不一致,导致航向偏差
- 高度漂移:气压计和视觉高度融合不好,高度缓慢变化
激光SLAM相对好一些,但也不是万能的。我遇到过激光SLAM在长走廊里漂移的情况——走廊两边都是白墙,激光点云特征太少,匹配算法就懵了。日志里看LIDAR_POSITION的协方差矩阵,对角线元素越来越大,说明滤波器对位置估计越来越没信心。
四、漂移的典型表现:日志里怎么看
不管哪种漂移,最终都会体现在MAVLink的这几个关键消息里。我总结了一个快速排查表:
| 漂移表现 | 相关MAVLink消息 | 关键字段 | 异常阈值 |
|---|---|---|---|
| 位置跳变 | GLOBAL_POSITION_INT |
lat, lon | 相邻报文变化 > 0.00001°(约1米) |
| 高度突变 | GLOBAL_POSITION_INT |
relative_alt | 相邻报文变化 > 0.5m |
| 速度异常 | LOCAL_POSITION_NED |
vx, vy, vz | 悬停时速度 > 0.5m/s |
| 航向漂移 | ATTITUDE |
yaw | 悬停时yaw变化 > 5°/s |
你想想看,飞机悬停时速度应该是0。如果LOCAL_POSITION_NED里的vx、vy持续大于0.3m/s,那肯定是有漂移了。我一般会把这个字段画成曲线图,一眼就能看出是突发跳变还是缓慢漂移。
我的小技巧:在日志分析工具里,把GLOBAL_POSITION_INT的经纬度画成散点图。如果点云集中在一个小圆内,说明定位稳定;如果点云分散成一条线或一个椭圆,那就是有漂移了。椭圆的长轴方向就是漂移的主要方向。
五、三种漂移的对比总结
为了让你更直观地理解,我画了张图:
这张图把三种漂移的核心特征、典型表现和排查方法串起来了。你分析日志时,先判断是哪种漂移,再对症下药。GPS漂移看卫星数和HDOP,RTK漂移看差分链路状态,SLAM漂移看协方差和累积趋势。