1姿势检测
1.1 Roll-Pitch-Yaw模型和姿态计算是表示飞机当前飞行姿态的常用模型之一,建立下图所示坐标系,用Roll表示绕x轴旋转,用pitch表示绕y轴旋转,用yaw表示绕z轴旋转。
MPU6050可以获得3个轴方向的加速度,而地球的重力长期存在,永远垂直向下,所以可以以重力加速度相对于芯片的方向为基准计算出现在的姿势。
为了方便起见,芯片正面朝下固定在上图的飞机上,坐标系和飞机坐标系完全一致,以3个轴方向的加速度为成分,可以构成加速度矢量a(x,y,z )。 假设当前码片处于等速直线运动状态,a垂直于地面,即指向z轴负方向,模长为|a|=g=sqrt{X^ 2 Y^ 2 z^ 2}。 当芯片(坐标系)旋转时,加速度向量a仍然垂直向上,因此z轴的负方向不再与a重合。 请参照下图。
为了方便,上图坐标系的z轴正方向(机腹及芯片正面)向下,x轴正方向)飞机前进方向)向右。 此时,芯片的滚转角是加速度矢量与投影在XZ平面上的) x、0、z )所成的角,俯仰角)绿色)与投影在YZ平面上的) 0、y、z )所成的角。 要计算两个向量之间的角,请将点乘以表达式。 通过简单的推导就可以得到。
然后呢
请注意,arccos函数只返回正角度,因此在某些情况下需要为角度取正值和负值。 如果y值为正,则滚动角为负值,如果x轴为负,则俯仰角为负值。
1.2 Yaw角问题由于没有参考量,无法求出现在的Yaw角的绝对角度,只能得到Yaw的变化量,即角速度GYR_Z。 当然,通过对GYR_Z进行积分可以推测当前的Yaw角,但是由于测量精度的问题,推测值会发生漂移,过了一段时间就完全失去了意义。 但是,在很多APP应用中,如无人机,获取GRY_Z就可以了。
在必须获得绝对的Yaw角度的情况下,必须选择被称为MPU9250的9轴运动跟踪芯片。 这可以提供额外的三轴指南针数据,这可以从地球磁场方向计算Yaw角度。 具体方法在此不赘述。
在2 MPU-6050 1,16位ADC中,每轴输出的数据是2^16,也就是-32768 — 32768
2、高达400kHz的高速I2C或高达20MHz的SPI串行主机接口
2.1陀螺灵敏度可测量范围dps灵敏度LSB25013150065.5100032.8200016.4设置为250,-32768 —- 32768表示-250 — 250
角速度数据 = (pi/180) * 轴原始数据 / 加速度灵敏度 (rad/s)
Data=数据前8位|数据后8位
Pi=3.1415926;
=(pi/180 )数据/16.4 ) rad/s )
2.2加速度灵敏度可测量范围g灵敏度LSB2163844819284096162048http://www.Sina.com /
Data=数据前8位|数据后8位
a=9.8*data/2048(m/s^2) )
3 LSM6DS3
从传感器获取的数据以LSB为单位,需要转换单位
3.1加速度加速度数据 = 轴原始数据 / 加速度灵敏度
2g时,加速度数据=轴元数据* 0.061 (切换单位为mg )/1000 (切换单位为g ) )
换算后如下。
加速度数据 = 轴原始数据 * Typ / 1000
可测量范围g灵敏度LSB216393.4448196.7284098.36162049.183.2陀螺仪*角速度数据=(pi/180轴原始数据* Typ/1000
125时,加速度数据=(pi/180 )轴元数据) * 4.375 )切换单位为mbps )/1000 )切换单位为bps )
换算后如下。
*角速度数据=(pi/180 )轴原始数据/加速度灵敏度
可测范围dps灵敏度LSB125228.57250114.2950057.14100028.57200014.29校准是一项比较简单的工作,晃动的数据只需要找到中心点。 举例来说,当芯片处理静止状态时,理论上该读数必须为0,但经常存在偏移。 例如,在以10ms的间隔读取10个值的情况下,如下。
-158.4、-172.9、-134.2、-155.1、-131.2、-146.8、-173.1、-188.6、-142.7和-179.5这10个值的平均值,即此读数的偏移当然,这个偏移量是估计值,相对准确的偏移量需要统计大量的数据才能知道。 数据量越大越准确,但统计所需的时间也越慢。 一般的校准可以在每次启动系统时进行
进行,那么你应当在准确度和启动时间之间做一个权衡。 算法求欧拉角 四元数法可通过软件实现,六个数据转化成四元数(q0、q1、q2、q3),然后四元数转化成欧拉角(P、R、Y 角)
芯片自身也带这个功能,通过配置DMP可以快速获取欧拉角(P、R、Y 角)