搜索
bottom↓
回复: 40

mpu9150 mpu6050内部自带DMP实现姿态解算算法

[复制链接]

出0入0汤圆

发表于 2013-5-9 20:03:35 | 显示全部楼层 |阅读模式
       楼主打算DIY四轴时间不算长,自己也还有好多问题没有解决。看到坛子里也有同学关注了invensense的mpu9150内部自带的DMP,故撰文来同大家讨论一下。
       楼主是在接触mpu9150的数据手册时读到其内部自带的DMP能够硬件实现姿态解算方法,DMP是数字运动处理器的缩写,顾名思义mpu9150(mpu6050)并不单单是一款传感器,其内部还包含了可以独立完成姿态解算算法的处理单元。
       如在设计中使用DMP来实现传感器融合算法优势很明显。首先,invensense官方提供的姿态解算算法应该比像楼主这样的小白要可靠的多。其次,由DMP实现姿态解算算法将单片机从算法处理的压力中解放出来,单片机所要做的是等待DMP解算完成后产生的外部中断,在外部中断里去读取姿态解算的结果。这样单片机有大量的时间来处理诸如电机调速等其他任务,提高了系统的实时性。
      最后,关于移植问题。坛子里很多朋友在喊怎么调,怎么移植。我只能说你们要认真的阅读invensense提供的motion driver源码。移植移植,你就是要实现那些跟你自己硬件平台相关的函数,上层的逻辑并不需要去动。motion driver的源码写的很通俗易懂,连楼主这样非211非985刚过六级的水平都看得懂想来各位大大也不会差。自己写好接口函数后要认真测试,确定没问题以后再在工程中加入DMP的上层逻辑还是比较容易实现的。

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

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出105入79汤圆

发表于 2013-5-10 02:18:24 | 显示全部楼层
大侠能否共享一份作为参考?

出0入0汤圆

发表于 2013-5-10 11:57:06 来自手机 | 显示全部楼层
看来楼主网线又坏了!

出105入79汤圆

发表于 2013-5-10 12:23:08 | 显示全部楼层
wz18th 发表于 2013-5-10 11:57
看来楼主网线又坏了!

卓桑回来飞飞机啦

出0入0汤圆

发表于 2013-5-13 10:56:28 | 显示全部楼层
准备试试

出0入4汤圆

发表于 2013-5-18 23:13:16 | 显示全部楼层
我也正在移植这个,大家可以讨论

出0入0汤圆

发表于 2013-5-19 07:46:09 | 显示全部楼层
楼主,既然开了头那就继续下去吧,不要太监了

出0入0汤圆

 楼主| 发表于 2013-5-19 18:32:59 | 显示全部楼层
sysbreaker 发表于 2013-5-19 07:46
楼主,既然开了头那就继续下去吧,不要太监了

楼主在读研究生,整天被导师喊着做这做那的    等闲下来会补上的。。。。。
20天做完软硬件怎么搞嘛。。。。。。。。。。

出0入0汤圆

发表于 2013-5-19 19:17:21 | 显示全部楼层
顶一个。

出0入0汤圆

 楼主| 发表于 2013-5-19 20:45:02 | 显示全部楼层
sysbreaker 发表于 2013-5-19 07:46
楼主,既然开了头那就继续下去吧,不要太监了

by the way, 楼主在这个板块有个帖子把自己源码公开了,你看看就知道怎么移植了。。。。。

出0入0汤圆

发表于 2013-5-20 17:04:04 | 显示全部楼层
风见流雅 发表于 2013-5-19 20:45
by the way, 楼主在这个板块有个帖子把自己源码公开了,你看看就知道怎么移植了。。。。。 ...

我看了你那个是用pic32移植的,pic32里面的很多库函数跟msp430很像,移植比较方便,但是跟stm32的差别就很大了。

出0入0汤圆

 楼主| 发表于 2013-5-20 17:34:15 | 显示全部楼层
windless 发表于 2013-5-20 17:04
我看了你那个是用pic32移植的,pic32里面的很多库函数跟msp430很像,移植比较方便,但是跟stm32的差别就 ...

