[STM32] 【MPU6050】特殊位置数值错误

[复制链接]
1639|2
 楼主| thy_1994 发表于 2016-11-3 10:59 | 显示全部楼层 |阅读模式
场景:stm32f1通过软件I2C读取MPU6050中DMP输出的四元数,再通过以下公式计算出姿态角
  1. Pitch = asin(-2*q1*q3 + 2*q0*q2)*57.3;                                                       //俯仰角
  2. Roll = atan2(2*q2*q3 + 2*q0*q1, -2*q1*q1 - 2*q2*q2 + 1)*57.3;              //翻滚角
  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单独动作时,动作到一定角度,另外两个轴的数据就突变,如下图(三列从左到右依次为:俯仰角、翻滚角、偏航角):
  1. 0071,0001,0006
  2. 0073,0002,0006
  3. 0075,0002,0007
  4. 0076,0002,0007
  5. 0077,0002,0006
  6. 0077,0001,0005
  7. 0079,0001,0004  //突变处
  8. 0087,-171,-168   //突变处
  9. 0085,-175,-173
  10. 0083,-177,-175
  11. 0082,-176,-174
  12. 0081,-176,-174
  13. 0080,-175,-174
  14. 0079,-175,-173
正**作都会这样。

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

本版积分规则

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

7

主题

31

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部