研究了几天,终于有点头绪了,8位单片机上面真的可以做卡尔曼滤波,只不过得用简化版本的,不能用原来的那种带很多矩阵运算的,效果很好,看来那位淘宝店家真是行家!
做得挺不错的,我也去搞两个玩玩,试试效果~
有没有人能介绍一下姿态解算的算法,让大家学习一下呀?
怎么通过角速度和加速度就能算出姿态了?好像三轴是耦合的,还和坐标旋转的顺序有关,有没有做过这方面的?
zhaowenwin 发表于 2013-8-26 16:01 static/image/common/back.gif
没人回复?自己顶起!
{:soso_e103:} 其实这个模块思路还是不错的。。。以TTL输出姿态数据。。。体积还小。。。不过最好能加个电子罗盘,这样就能做姿态识别了。应用范围更广。
用DMP的吧!做成TTL输出也好不到什么地方去,TTL口在嵌入式系统里是多么宝贵,相对来说,I2C同一端口可以最多接127个I2C设备.......
如果用一片MEGA8+MPU6050,使用DMP同样可以做成这个“商品”的.......也可以不使用DMP,移植开源飞控MWC或者APM的姿态解算代码.......
Jeff Jrowberg的DMP库(库名 MPU6050 I2C device class, 6-axis MotionApps20.h;当然这个库不是AVR的),这个库,是作者通过“反向工程“得到的,不是官方的!
如果你仔细读Jeff Jrowberg的代码,其实就是i2c操作,先设置6050寄存器,再在6050内存中写入firmware,然后是config,最后是update,然后就可以直接读出FIFO里的quarternion数据,当然还有gyro和accel数据!注意,陀螺仪数据是可以自动校正,只需要传感器8秒保持不动即可,四元数处理后得到的角度数据是非常稳定的!自动校正功能是在DMP模式下才有的.
MPU-6050内部的DMP运算,roll和pitch两个参数,用了片内的加计(重力)对陀螺仪数据进行了校正,而yaw轴就没有相应的校正参考,陀螺仪的输出会漂移是很正常的,只能采用磁感传感器校正(使用invensense的9轴DMP或自己校正)!很不莘,当你用5883时,请一定记得先将5883做8字校准,不然你的YAW轴不会得到能用的数据的!
拾瑞 发表于 2013-8-28 12:14 static/image/common/back.gif
Jeff Jrowberg的DMP库(库名 MPU6050 I2C device class, 6-axis MotionApps20.h;当然这个库不是AV ...
果然是高手啊,先膜拜一下。说得真好,为我们学习的道路指出了方向~问题是那个DMP库是放在MPU6050内部的呢还是与它相连的CPU里面的?也就是说这个解算是不是还是CPU做的,而不是MPU6050做的?
弘毅 发表于 2013-8-28 11:12 static/image/common/back.gif
其实这个模块思路还是不错的。。。以TTL输出姿态数据。。。体积还小。。。不过最好能加个电 ...
恩,体积的确很小,毕竟串口连接电脑或者单片机还是要方便很多。我去淘宝看了,觉得还不错,先搞一个来玩玩。我也期待有电子罗盘的,这样Z轴就不会漂移了。不过算法可能回复杂很多,要再来个GPS滤波就全了。
拾瑞 发表于 2013-8-28 11:28 static/image/common/back.gif
用DMP的吧!做成TTL输出也好不到什么地方去,TTL口在嵌入式系统里是多么宝贵,相对来说,I2C同一端口可以最多接 ...
现在好多单片机都有多串口了吧,STM32的动不动就4个串口。I2C是有组网的优势,但和计算机连不方便,怎么也得加个处理器才能在计算机上显示。不用DMP,自己做姿态解算的关键还是得滤波修正,要不长时间的稳定性不好。尤其是动态调节下误差会很大,有些很贵的倾角仪都这样,只要一加速,就姿态角就变了,而实际上姿态可能并每有边,只是加速了而已!
zhaowenwin 发表于 2013-8-28 13:20 static/image/common/back.gif
果然是高手啊,先膜拜一下。说得真好,为我们学习的道路指出了方向~问题是那个DMP库是放在MPU6050内部的呢 ...
解算是6050自己做的!
库当然是放在MCU里的,MPU6050每次断电后重启动都必须重新配置,才能启动DMP......
我基本上可以断定你买的这个就是用的DMP,要不然的话,STM8里面还得放自动零飘抑制,姿态解算(如果用卡尔曼的有相对于STM8来说不能承受的巨量计算),等等......STM8搞不定这些事情的!
以后你会明白的,TTL口永远是不够用的!四个算多么,真不多,要不是被逼得实在没有办法,何苦用软串啊.....
弘毅 发表于 2013-8-26 16:36 static/image/common/back.gif
也想知道算法。。。
你这就没有大神范儿了,你应该说 “嗯,不错,回去研究一下,等我的开源贴”
弘毅 发表于 2013-8-26 16:36 static/image/common/back.gif
也想知道算法。。。
大神,搞开源贴啊
ShadowWalker 发表于 2013-8-28 13:58 static/image/common/back.gif
大神,搞开源贴啊
{:soso_e103:} DMP的话论坛里有很多。。。其他地方也能找到很多资料。。。最近在苦心钻研厨艺。。。=.=清蒸鱼。。。萝卜炖牛腩。。。
弘毅 发表于 2013-8-28 14:02 static/image/common/back.gif
DMP的话论坛里有很多。。。其他地方也能找到很多资料。。。最近在苦心钻研厨艺。。。=.=清 ...
我说的是楼主说的那个东西,大牛做的MPU6050模块,号称内部集成了数字滤波和姿态结算技术,网上大部分MPU6050模块都是I2C接口的,而这家做成了串口,接口倒是方便许多,还有完整的上位机程序。
于是手贱地搞了一个,今天测试发现效果确实不错,尤其是俯仰角和滚转角的输出相当稳定,跟随也快。