底层的几个函数我自己写的     应该都大同小异吧。
还有   现在stm32用的人好多,有什么特点么   没接触过哎

出0入0汤圆

发表于 2013-5-20 17:47:31 | 显示全部楼层
风见流雅 发表于 2013-5-20 17:34
底层的几个函数我自己写的     应该都大同小异吧。
还有   现在stm32用的人好多,有什么特点么   没接触 ...

嗯,不过,如果stm32的库函数是类似pic32的,我想坛子里面的筒子们也没有那么多的问题了。应该都调试出来了

出0入0汤圆

发表于 2013-5-31 16:42:22 | 显示全部楼层
底层的I2C改好了,现在在研究Interrupt,不理会Interrupt的话,MPU和DMP已经可以初始化了……研究中。。。。。。

出0入53汤圆

发表于 2013-6-21 14:08:15 | 显示全部楼层
kzjken 发表于 2013-5-31 16:42
底层的I2C改好了,现在在研究Interrupt,不理会Interrupt的话,MPU和DMP已经可以初始化了……研究中。。。 ...

改好了吗?这个芯片用的怎么样了,我刚刚开始看这个芯片的资料 打算用这个芯片,弄好了麻烦把驱动共享一下哦

出0入0汤圆

发表于 2013-7-30 11:12:20 | 显示全部楼层
楼主能提供一下在该板块中提供的源码公开帖子的链接么,小菜初来咋到,多多关照啊,楼主

出0入0汤圆

发表于 2013-8-9 11:38:43 | 显示全部楼层
lukefan2008 发表于 2013-7-30 11:12
楼主能提供一下在该板块中提供的源码公开帖子的链接么,小菜初来咋到,多多关照啊,楼主 ...

点楼主发过的主题就找到了

出0入0汤圆

发表于 2013-8-14 13:50:44 | 显示全部楼层
楼主你好,请问你调试的程序磁力计有作用吗? 我的用示波器看磁力计移植在采数并且数据是对的 但是DMP输出的值就是没有磁力计校正的,不知道哪里出了问题 方便的话麻烦回复一下!

出0入0汤圆

 楼主| 发表于 2013-8-18 11:57:01 | 显示全部楼层
吴汪洋 发表于 2013-8-14 13:50
楼主你好,请问你调试的程序磁力计有作用吗? 我的用示波器看磁力计移植在采数并且数据是对的 但是DMP输出 ...

我当时看文档官方这个DMP只融合到6轴 磁力计的数据他没采用,你可以在得到的六轴融合数据的基础上再用磁力计做修正

出0入0汤圆

发表于 2013-8-26 08:09:20 | 显示全部楼层
风见流雅 发表于 2013-5-19 20:45
by the way, 楼主在这个板块有个帖子把自己源码公开了,你看看就知道怎么移植了。。。。。 ...

你好,没找到您公开的motion driver的源代码。能否发个链接过来!谢谢了先!

出0入0汤圆

发表于 2013-9-5 11:43:25 | 显示全部楼层
DMP  MPU6050     角度变化很缓慢  跟不上速度
http://www.amobbs.com/thread-5549961-1-1.html


大神这个问题遇到没啊

出0入0汤圆

发表于 2013-9-28 16:29:22 | 显示全部楼层
风见流雅 发表于 2013-8-18 11:57
我当时看文档官方这个DMP只融合到6轴 磁力计的数据他没采用,你可以在得到的六轴融合数据的基础上再用磁 ...

楼主确定官方的DMP库没有融合磁力计的数据吗?我查看了下函数mpu_run_self_test(gyro, accel)的返回值为0x07,可是实际的Yaw数据还是会飘动,特别是大动作后回到原来位置会有较大变化;而静止时还好不会有大的变动。自己有尝试改下库函数,比较困难,求交流

出0入0汤圆

 楼主| 发表于 2013-9-30 20:06:50 | 显示全部楼层
hzqlz 发表于 2013-9-28 16:29
楼主确定官方的DMP库没有融合磁力计的数据吗?我查看了下函数mpu_run_self_test(gyro, accel)的返回值为0 ...

