基于MPU9250的madgwick算法姿态漂移问题原因
目录
0、声明
因为这个是现象是不是共性目前本人还没研究过,只是在个体问题研究的基础上得出的结论,或许我买到的MPU9250是一个盗版:),所以只具备参考性。
1、现象
使用MPU9250的加速度计、角速度计、磁力计(AK8963)原始数据输入到madgwick算法中,得到的姿态最终会在停止姿态变化后仍然漂移一小段时间。其中加速度计和角速度计读取速率为400hz,磁力计为100hz,加速度计采样范围±2g,角速度计采样范围1000deg/s,磁力计采样范围是官方的固定值。
2、原因
从传感器的原始数据得出的结论是磁力计的输出不准确导致了漂移现象。已经使用磁力计校准算法校准后,结果仍然没有改善。AK8963的磁力计校准前结果如图1,可以看到圆心完全不在(0,0,0)上、校准后的结果如图2似乎和圆心差距更大了。
图1
图2
3、解决方法
使用外置磁力计,不再使用MPU9250内部的AK8963磁力计。这里使用的是QMC5883L,外置磁力计校准前的数据如图3可以看到距离圆心(0,0,0)还是比较远的,校准后的数据如图4,可以看到效果好了很多,原始数据在空间各个姿态中测量的矢量形成的圆,其圆心基本都在(0,0,0)。
图3
图4
4、最终的效果对比
未使用外置磁力计,在acc、gyro、ak8963数据校准后输入到算法后,最终输出的姿态变化过程,最后姿态会漂移。
使用外置磁力计,在acc、gyro、qmc5883l数据校准后输入到算法后,最终输出的姿态变化过程,最后姿态几乎不会漂移。
5、结论
使用MPU9250内置ak8963输出的数据解算后得到的姿态和acc、gyro融合后的姿态非常不一致,由于两者姿态不一致,因此在acc和gyro数据融合得到的姿态稳定后会被错误的磁力计所得的姿态缓慢的“校准”,所以最后的现象就是姿态稳定后会缓缓地漂移。