风见流雅 发表于 2013-5-9 20:03:35

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

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

qwe2231695 发表于 2013-5-10 02:18:24

大侠能否共享一份作为参考?

wz18th 发表于 2013-5-10 11:57:06

看来楼主网线又坏了!

qwe2231695 发表于 2013-5-10 12:23:08

wz18th 发表于 2013-5-10 11:57 static/image/common/back.gif
看来楼主网线又坏了!

卓桑回来飞飞机啦

问乐寻音 发表于 2013-5-13 10:56:28

准备试试

mcu1234mcu 发表于 2013-5-18 23:13:16

我也正在移植这个,大家可以讨论

sysbreaker 发表于 2013-5-19 07:46:09

楼主,既然开了头那就继续下去吧,不要太监了

风见流雅 发表于 2013-5-19 18:32:59

sysbreaker 发表于 2013-5-19 07:46 static/image/common/back.gif
楼主,既然开了头那就继续下去吧,不要太监了

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

WUST_LJS 发表于 2013-5-19 19:17:21

顶一个。

风见流雅 发表于 2013-5-19 20:45:02

sysbreaker 发表于 2013-5-19 07:46 static/image/common/back.gif
楼主,既然开了头那就继续下去吧,不要太监了

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

windless 发表于 2013-5-20 17:04:04

风见流雅 发表于 2013-5-19 20:45 static/image/common/back.gif
by the way, 楼主在这个板块有个帖子把自己源码公开了,你看看就知道怎么移植了。。。。。 ...

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

风见流雅 发表于 2013-5-20 17:34:15

windless 发表于 2013-5-20 17:04 static/image/common/back.gif
我看了你那个是用pic32移植的,pic32里面的很多库函数跟msp430很像,移植比较方便,但是跟stm32的差别就 ...

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

windless 发表于 2013-5-20 17:47:31

风见流雅 发表于 2013-5-20 17:34 static/image/common/back.gif
底层的几个函数我自己写的   应该都大同小异吧。
还有   现在stm32用的人好多,有什么特点么   没接触 ...

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

kzjken 发表于 2013-5-31 16:42:22

底层的I2C改好了,现在在研究Interrupt,不理会Interrupt的话,MPU和DMP已经可以初始化了……研究中。。。。。。

zhcj66 发表于 2013-6-21 14:08:15

kzjken 发表于 2013-5-31 16:42 static/image/common/back.gif
底层的I2C改好了,现在在研究Interrupt,不理会Interrupt的话,MPU和DMP已经可以初始化了……研究中。。。 ...

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

lukefan2008 发表于 2013-7-30 11:12:20

楼主能提供一下在该板块中提供的源码公开帖子的链接么,小菜初来咋到,多多关照啊,楼主{:handshake:}

jwl5879 发表于 2013-8-9 11:38:43

lukefan2008 发表于 2013-7-30 11:12 static/image/common/back.gif
楼主能提供一下在该板块中提供的源码公开帖子的链接么,小菜初来咋到,多多关照啊,楼主 ...

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

吴汪洋 发表于 2013-8-14 13:50:44

楼主你好,请问你调试的程序磁力计有作用吗? 我的用示波器看磁力计移植在采数并且数据是对的 但是DMP输出的值就是没有磁力计校正的,不知道哪里出了问题 方便的话麻烦回复一下!

风见流雅 发表于 2013-8-18 11:57:01

吴汪洋 发表于 2013-8-14 13:50 static/image/common/back.gif
楼主你好,请问你调试的程序磁力计有作用吗? 我的用示波器看磁力计移植在采数并且数据是对的 但是DMP输出 ...

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

dg251 发表于 2013-8-26 08:09:20

风见流雅 发表于 2013-5-19 20:45 static/image/common/back.gif
by the way, 楼主在这个板块有个帖子把自己源码公开了,你看看就知道怎么移植了。。。。。 ...

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

zwj512 发表于 2013-9-5 11:43:25

DMPMPU6050   角度变化很缓慢跟不上速度
http://www.amobbs.com/thread-5549961-1-1.html


大神这个问题遇到没啊

hzqlz 发表于 2013-9-28 16:29:22

风见流雅 发表于 2013-8-18 11:57 static/image/common/back.gif
我当时看文档官方这个DMP只融合到6轴 磁力计的数据他没采用,你可以在得到的六轴融合数据的基础上再用磁 ...

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

风见流雅 发表于 2013-9-30 20:06:50

hzqlz 发表于 2013-9-28 16:29 static/image/common/back.gif
楼主确定官方的DMP库没有融合磁力计的数据吗?我查看了下函数mpu_run_self_test(gyro, accel)的返回值为0 ...

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

QuadRotor 发表于 2013-10-31 13:32:38

风见流雅 发表于 2013-9-30 20:06 static/image/common/back.gif
楼主最近DIY四轴研究通信部分比较多,现在使用国外的DCM程序觉得效果蛮好 ...

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

kdaiee 发表于 2013-11-9 12:05:41

DMP跟一般的算法比效果如何?

mahengyu 发表于 2013-11-9 12:11:11

9150太贵了,不划算

木君之上 发表于 2013-11-11 12:56:53

有道理,不过读源代码确实特别吃力,特别是对MSP430还不懂的我,很多地方不知道在干什么,对应STN32应该怎么办。。。。

zhoutonglink 发表于 2013-12-10 22:23:11

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

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

茶亦爽 发表于 2014-1-7 12:30:19

顶一个吧~~

智波景严 发表于 2014-2-27 18:24:48

支持楼主!!!!!!!!!!!!!!!!!!!!

smartchenlang 发表于 2014-3-3 20:50:16

小弟初步接触MPU9150,我想把测量的数据调出来,并实时显示在计算机上,利用什么软件较好

电气工程化动自 发表于 2014-3-20 20:33:40

{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}{:smile:}

电气工程化动自 发表于 2014-3-29 13:39:15

还是没有调出来

Zoiphy 发表于 2014-5-6 23:06:34

学习中!

westloveohyeah 发表于 2014-5-13 13:16:32

DMP有缺陷啊,就是内部的滤波过程不够清晰。
特定情况下,就不是很好了。比如直升机

llq_ARM 发表于 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

lxhu 发表于 2014-9-15 22:45:44

感谢楼主分享

华尔兹的脚步 发表于 2014-10-6 19:41:51

dmp是不是只能输出四元数?

zcguoji 发表于 2014-10-7 15:43:19

请问,dmp出来的值还需要滤波吗?

zcguoji 发表于 2014-10-7 15:45:11

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

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

xiangbin099 发表于 2014-11-25 14:31:32

九轴和六轴的库是一样的吗?
页: [1]
查看完整版本: mpu9150 mpu6050内部自带DMP实现姿态解算算法