楼主最近DIY四轴研究通信部分比较多,现在使用国外的DCM程序觉得效果蛮好

出0入0汤圆

发表于 2013-10-31 13:32:38 | 显示全部楼层
风见流雅 发表于 2013-9-30 20:06
楼主最近DIY四轴研究通信部分比较多,现在使用国外的DCM程序觉得效果蛮好 ...

使用DCM互补滤波程序跟MPU6050/90500DMP相比较那个好呢?DMP真有那么神奇?这么多人追捧?传感器自身的处理能力怎么能跟32位单片机比,效果能有单片机处理的好?

出0入0汤圆

发表于 2013-11-9 12:05:41 | 显示全部楼层
DMP跟一般的算法比效果如何?

出0入0汤圆

发表于 2013-11-9 12:11:11 | 显示全部楼层
9150太贵了,不划算

出0入0汤圆

发表于 2013-11-11 12:56:53 | 显示全部楼层
有道理,不过读源代码确实特别吃力,特别是对MSP430还不懂的我,很多地方不知道在干什么,对应STN32应该怎么办。。。。

出0入0汤圆

发表于 2013-12-10 22:23:11 | 显示全部楼层
hzqlz 发表于 2013-9-28 16:29
楼主确定官方的DMP库没有融合磁力计的数据吗?我查看了下函数mpu_run_self_test(gyro, accel)的返回值为0 ...

这位仁兄 我也发现这个问题了! 大动作后瞬间输出的姿态有大变化 然后慢慢地又调整回来
我设定一个角度范围 超出范围就报警 然后我再范围内快速来回晃 然后经常就报警超出范围了 但是慢慢的晃就没事
难道是角速度传感器的滤波设置有问题么
不知道你现在解决这个问题了没有 难道要再加一个软件滤波??????愁

出0入0汤圆

发表于 2014-1-7 12:30:19 | 显示全部楼层
顶一个吧~~

出0入0汤圆

发表于 2014-2-27 18:24:48 | 显示全部楼层
支持楼主!!!!!!!!!!!!!!!!!!!!

出0入0汤圆

发表于 2014-3-3 20:50:16 | 显示全部楼层
小弟初步接触MPU9150,我想把测量的数据调出来,并实时显示在计算机上,利用什么软件较好

出0入0汤圆

发表于 2014-3-20 20:33:40 | 显示全部楼层

出0入0汤圆

发表于 2014-3-29 13:39:15 | 显示全部楼层
还是没有调出来

出0入0汤圆

发表于 2014-5-6 23:06:34 | 显示全部楼层
学习中!

出0入0汤圆

发表于 2014-5-13 13:16:32 | 显示全部楼层
DMP有缺陷啊,就是内部的滤波过程不够清晰。
特定情况下,就不是很好了。比如直升机

出0入0汤圆

发表于 2014-9-15 18:14:45 | 显示全部楼层
静止的时候的数据pitch: 62.21    roll:52.28                yaw:54.67
pitch: 61.17    roll:42.12                yaw:101.33
pitch: 63.76    roll:35.36                yaw:149.28
pitch: 66.04    roll:38.78                yaw:-149.91
pitch: 64.64    roll:45.85                yaw:-91.09
pitch: 64.47    roll:41.65                yaw:-36.73
pitch: 66.11    roll:45.11                yaw:18.63

出0入0汤圆

发表于 2014-9-15 22:45:44 来自手机 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2014-10-6 19:41:51 | 显示全部楼层
dmp是不是只能输出四元数?

出0入0汤圆

发表于 2014-10-7 15:43:19 | 显示全部楼层
请问,dmp出来的值还需要滤波吗?

出0入0汤圆

发表于 2014-10-7 15:45:11 | 显示全部楼层
zhoutonglink 发表于 2013-12-10 22:23
这位仁兄 我也发现这个问题了! 大动作后瞬间输出的姿态有大变化 然后慢慢地又调整回来
我设定一个角度范 ...

是不是用dmp之后就不需要卡尔曼滤波或者互补滤波了呢?

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-6-8 10:02

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

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