凡亿专栏 | 陀螺仪与磁力计的姿态融合——互补滤波(续)
陀螺仪与磁力计的姿态融合——互补滤波(续)

大家好,我是学电子的小白白~

上一篇我们讲了陀螺仪与加速度计的数据融合,本篇文章是互补滤波的续篇,接着讲陀螺仪与磁力计的数据融合。

1)为什么需要磁力计的数据

先回忆一下上一篇内容,加速度计是如何修正陀螺仪的呢?

我们是假定了在大部分时间里,载体是静止或者匀速直线运动的,所以可以认为加速度计的测量值,就是重力加速度。但是,在载体水平时,重力加速度的方向与Z轴相同,是无法反映出偏航角yaw的(因为偏航角是绕Z轴旋转,即使偏航角变化,Z轴方向仍然不变,也就是说加速度计无法感知Z轴的旋转)。

而磁力计可以测出地球的磁场,能够得到水平的北向方位,所以引入磁力计的数据,可以用来修正陀螺仪的偏航角。

2)陀螺仪与磁力计融合方法

我们仍然先回忆一下上一篇的内容,陀螺仪与加速度计是怎样融合的,会有助于本篇方法的理解。

陀螺仪与加速度计融合时,我们先是通过当前时刻的姿态转移矩阵,算出了一个重力加速度的方向vx、vy、vz(这个方向包含了陀螺仪的姿态信息);再将这个方向与加速度计测量到的重力加速度方向ax、ay、az对比,求出误差ex、ey、ez,再用误差去修正下一时刻的陀螺仪角速度gx、gy、gz。

本篇中,陀螺仪与磁力计融合时,我们也用类似的方法,先通过姿态转移矩阵的变换,利用当前的姿态信息求出一个磁场的方向;再用它与磁力计测到的磁场方向比对,求出误差,最后用这个误差去修正下一时刻的角速度。

但是,需要注意的是,利用加速度计姿态融合时,由于重力加速的方向只有z向有,x、y向都为0,所以我们可以认为它(方向)是已知的;而地球的磁场并不是完全的水平指向北极,在竖直方向上也有一定的大小,所以它不是个已知量;因此,具体实现的时候,磁力计数据的融合与加速度计有点不同,主要在利用姿态信息求磁场方向的这一步。

假定我们需要修正的姿态,是已经被加速度计修正过的,那么此时的姿态与真实的载体姿态就只存在偏航角yaw的偏移。

修正的主要步骤如下:

a) 磁力计测到的地球磁场数值为mx、my、mz,是在未修正偏航角的载体坐标系下的,可以通过当前的姿态转移矩阵转换到地理坐标系下(n系),转换后的磁力计数据为hx、hy、hz,这组磁力计的数据,与真实的磁场数据,只存在偏航角的偏移:

600dfa4ec00a3f3beb0b3c8c6e428a.jpg

b) 在n系中,假定真实的磁场数据为bx、by、bz,由于z向的磁场数据与偏航角不相关,所以有bz=hz;如果n系的x轴指北,则by=0,bx=√(hx2 hy2),这就是真实的磁场数据。(如果n系y轴指北,则bx=0,by=√(hx2 hy2))。

c) 我们得到了真实的磁场数据后(就想当于加速度计融合时,已知的重力加速度),再通过未修正偏航角的姿态转移矩阵变回到载体系,得到一组载体系下的磁场数据wx、wy、wz,这组数据中就包含了偏航角的偏差信息:

194f1a1b8da1988ec240256ce7b664.jpg

d) 然后就可以用wx、wy、wz与磁力计测到的载体系下真实的mx、my、mz叉乘(求外积),求出偏差。

e) 最后,使用这组偏差去修正陀螺仪的角速度,仍然使用与加速度计数据融合相同的方法,PI后修正。

具体的实现框图如下:

59e9f5c25952af50b458525b9655a9.jpg

融合磁力计数据的主要的代码实现如下:

(这段代码里也包括了加速度计的数据融合,计算误差时,将加速计的误差和磁力计的误差相加后,再求PI去修正陀螺仪的角速度)

cf56d99154835a7e9b7679fa018308.jpg

3)测试验证

上述代码在使用时,只要周期性地获取陀螺仪、加速度计、磁力计的数据,调用互补滤波函数,更新四元数,计算姿态角即可(与上一篇加速度计数据融合用法一样)。

测试一下互补滤波的效果,使用的硬件平台是MPU6050和HMC5883L,处理器是stm32f103c8t6。

初始化时,需要平放几秒钟让加速度计和陀螺仪自行校准。平放时俯仰角和滚转角都接近于0,偏航角依据与地磁北向的夹角有一定初始值。经过较长时间后,俯仰角、滚转角、偏航角都可以保持正确,不会产生误差累积和漂移;姿态变化后,在回到初始位置,也基本不会有偏差,说明陀螺仪的数据得到了修正;磁力计对偏航角的修正是有效的:

2fa37682d872512db7671daa85a36b.jpg


好了,关于互补滤波姿态融合的知识,就讲到这里了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论