搜索
bottom↓
回复: 55

STM32如何处理陀螺仪MPU6050送出的数据?

[复制链接]

出0入0汤圆

发表于 2013-2-5 13:31:49 | 显示全部楼层 |阅读模式
本帖最后由 彬彬啡礼 于 2013-2-5 13:38 编辑

四轴飞行器卡在了飞行姿势调整上。。。不知怎样计算陀螺仪数据,原先还以为像安卓的API一样直接会输出角度数值。。。
这是模块静止水平放置时输出的数据:


我使用的MPU6050模块:


收到的数据跳动很厉害,谷歌搜索了两天了,到现在还是不知道怎样把这些数据转换成角度、加速度和温度数值。求方法,另外说明本人不会微积分。。。

附上我的程序源码:

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2013-2-5 14:14:28 | 显示全部楼层
加速度计和陀螺仪的融合算法
你可以在坛子搜索两轮平衡车。里面有讲解融合算法

出0入0汤圆

 楼主| 发表于 2013-2-5 14:27:40 | 显示全部楼层
quzhanguang1 发表于 2013-2-5 14:14
加速度计和陀螺仪的融合算法
你可以在坛子搜索两轮平衡车。里面有讲解融合算法 ...

好吧我找找

出0入0汤圆

发表于 2013-2-5 14:40:24 | 显示全部楼层
四轴的话要用的四元数算法    这是最底层的东西  安卓的API已经是底层做了融合  上层的东西了

出0入0汤圆

 楼主| 发表于 2013-2-5 15:17:06 | 显示全部楼层
quzhanguang1 发表于 2013-2-5 14:14
加速度计和陀螺仪的融合算法
你可以在坛子搜索两轮平衡车。里面有讲解融合算法 ...

找了本融合算法的PDF,够我消化几天的了。。。

出0入0汤圆

发表于 2013-2-5 15:24:21 | 显示全部楼层
把陀螺仪数据代入龙格库塔方程做积分

出0入0汤圆

发表于 2013-2-5 15:24:45 | 显示全部楼层
当然,我说的陀螺仪数据是指校正过的陀螺仪数据,不是直接使用的。

出0入0汤圆

 楼主| 发表于 2013-2-5 15:32:58 | 显示全部楼层
zywei_09 发表于 2013-2-5 15:24
当然,我说的陀螺仪数据是指校正过的陀螺仪数据,不是直接使用的。

当然要做矫正,不过我一个高中生看到这些微积分表示压力巨大,只能复制粘贴。。。。

出0入0汤圆

发表于 2013-2-5 15:43:13 | 显示全部楼层
学习      

出0入0汤圆

发表于 2013-2-5 15:45:46 | 显示全部楼层
彬彬啡礼 发表于 2013-2-5 15:32
当然要做矫正,不过我一个高中生看到这些微积分表示压力巨大,只能复制粘贴。。。。  ...

用现成的结论,不学懂也可以。MPU6050有好多输出模式,比如我做的飞控里设置的量程是正负2000°,那么看手册上说,这个模式下陀螺仪的灵敏度是16.4LSB,所以把陀螺仪输出的数据除以16.4就是角速度,单位是°/s,然后除以57.3就变成弧度制。

出0入0汤圆

发表于 2013-2-5 15:52:01 | 显示全部楼层
同理,加计你在手册上也可以查到这个灵敏度。我设置的量程是±8g,灵敏度是4096,把加计读出是数值除以4096变成单位为g,然后乘以9.81就变成m/s^2

出0入0汤圆

 楼主| 发表于 2013-2-5 15:53:16 | 显示全部楼层
zywei_09 发表于 2013-2-5 15:52
同理,加计你在手册上也可以查到这个灵敏度。我设置的量程是±8g,灵敏度是4096,把加计读出是数值除以4096 ...


谢谢指导,我先用用你说的方法吧

出0入0汤圆

发表于 2013-2-5 15:54:08 | 显示全部楼层
彬彬啡礼 发表于 2013-2-5 15:32
当然要做矫正,不过我一个高中生看到这些微积分表示压力巨大,只能复制粘贴。。。。  ...

