打印
[STM32]

【MPU6050】特殊位置数值错误

[复制链接]
1286|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
thy_1994|  楼主 | 2016-11-3 10:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
场景:stm32f1通过软件I2C读取MPU6050中DMP输出的四元数,再通过以下公式计算出姿态角
Pitch = asin(-2*q1*q3 + 2*q0*q2)*57.3;                                                       //俯仰角
Roll = atan2(2*q2*q3 + 2*q0*q1, -2*q1*q1 - 2*q2*q2 + 1)*57.3;              //翻滚角
Yaw = atan2(2*(q1*q2 + q0*q3), q0*q0 + q1*q1 - q2*q2 - q3*q3)*57.3;   //偏航角


现象:偏航角Yall可以单独动作,范围0~±180(实际±175左右),翻滚角Roll也可以单独动作,范围0~±180(实际±175左右),可是当俯仰角Pitch单独动作时,动作到一定角度,另外两个轴的数据就突变,如下图(三列从左到右依次为:俯仰角、翻滚角、偏航角):
0071,0001,0006
0073,0002,0006
0075,0002,0007
0076,0002,0007
0077,0002,0006
0077,0001,0005
0079,0001,0004  //突变处
0087,-171,-168   //突变处
0085,-175,-173
0083,-177,-175
0082,-176,-174
0081,-176,-174
0080,-175,-174
0079,-175,-173
正**作都会这样。

求助:有没有朋友遇到过这样的问题,该如何解决?这是MPU6050固有问题,还是我程序或者公式的问题?
另外,因为没有使用磁力计的原因,还出现了一个老早就有人提出的现象:当MPU6050旋转一圈回到原位时,偏航角的误差已经达到10度。想知道,解决这个误差只能通过增加磁力计吗?

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:生命不息,学习不止。

7

主题

31

帖子

1

粉丝