关于 gps 漂移引起的 ekf 报错分析
Author:jingwenyi
Date:2016/12/23
最近飞 px4 遇到了一次 ekf 报错,自动 land 的情况。从 mission planner 日志
看如下图:
刚开始看到这个问题,我有点丈二的和尚,不知道什么情况,经过一段时间的摸索,
我确信是 gps 漂移的问题导致的。
下面是 gps 可见星的个数图:
从这张图片我们至少能看出来 gps 可以星的个数变化很剧烈,在 ekf 出问题的时候。
但是可见星都在 14 颗以上,也不能判断就一定是 gps 的出了问题啊。
我无意中查看到了 ekf 的相关记录日志。位置和速度的变化 ekf4 的 SV 和 SP 如
下图:
Pixhawk 的 ekf 检查中会根据 SV 的变化超过预设的 ekf 阈值来判断 ekf 是否出问题
(默认 0.8,可以调到 1.0),现在 SV 的值在 0.95 左右,所以超过了 ekf 默认阈值 0.8,
所以自动切换到 land 模式开始降了。
再查看了 efk 中速度和位置的革新值(ekf3 的 IVN,IVE,IVD;IPN,IPE,IPD),如下图:
基本上着 3 个日志的走势和 ekf 报错是一致的,这里我基本可以这次 ekf 报错是由于速
度的革新值超过了 ekf 设置的范围才导致报错的。那么,又是什么原因导致的速度革
新值会超出设置的范围呢。我猜测是由于 gps 位置漂移导致的。先看看 gps 原始的数
据 log:
纬度变化
经度变化
我粗劣的估计了在 100ms 是时间内漂移的大概有 10m;我这次飞行是自动
(auto)分析的,在这个点应该找点下降了,理论上经纬度应该差异不大。这里我基
本上可以确定是 gps 偏移导致了这次 ekf 报错。
在我所设的起飞点中有一个地方三面都有比较高的建筑物,比我起飞点大约高
了 2.5m 以上,无人机起飞 的时候经常会盘旋飞机,在我们的地面站看到的效果如下:
以下是这个时候 gps 位置和速度的变化量 Gps 纬度:
GPS 经度:
对应的位置速度变化值:
而且每次在该点事速度和位置的变化值都很大。这里再次验证了我的猜想,是 gps 的
漂移导致了位置变化过大,最终导致速度变化很大,才导致 ekf 错误。
通过查阅了一些资料和思考,我打算先尝试下用多阶最小二乘法实时预测下一
个 gps 可能的值,如果获取到的 gps 的位置和前一个 gps 的位置的距离大于了在当前
时间内以无人机现在最大的速度行驶的最大位置,就用最小二乘法估计的 gps 位置作
为 gps 的更新值。
根据经度、纬度的波形走势,我大致想了一个逼近函数
xf
(
t
1
)
xb
t
t
sin
a
t
;
其中对 tb 和 ta 的函数如下方程组:
x
t
1
bx
t
sin
a
;
x
t
bx
t
1
sin
a
;
b
t
kb
t
1
1(
bk
)
;
a
k
ka
t
1
1(
ak
)
;
公式中 tx 是 t 时刻 gps 的经度(或纬度)值, 1tx 是预测的 t-1 时刻的经度(或纬度)
预测值。