极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 115609|回复: 40

MPU6050计算角度

  [复制链接]
发表于 2012-10-29 10:24:42 | 显示全部楼层 |阅读模式
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;//把弧度转换成角度
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2012-10-29 11:57:41 | 显示全部楼层
感谢分享~~~以后能用到!!~~~
回复 支持 反对

使用道具 举报

发表于 2012-10-29 12:34:26 | 显示全部楼层
这个很好,不错,对初学者学这个芯片的话很好的思路!
回复 支持 反对

使用道具 举报

发表于 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
有更简单的
accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
angleAx=atan2(ax,az)*180/PI;

我觉得atan2计算出来的值和楼主计算的角度是不一样的,楼主计算的是这个图片中的角度,atan2计算的是这个图片中的角度

回复 支持 反对

使用道具 举报

发表于 2013-3-14 22:56:05 | 显示全部楼层
葱拌豆腐 发表于 2013-2-6 15:25
我觉得atan2计算出来的值和楼主计算的角度是不一样的,楼主计算的是这个图片中的角度,atan2计算的是这个 ...

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

使用道具 举报

发表于 2013-3-15 10:52:10 | 显示全部楼层
robotouch 发表于 2013-3-14 22:56
你好,我看到有些资料说利用三轴角速度可测量转过的角度,但是不理解其中的原理。您能详细科普一下吗?谢 ...

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

使用道具 举报

发表于 2013-3-15 23:22:52 | 显示全部楼层
葱拌豆腐 发表于 2013-3-15 10:52
角速度传感器输出的是某个轴的角速度,所以,如果想计算某个轴的角度(一般是相对于自然坐标轴),那么只 ...

谢谢前辈耐心讲解!
回复 支持 反对

使用道具 举报

发表于 2013-4-8 21:46:18 | 显示全部楼层
葱拌豆腐 发表于 2013-3-15 10:52
角速度传感器输出的是某个轴的角速度,所以,如果想计算某个轴的角度(一般是相对于自然坐标轴),那么只 ...

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

使用道具 举报

发表于 2013-4-8 22:10:07 | 显示全部楼层
孙朝(sz) 发表于 2013-4-8 21:46
你好,请问mpu6050的传感器,既可以求加速度,也可以算出角度?如果我想消除重力加速度的影响,有木有什么 ...

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

使用道具 举报

发表于 2013-4-10 13:34:28 | 显示全部楼层
葱拌豆腐 发表于 2013-4-8 22:10
具体的我也没做过,根据我了解的一些信息提供以下几个方法:第一通过滤波器,过滤掉重力角速度的影响;第 ...

多谢!我再试试~~
回复 支持 反对

使用道具 举报

发表于 2013-5-1 13:59:23 | 显示全部楼层
楼主的方法很对,我蒙了半天才明白啥意思,哈哈哈
回复 支持 反对

使用道具 举报

发表于 2013-5-26 09:18:10 | 显示全部楼层
葱拌豆腐 发表于 2013-4-8 22:10
具体的我也没做过,根据我了解的一些信息提供以下几个方法:第一通过滤波器,过滤掉重力角速度的影响;第 ...

高手啊,三个方法都不错
回复 支持 反对

使用道具 举报

发表于 2013-7-1 17:47:28 | 显示全部楼层
请问一下楼主,通过这种方法计算出来的角度与通过四元数计算出来的角度有什么关系?
回复 支持 反对

使用道具 举报

发表于 2013-8-23 11:45:21 | 显示全部楼层
你好,这个可以测平面旋转角度么,就是装在小车上面来测小车的转弯角度
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 08:34 , Processed in 0.043116 second(s), 29 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表