对于四轴的初学者,可能无法理解四轴源代码里面陀螺仪和加速度数据的那些数学转换方法。下面我们来具体描述下这些转换方法。
我们首先来看陀螺仪数据。在MPU6050的手册里面,提供了一个陀螺仪数据表如下:
在表格里面,列出了当寄存器FS_SEL选择不同数值时的陀螺仪量程范围。 以四轴常用的FS_SEL=3为例,这时陀螺仪的量程为-2000到+2000。
由于MPU6050采用的是16位带符号数作为陀螺仪测量数据输出,即数据类型是int16。所以以16进制来表示,最小的数是FFFF,由于最高位为符号位,所以相当于-7FFFF,即-32767;最大的数是7FFF,即32767。
综合上述的描述,我们可以得到,数字-32767对应-2000度每秒的陀螺仪角速度,32767对应2000度每秒的陀螺仪角速度。把32767除以2000,就可以得到16.40, 即我们说的灵敏度。
从上面的计算可知,把从陀螺仪读出的数字除以16.40,就可以换算成陀螺仪的角速度数值。举个例子,如果我们从陀螺仪读到的数字是1000,那么对应的角速度数据是1000/16.40=61度每秒。
在四轴姿态计算中,我们通常要把角度换算成弧度。我们知道2Pi代表360度,那么1度换算成弧度就是:2Pi/360=(2*3.1415926)/360=0.0174532。用倒数表示就是:1/57.30
通过上述分析,我们就可以知道,当采用量程为-2000到+2000的范围,把我们从陀螺仪获取的数据做如下处理,就可以用于四元数的姿态解算(用gyro_x来代表从陀螺仪读到的数据): gyro_x/(16.40*57.30)=gyro_x*0.001064,单位为弧度每秒。
接下来,我们看加速度计:
采用和陀螺仪同样的计算方法,当AFS_SEL=3时,数字-32767对应-16g,32767对应16g。把32767除以16,就可以得到2048, 即我们说的灵敏度。把从加速度计读出的数字除以2048,就可以换算成加速度的数值。举个例子,如果我们从加速度计读到的数字是1000,那么对应的加速度数据是1000/2048=0.49g。g为加速度的单位,重力加速度定义为1g, 等于9.8米每平方秒。
上文详细描述了MPU6050传感器陀螺仪和加速度数据的单位换算方法,如需转载,请勿用于商业目的,并注明:该文章出自圆点博士无人机www.bspilot.com