我说的校正时用观测值做数据融合。。。不是初始化时候的校正。。。初始化的校正要采集好多数据然后拟合算偏移量什么的。

出0入0汤圆

 楼主| 发表于 2013-2-5 16:17:24 | 显示全部楼层
zywei_09 发表于 2013-2-5 15:54
我说的校正时用观测值做数据融合。。。不是初始化时候的校正。。。初始化的校正要采集好多数据然后拟合算 ...


之前的确误解了你说的“校正”的含义,不过现在看了些融合算法说明,已经明白了。感谢!

出0入0汤圆

 楼主| 发表于 2013-2-5 16:29:59 | 显示全部楼层
zywei_09 发表于 2013-2-5 15:24
把陀螺仪数据代入龙格库塔方程做积分


既然这个传感器折腾起来这么麻烦,我计划把安卓手机放到飞行器上面,直接用蓝牙串口输出当前飞行器的姿势,STM32根据手机传感器的数据来保持飞行姿势怎么样?

出0入0汤圆

 楼主| 发表于 2013-2-5 16:37:14 | 显示全部楼层
刚测试了一下安卓手机,发现在运动时重力传感器数据也不准确,看来没捷径走。还是慢慢折腾MPU6050吧

出0入0汤圆

 楼主| 发表于 2013-2-5 16:40:42 | 显示全部楼层
但用安卓手机的传感器在低速低空无风的情况下还是勉强可以的,我先用安卓手机做出来,成功之后再进一步研究MPU6050

出0入0汤圆

发表于 2013-2-5 20:05:18 | 显示全部楼层
彬彬啡礼 发表于 2013-2-5 16:40
但用安卓手机的传感器在低速低空无风的情况下还是勉强可以的,我先用安卓手机做出来,成功之后再进一步研究 ...

建议还是用MPU6050,毕竟手机上的传感器不是专门做这个的,而且重量上就不划算。其实MPU6050用起来挺简单的。

出0入0汤圆

 楼主| 发表于 2013-2-5 22:45:50 | 显示全部楼层
zywei_09 发表于 2013-2-5 20:05
建议还是用MPU6050,毕竟手机上的传感器不是专门做这个的,而且重量上就不划算。其实MPU6050用起来挺简单 ...

最终当然要用MPU6050,但是寒假假期很短,我得在这短暂的时间里先把基本的雏形做出来 剩下算法什么的等开学了再研究,毕竟在学校不好折腾硬件

出0入0汤圆

发表于 2013-2-5 22:57:54 来自手机 | 显示全部楼层
高中生就做这些了,这让我等大学生情何以堪啊!

出0入0汤圆

发表于 2013-2-5 23:26:26 | 显示全部楼层
彬彬啡礼 发表于 2013-2-5 22:45
最终当然要用MPU6050,但是寒假假期很短,我得在这短暂的时间里先把基本的雏形做出来 剩下算法什 ...

恩恩,加油~高中就做这些,让大四学长情何以堪,想想我高中的时候那叫一个管得严啊,哪里敢看这些课外的东西。。。哎,应试教育。。。。

出0入0汤圆

发表于 2013-2-7 03:15:20 | 显示全部楼层
LZ我和你读到的数据一样,很奇怪为什么模块静止不动,加速度值却这么大,而且就算断电在上电,加速度值和掉电前一样,而且数据会由模块角度变化而变化。。。迷乱中。。。

本帖子中包含更多资源

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

x

出0入0汤圆

 楼主| 发表于 2013-2-7 03:51:10 | 显示全部楼层
骚黄 发表于 2013-2-7 03:15
LZ我和你读到的数据一样,很奇怪为什么模块静止不动,加速度值却这么大,而且就算断电在上电,加速度值和掉 ...

你把我的代码移植到你的开发板上试试看

出0入0汤圆

发表于 2013-2-7 10:32:20 | 显示全部楼层
彬彬啡礼 发表于 2013-2-7 03:51
你把我的代码移植到你的开发板上试试看

