江南 发表于 2012-10-29 10:24:42

MPU6050计算角度

short MPU6050_Get_Angle(float x,float y,float z,u8 dir)
{
        float temp;
        float res=0;
        switch(dir)
        {
                case 0://与自然Z轴的角度
                        temp=sqrt((x*x+y*y))/z;
                        res=atan(temp);
                        break;
                case 1://与自然X轴的角度
                        temp=x/sqrt((y*y+z*z));
                        res=atan(temp);
                        break;
                case 2://与自然Y轴的角度
                        temp=y/sqrt((x*x+z*z));
                        res=atan(temp);
                        break;
        }
        return res*1800/3.14;//把弧度转换成角度
}

shenhaiyu 发表于 2012-10-29 11:57:41

感谢分享~~~以后能用到!!~~~

Randy 发表于 2012-10-29 12:34:26

这个很好,不错,对初学者学这个芯片的话很好的思路!

Malc 发表于 2012-10-30 21:24:53

本帖最后由 Malc 于 2012-10-30 21:28 编辑

有更简单的
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
angleAx=atan2(ax,az)*180/PI;
计算量更少,而且atan2返回值范围-PI~PI

葱拌豆腐 发表于 2013-2-6 15:25:26

Malc 发表于 2012-10-30 21:24 static/image/common/back.gif
有更简单的
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
angleAx=atan2(ax,az)*180/PI;


我觉得atan2计算出来的值和楼主计算的角度是不一样的,楼主计算的是这个图片中http://image.geek-workshop.com/forum/201208/22/1638594bjbb147i1lqb7cz.png的角度,atan2计算的是这个图片中的角度http://image.geek-workshop.com/forum/201208/22/163859eepfepkeh1glt1lw.png

robotouch 发表于 2013-3-14 22:56:05

葱拌豆腐 发表于 2013-2-6 15:25 static/image/common/back.gif
我觉得atan2计算出来的值和楼主计算的角度是不一样的,楼主计算的是这个图片中的角度,atan2计算的是这个 ...

你好,我看到有些资料说利用三轴角速度可测量转过的角度,但是不理解其中的原理。您能详细科普一下吗?谢谢啦!

葱拌豆腐 发表于 2013-3-15 10:52:10

robotouch 发表于 2013-3-14 22:56 static/image/common/back.gif
你好,我看到有些资料说利用三轴角速度可测量转过的角度,但是不理解其中的原理。您能详细科普一下吗?谢 ...

角速度传感器输出的是某个轴的角速度,所以,如果想计算某个轴的角度(一般是相对于自然坐标轴),那么只需要对角速度进行积分就可以了,举例来说,我们现在要测量X轴的角度,那么先假设起始状态x轴和自然坐标轴的角度为0,那么现在你可以将x轴想象成一辆只有速度仪表的汽车,汽车按照一定的速度行驶在一段时间后,如果你要计算汽车(x轴)到起始点的距离(x轴和自然周的角度),那么你只需要用车速(x轴的角速度)*时间就可以算出来了。
当然,传感器的角速度输出严格来说是一个瞬时值,实际中不太可能是一个匀速值,所以需要做一些处理。
希望对你有帮助。我也是刚接触这个东西,共同学习吧。

robotouch 发表于 2013-3-15 23:22:52

葱拌豆腐 发表于 2013-3-15 10:52 static/image/common/back.gif
角速度传感器输出的是某个轴的角速度,所以,如果想计算某个轴的角度(一般是相对于自然坐标轴),那么只 ...

:handshake 谢谢前辈耐心讲解!

孙朝(sz) 发表于 2013-4-8 21:46:18

葱拌豆腐 发表于 2013-3-15 10:52 static/image/common/back.gif
角速度传感器输出的是某个轴的角速度,所以,如果想计算某个轴的角度(一般是相对于自然坐标轴),那么只 ...

你好,请问mpu6050的传感器,既可以求加速度,也可以算出角度?如果我想消除重力加速度的影响,有木有什么办法?

葱拌豆腐 发表于 2013-4-8 22:10:07

孙朝(sz) 发表于 2013-4-8 21:46 static/image/common/back.gif
你好,请问mpu6050的传感器,既可以求加速度,也可以算出角度?如果我想消除重力加速度的影响,有木有什么 ...

具体的我也没做过,根据我了解的一些信息提供以下几个方法:第一通过滤波器,过滤掉重力角速度的影响;第二看你需要计算那个轴的加速度,想办法保持这个轴和重力成90度角;第三将两个陀螺仪安装到一个平面,其中一个作为测量平面的倾斜角度,另外一个作为测量加速度,通过角度来反推消除重力加速度对其他各轴的影响。第四如果你需要测量的加速度远大于重力加速度,那么这个基本就不是个问题了。
你可以查阅一下重力加速度计的手册,一般都推荐第一种方式。

孙朝(sz) 发表于 2013-4-10 13:34:28

葱拌豆腐 发表于 2013-4-8 22:10 static/image/common/back.gif
具体的我也没做过,根据我了解的一些信息提供以下几个方法:第一通过滤波器,过滤掉重力角速度的影响;第 ...

多谢!我再试试~~

Microsoft 发表于 2013-5-1 13:59:23

楼主的方法很对,我蒙了半天才明白啥意思,哈哈哈

GoStop 发表于 2013-5-26 09:18:10

葱拌豆腐 发表于 2013-4-8 22:10 static/image/common/back.gif
具体的我也没做过,根据我了解的一些信息提供以下几个方法:第一通过滤波器,过滤掉重力角速度的影响;第 ...

高手啊,三个方法都不错

风也萧萧 发表于 2013-7-1 17:47:28

请问一下楼主,通过这种方法计算出来的角度与通过四元数计算出来的角度有什么关系?

楚之珩 发表于 2013-8-23 11:45:21

你好,这个可以测平面旋转角度么,就是装在小车上面来测小车的转弯角度
页: [1] 2 3
查看完整版本: MPU6050计算角度