定位漂移现象: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漂移 绝对定位误差 RTK漂移 差分链路异常 SLAM漂移 累积相对误差 位置跳变 高度突变 速度异常 核心区别 GPS漂移:卫星信号问题,误差不累积 RTK漂移:差分链路问题,精度高但脆弱 SLAM漂移:特征匹配问题,误差随时间累积 MAVLink日志排查:GLOBAL_POSITION_INT + LOCAL_POSITION_NED 对比相邻报文、画散点图、看协方差矩阵

这张图把三种漂移的核心特征、典型表现和排查方法串起来了。你分析日志时,先判断是哪种漂移,再对症下药。GPS漂移看卫星数和HDOP,RTK漂移看差分链路状态,SLAM漂移看协方差和累积趋势。