牛人用MPU6050做的串口输出模块,硬件卡尔曼滤波,直接输出角度
本帖最后由 zhaowenwin 于 2013-9-4 09:02 编辑前几天无聊逛TB时看到有位大牛做的MPU6050模块,号称内部集成了数字滤波和姿态结算技术,网上大部分MPU6050模块都是I2C接口的,而这家做成了串口,接口倒是方便许多,还有完整的上位机程序。
于是手贱地搞了一个,今天测试发现效果确实不错,尤其是俯仰角和滚转角的输出相当稳定,跟随也快,运算速度居然能达到100Hz。
非常好奇人家的姿态滤波是怎么做的,我试过用重力的分量算俯仰角和姿态角,但直接计算的精度很差,静态的稳定性都只能到0.1度,特别是在运动的时候,姿态误差更大,而买的那个模块却很稳定,动态解算的精度也很高。
有没有哪位高手能透露一下怎么做姿态解算呢?我目测人家的模块应该也是MPU6050+CPU的结构,咋搞的呢,求指导~
感谢大家的关注,很多网友都质疑淘宝卖家的产品不是用滤波算法做的,而是利用的MPU6050内部的MDP处理的。32楼有个调查,大家都来发表一下意见,质疑的声音多了,不信淘宝卖家看不见,打击虚假宣传,让卖家拿出使用了动态滤波技术证据来!强烈要求开源算法。我先去发言了,路过的朋友,发表一下意见啊~
TB的地址就不发了,避免广告嫌疑,有感兴趣的朋友们可以在TB搜索"串口MPU6050",就能找到。
附几张模块的图:
弘毅 发表于 2013-8-26 20:27 static/image/common/back.gif
才看到这么好的帖子。。。。强烈加精
:$第一次发帖就被精啦~~好开心,我会继续努力的!! 没人回复?自己顶起! {:soso_e103:}也想知道算法。。。 貌似是一个STM8做的 店主写的输出参数,频率是100hz,由此应该是用芯片自带dmp输出数据了,dmp有几档默认是100hz,最高输出200hz,这个是芯片硬件实现的算法,所以很稳定吧 弘毅 发表于 2013-8-26 16:39 static/image/common/back.gif
貌似是一个STM8做的
不会吧,STM8是8位的单片机,能做姿态解算和滤波吗?那个计算量好像比较大 pz_cloud 发表于 2013-8-26 16:42 static/image/common/back.gif
店主写的输出参数,频率是100hz,由此应该是用芯片自带dmp输出数据了,dmp有几档默认是100hz,最高输出200h ...
目前的MPU6050的DMP国内还没用人能用起来吧,那个好像比较复杂,感觉应该是滤波算法发挥了作用 刚搜了一下TB,LZ就是淘宝的卖家,看名字就知道:L 。这个明显就是用MPU6050内置的DMP处理器,MCU是8位机只做一些初始化的工作和串口通信,DMP网上很多资料,自己移植一下就行了,什么动态卡尔曼算法都是吹的。原本你正常卖个产品打个广告,我也不想捅破你,但是你加了一些不实的信息进去,误导用户,我就要鄙视你,最讨厌忽悠客户的奸商:@ cshp138 发表于 2013-8-26 17:17 static/image/common/back.gif
刚搜了一下TB,LZ就是淘宝的卖家,看名字就知道 。这个明显就是用MPU6050内置的DMP处理器,MCU是8位机只做 ...
哎,无奈爹妈给我取了个大众名字,不解释了。。。DMP不加滤波是不可能得到稳定的输出数据的,没有滤波姿态就会随着时间漂移,有累计误差,不会一直得到稳定的输出,我用原始数据累加积分试过,精度达不到模块自身输出地那个精度的。俯仰角和滚转角不修正的话,误差会越来越大。短时间还可以,长时间根本没法用。 zhaowenwin 发表于 2013-8-26 17:28 static/image/common/back.gif
哎,无奈爹妈给我取了个大众名字,不解释了。。。DMP不加滤波是不可能得到稳定的输出数据的,没有滤波姿态 ...
DMP融合数据处理可以得出与比较专业的滤波算法差不多的结果,我自己也用过DMP,用几个小时效果都不错,DMP有自修正的处理,除了偏航角只能对陀螺仪Z轴做积分,如果没有地磁做修正,会有漂移,其它角度,加速度,角速度得出来的数据都很稳定。从你IC外围元件就知道是STM8S103F,flash最多8K,RAM1K,根本没有多余空间做复杂的处理,简单的处理又不会有多大的作用。居然还在装模作样。:L cshp138 发表于 2013-8-26 17:52 static/image/common/back.gif
DMP融合数据处理可以得出与比较专业的滤波算法差不多的结果,我自己也用过DMP,用几个小时效果都不错,DM ...
看来10#是硬件方面的专家了,能通过外形猜出芯片的型号,不过我和卖家沟通过,他说没用过DMP,姿态解算确实是卡尔曼滤波算法搞出来的,因为高效率的滤波能够保证动态效果下的姿态解算精度,当然在静态条件下,可能两者没啥区别,但有加速度以后,不知道DMP的算法还能不能保证解的精度?如果您用过DMP,能不能提供一下相关的数据,或者程序,让大家学习一下? zhaowenwin 发表于 2013-8-26 16:59 static/image/common/back.gif
目前的MPU6050的DMP国内还没用人能用起来吧,那个好像比较复杂,感觉应该是滤波算法发挥了作用
http://www.geek-workshop.com/thread-5688-1-1.html我这个小车就是用dmp做的哦...
本帖最后由 弘毅 于 2013-8-26 20:30 编辑
pz_cloud 发表于 2013-8-26 20:04 static/image/common/back.gif
http://www.geek-workshop.com/thread-5688-1-1.html我这个小车就是用dmp做的哦...
才看到这么好的帖子。。。。强烈加精 弘毅 发表于 2013-8-26 20:27 static/image/common/back.gif
才看到这么好的帖子。。。。强烈加精
看来DMP是个好东西,有空试试看效果,不过很多人都反映不好调试,数据不稳等问题,估计搞起来不是那么容易。网上做了一下功课,发现姿态输出大致有两种方式:
一种是用卡尔曼动态滤波算法,或者简化版的滤波,这种方法用好了效果会非常好,有些参数可以根据实际应用进行调整,改进效果。
另一种是利用MPU6050内部的姿态融合器DMP,直接输出姿态角,优点是CPU参与少,但融合参数不可调整,调试困难。
不知总结是否合理,欢迎大家批评指正,说说自己的经验~