打印
[STM32F0]

MPU6050的问题

[复制链接]
935|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Cjy_JDxy|  楼主 | 2017-12-13 14:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0)
                {
                        temp = MPU_Get_Temperature();              //µÃµ½Î¶ÈÖµ
                        MPU_Get_Accelerometer(&aacx,&aacy,&aacz);  //µÃµ½¼ÓËٶȴ«¸ÐÆ÷Êý¾Ý
                        MPU_Get_Gyroscope(&gyrox,&gyroy,&gyroz);        //µÃµ½ÍÓÂÝÒÇÊý¾Ý
                       
我项目中用到测量角度,精确到0.01度。现在用MPU6050,读出的pitch不知道是按什么单位换算的?
应该不是度,因为有时候那个值都1000多了。
高手支招,谢谢!

沙发
antusheng| | 2017-12-13 15:19 | 只看该作者
你引入的参数在哪儿操作的?没看懂。

使用特权

评论回复
板凳
antusheng| | 2017-12-13 15:22 | 只看该作者
Pitch范围是-90~90
原来的Pitch范围是-90~90,Roll范围-180~180,Yaw范围-180~180,四元素换算代码如下:
Roll  = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3;  // roll  
Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3;                  // pitch  
Yaw   = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3;        //yaw  


使用特权

评论回复
地板
antusheng| | 2017-12-13 15:22 | 只看该作者
Pitch范围扩展为-180~180,四元素换算代码如下
Roll = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3;   // roll  
if(fabs(Roll) < 90.0)    Pitch = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3;   
else            Pitch = (fabs(q0* q2 - q1 * q3)/(q0* q2 - q1 * q3)) *(180.0 - fabs(asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3));  
Yaw   = atan2(2*(q1*q2 + q0*q3),q0*q0+q1*q1-q2*q2-q3*q3) * 57.3;        //yaw  

好处是强迫症看起来比较爽,坏处是在-90和90度时,Pitch会突变(其实Roll的变化也很剧烈了)

使用特权

评论回复
5
Cjy_JDxy|  楼主 | 2017-12-13 15:39 | 只看该作者
antusheng 发表于 2017-12-13 15:22
Pitch范围是-90~90
原来的Pitch范围是-90~90,Roll范围-180~180,Yaw范围-180~180,四元素换算代码如下:

谢谢!我明白了。

使用特权

评论回复
6
antusheng| | 2017-12-13 15:52 | 只看该作者
等你做好了,分享一下经验。

使用特权

评论回复
7
Cjy_JDxy|  楼主 | 2017-12-13 15:52 | 只看该作者
antusheng 发表于 2017-12-13 15:52
等你做好了,分享一下经验。

使用特权

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

本版积分规则

个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3530

帖子

19

粉丝