我看你发的代码了,和我参考的主程序部分一模一样,今天又搜了点资料和视频看了下,发现了个问题,所谓的角加速度,貌似并不是沿轴转动的加速度,你可以发现,哪个轴垂直向上,哪个轴的数据就最大,平放的话Z轴向上,所以是最大的。

出40入518汤圆

发表于 2013-2-21 15:51:07 | 显示全部楼层
我的数据也是跳动比较大,基本上低八位没什么价值了~~

出40入518汤圆

发表于 2013-2-21 15:54:12 | 显示全部楼层
本人已经懂得四元数方法,会姿态更新了,现在一直卡在精度上(加速度)。而且自己写的加速度修正姿态的算法不太好,求交流

出0入0汤圆

发表于 2013-2-21 17:00:53 | 显示全部楼层
陀螺读数0和±1,多么完美啊!

出0入0汤圆

发表于 2013-3-5 11:10:38 | 显示全部楼层
zywei_09 发表于 2013-2-5 15:24
把陀螺仪数据代入龙格库塔方程做积分

是不是理想的情况下,陀螺仪积分出来的角度就能当状态数据来使用

出0入0汤圆

发表于 2013-3-5 11:11:24 | 显示全部楼层
智涅 发表于 2013-2-21 15:54
本人已经懂得四元数方法,会姿态更新了,现在一直卡在精度上(加速度)。而且自己写的加速度修正姿态的算法 ...

是参考网上的程序还是,自己研究出的。我一直整不懂四元数

出0入0汤圆

发表于 2013-3-5 12:12:05 | 显示全部楼层
MrLCL 发表于 2013-3-5 11:10
是不是理想的情况下,陀螺仪积分出来的角度就能当状态数据来使用

是的, 在陀螺仪不存在误差的情况下,但实际上由于误差,并且一直在积分,最后得到的累积误差会比较大,所以需要加速度计校正。

出0入0汤圆

发表于 2013-3-6 09:41:40 | 显示全部楼层
zywei_09 发表于 2013-3-5 12:12
是的, 在陀螺仪不存在误差的情况下,但实际上由于误差,并且一直在积分,最后得到的累积误差会比较大, ...

可是现在存在绕一个轴旋转的时候,其他的轴有分量啊。安装的时候不可能放到物体的中心去安装。是不是三个姿态角度,都是正负180,或者0到360

出0入0汤圆

发表于 2013-3-6 18:16:10 | 显示全部楼层
MrLCL 发表于 2013-3-6 09:41
可是现在存在绕一个轴旋转的时候,其他的轴有分量啊。安装的时候不可能放到物体的中心去安装。是不是三个 ...

不清楚你表达什么意思。。。在大地坐标系下来看,机体绕一个轴旋转时在其他轴上有分量,这就需要坐标变换,把机体坐标系下的转动转化到大地坐标系下的转动。

出0入0汤圆

发表于 2013-3-6 20:56:28 | 显示全部楼层
zywei_09 发表于 2013-3-6 18:16
不清楚你表达什么意思。。。在大地坐标系下来看,机体绕一个轴旋转时在其他轴上有分量,这就需要坐标变换 ...

哦,那我就明白了大概意思了

出0入0汤圆

发表于 2013-3-8 15:37:30 | 显示全部楼层
共同学习中。。。

出0入0汤圆

发表于 2013-3-14 15:56:26 | 显示全部楼层
楼主啊,“iic_analog.c”,此模拟非彼模拟也……应该是simulate...

出0入0汤圆

发表于 2013-3-21 22:04:24 | 显示全部楼层
越看越复杂了

出0入0汤圆

发表于 2013-4-18 16:55:51 | 显示全部楼层
正在学习MPU6050,不知道楼主的漂移问题是怎么解决的,能共享下吗?

出0入0汤圆

发表于 2013-4-27 20:12:50 | 显示全部楼层
怎么在串口上显示加速度等数据啊?楼主

出0入0汤圆

发表于 2013-5-24 12:03:34 | 显示全部楼层
线怎么接?int接口还用接吗?

出0入0汤圆

