本帖最后由 ersh 于 2016-4-16 14:46 编辑
最近在用STM32采集MPU6050的数据,经分析处理后做一些识别类的工作,不过暂时不是用于做四轴的,知道坛上用过这款传感器的比较多,所以来请教一下。
首先,我是直接淘了一个MPU6050的现成模块,mpu6050+mcu(估计是颗stm8)。猜测其原理如下:
模块的mcu通过i2c读取mpu6050的三轴线加速度以及三轴角速度,并通过一定的算法,获得了xyz的转动角(其中z轴不准),封装成帧后通过串口输出模块,我现在使用其实就是stm32直接串口通信读数据然后干自己的事而已,不过还是想弄清楚mpu6050的一些原理,因为模块mcu代码不开源,后续应用还是希望跳过它自己直接取6050的数据,那么问题来了——
看了官方的datasheet,介绍到6050是集成了dmp的,dmp的作用就是通过特定的算法求解姿态的
1.dmp这个功能是否通过i2c接口打开关闭?
2.假如我直接读dmp出来的数据,获得的是不是xyz三轴加速度、角速度、解算后的角度?而其中加速度和角度度本来就是传感器测出来的,dmp对这两者还会做什么处理么?例如一些平滑滤波,降噪。
3.既然有dmp可以使用,为什么很多飞行器、6050的应用资料、介绍也好,都是直接取原始数据然后再做一遍解算,求出roll pitch yaw,求角的时候涉及互补滤波、卡尔曼滤波(估计不一定全部用得上,我认为作用主要在于消去纯角速度积分带来的漂移,从而获得稳定的角度值),凡事总有原因,为什么还要特意做这么一下,难道说自带dmp的精度不够?
4.由于买回来的模块只有一份6050datasheet加寄存器手册(这两份东西也是一直流传于网上),但是里面关于dmp的应用其实并没有具体说明,例如如何打开,如何操作,输入输出是什么,是否还有一些相关文档?如果有估计我也不会有以上那么多不清楚的地方了。
谢谢各位。 |