关于MPU9250的六轴DMP和九轴MPL
作者:互联网
九轴MPL刷新的最快频率应该是200HZ,直接出三个欧拉角--偏航、俯仰、翻滚,三轴加速度、角速度、磁力值和温度都能读,有单独的读取函数,读出来的都是原始值,还要处理(例程正点原子的实验_ MPU9250九轴传感器实验,用的不是中断,是一直读取,不过也挺快),用的是I2C,如果想用SPI,只需换一下底层即可参考SPI读取MPU9250数据
如果不用中断总是出现每次读取MPL一次后要复位一次(mpu_reset_fifo),这里面有延时函数造成总体时间过长,不知道为什么(应该是仿真造成的时间不连续),用了中断(9250有中断引脚)后,连续读取1000次数据,用时5秒多,基本上最快了
DMP和MPL的库不一样,官方没开源,有的函数比如 inv_enable_9x_sensor_fusion();是无法查看具体内容的,KEIL跳转不过去的,属于内部引用函数
MPL运行后必须先将磁力计8字校准才能调用出MPL的数据,否则是六轴的MPL,数据虽然比DMP要准,实测一小时偏不了0.1度,当然DMP要比不用DMP准(不用算法的话),六轴MPL的数据每次开机不管载体朝向那,数值都是固定的;九轴虽然也是每次重启数据都是0,但是8字校准完成后数据就是相对地球的位置方向角度了,波动比较大,注意是波动不是漂移,大概有4、5度,但是不管过多长时间都是围绕某个值波动,不会漂移,可以用一个中值滤波或滑动平均滤波处理一下
磁力计校准完成后,函数inv_build_compass(compass,0,sensor_timestamp); //把磁力计值发给MPL 中compass会置为3,如果有强磁场干扰或者未校准会置0
磁力计如果收到的外界磁场过大时,九轴MPL会自动切换为六轴
也可以不用MPL,手动IMU融合,有算法更直观但是占用运算资源,参考IMU姿态融合或者椭球拟合的原理
标签:九轴,读取,校准,MPL,DMP,磁力计 来源: https://blog.csdn.net/Fei_Yang_YF/article/details/94307921