发表于 2013-8-2 09:39:23 | 显示全部楼层
彬彬啡礼 发表于 2013-2-5 14:27
好吧我找找

为什么我没有找到呢,是在阿莫里面找吗?

出0入0汤圆

发表于 2013-9-2 19:43:00 | 显示全部楼层
彬彬啡礼 发表于 2013-2-5 15:32
当然要做矫正,不过我一个高中生看到这些微积分表示压力巨大,只能复制粘贴。。。。  ...

表示看到高中生,表示压力山大。。。。。。。。

出0入0汤圆

发表于 2013-9-2 19:45:53 | 显示全部楼层
骚黄 发表于 2013-2-7 03:15
LZ我和你读到的数据一样,很奇怪为什么模块静止不动,加速度值却这么大,而且就算断电在上电,加速度值和掉 ...

我们俩的数据比较类似,不知道你最后怎么处理的。。。。。。。。。。。。

出0入0汤圆

发表于 2013-9-3 10:10:01 | 显示全部楼层
mark一下

出0入0汤圆

发表于 2013-10-8 16:25:22 | 显示全部楼层
看到高中生三个字,俺也表示压力巨大。但同时也应该庆幸,高中就懂这个,楼主,地球的和平以后就要靠你了!

出0入0汤圆

发表于 2013-10-8 21:50:41 | 显示全部楼层
论坛里有用库的

出0入0汤圆

发表于 2014-1-8 21:48:54 | 显示全部楼层

出0入0汤圆

发表于 2014-1-18 22:51:22 | 显示全部楼层
zywei_09 发表于 2013-2-5 15:45
用现成的结论,不学懂也可以。MPU6050有好多输出模式,比如我做的飞控里设置的量程是正负2000°,那么看 ...

大神请问一下你,按照数据手册把Gyroscope读出来,除以LSB,得到的是每个轴的旋转角速度是吧?这个角速度有正负么?请问能加一下您的qq就这个问题稍微请教下么?读了很多遍没看到相关的内容,又很迷惑。求大神指导!我的QQ是474465933. 因为等级不够不能发站内,麻烦您了。

出0入0汤圆

发表于 2014-1-23 20:01:29 | 显示全部楼层
高中生都能这么强啊,汗~

出0入0汤圆

发表于 2014-3-19 21:05:41 | 显示全部楼层

出0入0汤圆

发表于 2014-4-22 17:05:49 | 显示全部楼层
zywei_09 发表于 2013-2-5 15:45
用现成的结论,不学懂也可以。MPU6050有好多输出模式,比如我做的飞控里设置的量程是正负2000°,那么看 ...

太好了,我也弄懂了

出0入10汤圆

发表于 2014-5-15 22:22:06 | 显示全部楼层
骚黄 发表于 2013-2-7 03:15
LZ我和你读到的数据一样,很奇怪为什么模块静止不动,加速度值却这么大,而且就算断电在上电,加速度值和掉 ...

很正常啊,因为有个重力加速度,可以去理解下输出的数据有什么含义先。

出0入0汤圆

发表于 2014-8-28 21:13:36 | 显示全部楼层
js200300953 发表于 2013-2-21 17:00
陀螺读数0和±1,多么完美啊!

大神,总是很低调。 我陀螺仪(MPU6050)Yaw方向如何进行卡尔曼滤波。 ( pitch,roll 可以根据重力的分量直接由加速度计计算出角度, 而yaw 不行呀) , 我在做直升飞机,只用到一个yaw。 表示之前做四轴读了您很多帖子,方便加好友吗?

出0入0汤圆

发表于 2014-9-24 16:04:27 | 显示全部楼层
看看,O(∩_∩)O谢谢

出0入0汤圆

发表于 2014-9-27 00:49:04 | 显示全部楼层
自古王道 来自2楼啊

出5入4汤圆

发表于 2014-9-27 01:18:13 | 显示全部楼层
问楼主一个问题,加速度计+陀螺仪 最后可以得到运动物体的姿态,能知道当前的速度值不?

出0入0汤圆

发表于 2014-11-23 22:18:30 | 显示全部楼层
Mark 一下
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 13:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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