极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 120873|回复: 84

牛人用MPU6050做的串口输出模块,硬件卡尔曼滤波,直接输出角度

[复制链接]
发表于 2013-8-26 15:55:18 | 显示全部楼层 |阅读模式
本帖最后由 zhaowenwin 于 2013-9-4 09:02 编辑

前几天无聊逛TB时看到有位大牛做的MPU6050模块,号称内部集成了数字滤波和姿态结算技术,网上大部分MPU6050模块都是I2C接口的,而这家做成了串口,接口倒是方便许多,还有完整的上位机程序。

于是手贱地搞了一个,今天测试发现效果确实不错,尤其是俯仰角和滚转角的输出相当稳定,跟随也快,运算速度居然能达到100Hz。

非常好奇人家的姿态滤波是怎么做的,我试过用重力的分量算俯仰角和姿态角,但直接计算的精度很差,静态的稳定性都只能到0.1度,特别是在运动的时候,姿态误差更大,而买的那个模块却很稳定,动态解算的精度也很高。

有没有哪位高手能透露一下怎么做姿态解算呢?我目测人家的模块应该也是MPU6050+CPU的结构,咋搞的呢,求指导~

感谢大家的关注,很多网友都质疑淘宝卖家的产品不是用滤波算法做的,而是利用的MPU6050内部的MDP处理的。32楼有个调查,大家都来发表一下意见,质疑的声音多了,不信淘宝卖家看不见,打击虚假宣传,让卖家拿出使用了动态滤波技术证据来!强烈要求开源算法。我先去发言了,路过的朋友,发表一下意见啊~

TB的地址就不发了,避免广告嫌疑,有感兴趣的朋友们可以在TB搜索"串口MPU6050",就能找到。
附几张模块的图:

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2013-8-26 22:54:23 | 显示全部楼层
弘毅 发表于 2013-8-26 20:27
才看到这么好的帖子。。。。强烈加精

第一次发帖就被精啦~~好开心,我会继续努力的!!
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2013-8-26 16:01:49 | 显示全部楼层
没人回复?自己顶起!
回复 支持 反对

使用道具 举报

发表于 2013-8-26 16:36:04 | 显示全部楼层
{:soso_e103:}也想知道算法。。。
回复 支持 反对

使用道具 举报

发表于 2013-8-26 16:39:02 | 显示全部楼层
貌似是一个STM8做的
回复 支持 反对

使用道具 举报

发表于 2013-8-26 16:42:45 | 显示全部楼层
店主写的输出参数,频率是100hz,由此应该是用芯片自带dmp输出数据了,dmp有几档默认是100hz,最高输出200hz,这个是芯片硬件实现的算法,所以很稳定吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-26 16:56:47 | 显示全部楼层
弘毅 发表于 2013-8-26 16:39
貌似是一个STM8做的

不会吧,STM8是8位的单片机,能做姿态解算和滤波吗?那个计算量好像比较大
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-26 16:59:14 | 显示全部楼层
pz_cloud 发表于 2013-8-26 16:42
店主写的输出参数,频率是100hz,由此应该是用芯片自带dmp输出数据了,dmp有几档默认是100hz,最高输出200h ...

目前的MPU6050的DMP国内还没用人能用起来吧,那个好像比较复杂,感觉应该是滤波算法发挥了作用
回复 支持 反对

使用道具 举报

发表于 2013-8-26 17:17:49 | 显示全部楼层
刚搜了一下TB,LZ就是淘宝的卖家,看名字就知道 。这个明显就是用MPU6050内置的DMP处理器,MCU是8位机只做一些初始化的工作和串口通信,DMP网上很多资料,自己移植一下就行了,什么动态卡尔曼算法都是吹的。原本你正常卖个产品打个广告,我也不想捅破你,但是你加了一些不实的信息进去,误导用户,我就要鄙视你,最讨厌忽悠客户的奸商
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-26 17:28:10 | 显示全部楼层
cshp138 发表于 2013-8-26 17:17
刚搜了一下TB,LZ就是淘宝的卖家,看名字就知道 。这个明显就是用MPU6050内置的DMP处理器,MCU是8位机只做 ...

哎,无奈爹妈给我取了个大众名字,不解释了。。。DMP不加滤波是不可能得到稳定的输出数据的,没有滤波姿态就会随着时间漂移,有累计误差,不会一直得到稳定的输出,我用原始数据累加积分试过,精度达不到模块自身输出地那个精度的。俯仰角和滚转角不修正的话,误差会越来越大。短时间还可以,长时间根本没法用。
回复 支持 反对

使用道具 举报

发表于 2013-8-26 17:52:23 | 显示全部楼层
zhaowenwin 发表于 2013-8-26 17:28
哎,无奈爹妈给我取了个大众名字,不解释了。。。DMP不加滤波是不可能得到稳定的输出数据的,没有滤波姿态 ...

DMP融合数据处理可以得出与比较专业的滤波算法差不多的结果,我自己也用过DMP,用几个小时效果都不错,DMP有自修正的处理,除了偏航角只能对陀螺仪Z轴做积分,如果没有地磁做修正,会有漂移,其它角度,加速度,角速度得出来的数据都很稳定。从你IC外围元件就知道是STM8S103F,flash最多8K,RAM1K,根本没有多余空间做复杂的处理,简单的处理又不会有多大的作用。居然还在装模作样。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-26 19:18:17 | 显示全部楼层
cshp138 发表于 2013-8-26 17:52
DMP融合数据处理可以得出与比较专业的滤波算法差不多的结果,我自己也用过DMP,用几个小时效果都不错,DM ...

看来10#是硬件方面的专家了,能通过外形猜出芯片的型号,不过我和卖家沟通过,他说没用过DMP,姿态解算确实是卡尔曼滤波算法搞出来的,因为高效率的滤波能够保证动态效果下的姿态解算精度,当然在静态条件下,可能两者没啥区别,但有加速度以后,不知道DMP的算法还能不能保证解的精度?如果您用过DMP,能不能提供一下相关的数据,或者程序,让大家学习一下?
回复 支持 反对

使用道具 举报

发表于 2013-8-26 20:04:06 | 显示全部楼层
zhaowenwin 发表于 2013-8-26 16:59
目前的MPU6050的DMP国内还没用人能用起来吧,那个好像比较复杂,感觉应该是滤波算法发挥了作用

http://www.geek-workshop.com/thread-5688-1-1.html  我这个小车就是用dmp做的哦...
回复 支持 反对

使用道具 举报

发表于 2013-8-26 20:27:02 | 显示全部楼层
本帖最后由 弘毅 于 2013-8-26 20:30 编辑
pz_cloud 发表于 2013-8-26 20:04
http://www.geek-workshop.com/thread-5688-1-1.html  我这个小车就是用dmp做的哦...

才看到这么好的帖子。。。。强烈加精
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-26 21:17:39 | 显示全部楼层
弘毅 发表于 2013-8-26 20:27
才看到这么好的帖子。。。。强烈加精

看来DMP是个好东西,有空试试看效果,不过很多人都反映不好调试,数据不稳等问题,估计搞起来不是那么容易。网上做了一下功课,发现姿态输出大致有两种方式:
一种是用卡尔曼动态滤波算法,或者简化版的滤波,这种方法用好了效果会非常好,有些参数可以根据实际应用进行调整,改进效果。
另一种是利用MPU6050内部的姿态融合器DMP,直接输出姿态角,优点是CPU参与少,但融合参数不可调整,调试困难。
不知总结是否合理,欢迎大家批评指正,说说自己的经验~
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-5-3 17:54 , Processed in 0.044678 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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