一、MPU6050简介
1、内部主要结构:
陀螺仪、加速度计、数字运动处理器DMP(Digital Motion Processor)
PS: MPU6050还含有第二IIC接口,用于连接一个 第三方数字传感器AUXAUX_DA(eg.磁力计),就可以通过IIC接口输出完整的9轴信号。(否则只有6轴)。
2、连接接口:
(1)IIC接口:SCL、SDA
(2)供电接口:VCC、GND
(3)外部接口(不常用):AUX_CL
3、姿态角
通过MPU6050读取加速度和角度的原始数据,DMP将原始角速度转化为四元数,进而完成欧拉角的计算。
(旋转方向通过右手螺旋定则判断)
欧拉角:俯仰角pitch、横滚角roll、航向角yaw
PS:只有确定了x-y-z的先后转换的六种组合顺序,才能确定欧拉角所指的姿态角是什么。
2、角速度积分
还有一个数据就是可以通过角速度积分就可以获取角度了,但是角速度积分会存在积分的通病,就是会产生累计误差,从而造成偏移,因此在水平方向就会产生一个误差,这个误差是六轴传感器无法避免的。
DMP介绍
DMP就是MPU6050内部的运动引擎,全称Digital Motion Processor,直接输出四元数,可以减轻外围微处理器的工作负担且避免了繁琐的滤波和数据融合。Motion Driver是Invensense针对其运动传感器的软件包,并非全部开源,核心的算法部分是针对ARM处理器和MSP430处理器编译成了静态链接库,适用于MPU6050、MPU6500、MPU9150、MPU9250等传感器。
使用 MPU6050 的 DMP 输出的四元数是 q30 格式的,也就是浮点数放大了 2 的 30 次方倍。在换算成欧拉角之前,必须先将其转换为浮点数,也就是除以 2 的 30 次方,然后再进行计算,计算公式为:
q0=quat[0] / q30; //q30 格式转换为浮点数
q1=quat[1] / q30;
q2=quat[2] / q30;
q3=quat[3] / q30;
使用
IIC 接口