amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
楼主: lotsbiss

终于不用纠结姿态融合的问题了,MPU6050直接内置融合引擎

  [复制链接]
发表于 2013-5-19 18:31:34 | 显示全部楼层
lotsbiss 发表于 2013-5-19 16:47
这个真不清楚···
我用的时候没有在这卡过
都是直接就过去了··

可不可以把你那个程序分享一下呢?在线等待
发表于 2013-5-19 18:32:37 | 显示全部楼层
gadwgdsk77gg 发表于 2013-5-19 18:31
可不可以把你那个程序分享一下呢?在线等待

苦逼了2天,飞行器上基本没有什么问题,卡在这个传感器上好久了
发表于 2013-5-19 19:24:46 | 显示全部楼层
感谢分享!!
发表于 2013-5-19 20:05:50 | 显示全部楼层
顶了,很好的资料
发表于 2013-5-19 22:36:56 | 显示全部楼层
你的移植好的stm32的程序不可以分享吗
发表于 2013-5-20 16:43:33 | 显示全部楼层
mcu1234mcu 发表于 2013-5-16 09:34
请问这个函数是什么意思?

reg_int_cb(void (*cb)(void), unsigned char port, unsigned char pin) ...

我看了很多,这个也不清楚是什么意思,用pic32移植很方便,库函数跟msp430很相近。
发表于 2013-5-21 00:10:24 | 显示全部楼层
楼主你好,我想问一下“四元数,默认是long,得转换成float后除以 1073741824.0f,然后就能使用了,顺序是wxyz
为什么是除以1073741824
 楼主| 发表于 2013-5-21 09:12:55 | 显示全部楼层
wscjun 发表于 2013-5-21 00:10
楼主你好,我想问一下“四元数,默认是long,得转换成float后除以 1073741824.0f,然后就能使用了,顺序是w ...

这个我也不知道
官方给的范例里就这么处理的
在源代码\simple_apps\msp430\motion-driver-client\motion-driver-client.py里面
有QUAT_SENS  = 1073741824.0这么一句
 楼主| 发表于 2013-5-21 09:16:54 | 显示全部楼层
mcu1234mcu 发表于 2013-5-16 09:34
请问这个函数是什么意思?

reg_int_cb(void (*cb)(void), unsigned char port, unsigned char pin) ...

cb应该是call back的缩写,用来初始化tap_cb,android_orient_cb这一类函数的
我直接把这个给注释掉了
因为我只需要四元数
发表于 2013-5-21 09:29:22 | 显示全部楼层
markmarkmark
发表于 2013-5-21 10:03:35 | 显示全部楼层
yssdsz 发表于 2013-5-18 20:44
mark~~~~

哈哈 看头像就知道飞思卡尔的哈 亲切
发表于 2013-5-21 10:04:31 | 显示全部楼层
lotsbiss 发表于 2013-5-21 09:12
这个我也不知道
官方给的范例里就这么处理的
在源代码\simple_apps\msp430\motion-driver-client\motion- ...

谢谢你的回答哈
发表于 2013-5-21 21:38:23 | 显示全部楼层
有谁能给我解释一下DMP是什么东西吗
发表于 2013-5-22 09:42:51 | 显示全部楼层
资料很好,谢谢了
发表于 2013-5-22 11:28:17 | 显示全部楼层
以前来过,不过现在发现这个东西超级好
发表于 2013-5-22 12:11:09 | 显示全部楼层
移植的时候能不能不使用中断,而定时去读取FIFO的内容?
发表于 2013-5-22 17:32:48 | 显示全部楼层
gadwgdsk77gg 发表于 2013-5-19 16:39
楼主大哥,可否帮忙解决一下问题
程序初始化到
result =

请问你这个问题解决了没,我这里也是跟你一样的情况单独写入一个字节校验后是对的,但是写16个就不行了,就第一个字节对。
发表于 2013-5-23 16:16:32 | 显示全部楼层
tianxingweichen 发表于 2013-5-21 21:38
有谁能给我解释一下DMP是什么东西吗

Digital Motion Processor
发表于 2013-5-24 09:35:42 | 显示全部楼层
本帖最后由 mcu1234mcu 于 2013-5-24 09:37 编辑

3333333333333333333333
发表于 2013-5-24 09:48:07 | 显示全部楼层
楼主的地磁加上了吗?我这加上怎么感觉还是不对,读取地磁的ID没有问题,
mpu_set_sensors(INV_XYZ_GYRO | INV_XYZ_ACCEL | INV_XYZ_COMPASS);
修改了这个地方
发表于 2013-5-24 16:15:20 | 显示全部楼层
楼主鼎力,谢谢分享
发表于 2013-5-24 18:06:19 | 显示全部楼层
MARK   以后有用
发表于 2013-5-25 00:19:46 | 显示全部楼层
arduino的好用,上个图show一下:

用processing做上位机,代码就在i2cdevlib-master\Arduino\MPU6050\Examples\MPU6050_DMP6\Processing\MPUTeapot,要用到一个库,被墙了,还是坛子里的兄弟帮下下来了,在下面帖子里:http://www.amobbs.com/forum.php? ... p;extra=#pid6704771

本帖子中包含更多资源

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

x
发表于 2013-5-25 00:22:33 | 显示全部楼层
不过他的PROCESSING里的代码,串口数据的同步对位处理不太好,之前一直对不上,小改了一下就OK了,注意看上图,在serialCount++;前加上 if(aligned>0)
            
发表于 2013-5-25 21:16:23 | 显示全部楼层
好资料!
发表于 2013-5-28 11:35:05 | 显示全部楼层
楼主,你的地磁进行了融合了吗?
发表于 2013-5-29 13:57:40 | 显示全部楼层

MAKE收藏
发表于 2013-5-29 18:35:20 | 显示全部楼层
好玩意,赞一个。
发表于 2013-6-3 17:54:41 | 显示全部楼层
看起来很强大的样子可是..不用不起
发表于 2013-6-4 14:36:39 | 显示全部楼层
现在应该是6轴的,没融合磁数据
发表于 2013-6-6 11:52:54 | 显示全部楼层
正在学习,搞出来了,免费发布!
发表于 2013-6-7 09:59:06 | 显示全部楼层
楼主,我发现一个问题由DMP产生的四元数计算得到的pitch角在90度的时候相差比较大,测量值在85度左右,你那什么情况?
发表于 2013-6-8 19:19:53 | 显示全部楼层
好深奥。。。
发表于 2013-6-8 23:27:51 | 显示全部楼层
刚看到代码有这个宏 AK89xx_SECONDARY
估计是 AK8973 指南针,请问DMP必须要指南针参与运算吗?
发表于 2013-6-8 23:33:38 | 显示全部楼层
楼主把上位机也分享一下呗!
发表于 2013-6-10 12:46:59 | 显示全部楼层
我用Atmega16和BASCOM,弄出了6050的DMP四元数,初始状态的读数是1.0.0.0,数据很稳定,灵敏度也不错,但就是不太明白,W值是什么意义,望楼主解答。
发表于 2013-6-12 00:04:50 | 显示全部楼层
顶起,记下先。
发表于 2013-6-12 05:01:36 | 显示全部楼层
gadwgdsk77gg 发表于 2013-5-19 16:39
楼主大哥,可否帮忙解决一下问题
程序初始化到
result =

恰恰应该是I2C的问题。我用软件I2C,也搞了很久,发现地址得移位,类似这个:
I2C_SendByte(slave_addr<<1);   //发送设备地址+写信号
就是把0x68变成0xd0.
之前单字节读写不需要移位也能正常读加速度数据。一直卡在读出FIRMWARE数据对比哪里。发狠一点点调试,才发现这个问题,貌似某位老大曾经提示过这个。。。。。。

贴给你参考一下:
int msp430_i2c_write(unsigned char slave_addr,
                     unsigned char reg_addr,
                     unsigned char length,
                     unsigned char const *data)
{
    unsigned long start, cur;
    if (!length)
        return 0;

   
    I2C_Start();                  //起始信号
    I2C_SendByte(slave_addr<<1);   //发送设备地址+写信号
    I2C_SendByte(reg_addr);    //内部寄存器地址,
    int i;
    for(i=0;i<length;i++)
    I2C_SendByte(data);       //内部寄存器数据,
    I2C_Stop();                   //发送停止信号

    return 0;
}

int msp430_i2c_read(unsigned char slave_addr,
                    unsigned char reg_addr,
                    unsigned char length,
                    unsigned char *data)
{
    unsigned long start, cur;
    if (!length)
        return 0;

   
   
    int i;
    //for(i=0;i<length;i++)
    //  data=Single_ReadI2C(reg_addr++);
    /**/
    I2C_Start();                   //起始信号
    I2C_SendByte(slave_addr<<1);    //发送设备地址+写信号
    I2C_SendByte(reg_addr);     //发送存储单元地址,从0开始
    I2C_Start();                   //起始信号
    I2C_SendByte((slave_addr<<1)+1);  //发送设备地址+读信号
    for(i=0;i<length;i++)
    {
        data=I2C_RecvByte();       //读出寄存器数据
        if(i<length-1)
          I2C_SendACK(0);                //接收应答信号
    }
    I2C_SendACK(1);   //NACK
    I2C_Stop();                    //停止信号
   
    return 0;
}
发表于 2013-6-12 05:04:59 | 显示全部楼层
lotsbiss 发表于 2013-4-12 14:22
没短消息权限,我就在这说吧
移植时注意MPU6050的i2c的地址(st.hw->addr),有0x68和0x69这2种,如果是网 ...

这个是关键中的关键啊。
写入FIREWARE读出不对的,估计基本是这个原因。
发表于 2013-6-12 05:58:33 | 显示全部楼层
https://www.amobbs.com/forum.php?mod=attachment&aid=MTE4Mzg2fDQ2MjhiZTJlN2VkMmM3NzFkZDA3ZmZiMTcyOGI1MDExfDE0OTU5MDYwMTc%3D&request=yes&_f=.jpg

MSP430F5438+MPU6050+PYTHON 跑起来了,谢谢LZ!

本帖子中包含更多资源

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

x
发表于 2013-6-15 12:05:05 | 显示全部楼层
mark   MPU6050直接内置融合引擎
发表于 2013-6-15 21:50:36 | 显示全部楼层
LZ你好,我的DMP移植成功了,但是发现3问题:
1、静置传感器,通过上位机软件显示出姿态在慢慢漂移,好长一会儿才稳定。
2、我的上位机软件延迟比较厉害,没你的那么顺畅,不像是上位机软件问题,而像是FIFO中数据变化满,我的采样率1000,FIFO rate 100。
3、yaw的值变化幅度很小。
麻烦LZ帮我解决解决,谢谢了!
另外不懂dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation) 函数及那个校正矩阵怎么回事?
谢谢!
发表于 2013-6-16 10:52:26 | 显示全部楼层
mark 强大,
发表于 2013-6-16 11:26:50 | 显示全部楼层
可以直接融合吗 ?、
发表于 2013-6-16 21:20:06 | 显示全部楼层
学习中。。。
发表于 2013-6-16 21:24:43 | 显示全部楼层
这个必须顶~~~楼主好人
发表于 2013-6-17 09:58:54 | 显示全部楼层
哈哈,这都被你发现了,顶。
发表于 2013-6-17 12:40:17 | 显示全部楼层
wangjt1988 发表于 2013-4-11 00:19
楼主太给力了!   还有一个资料,gitlab上有大神上传过一个基于arduino的dmp,测试过,也可以用在stm32上
顶 ...

兄弟,你测试过没有?
发表于 2013-6-20 13:53:17 来自手机 | 显示全部楼层
mark←_←.LZ好人
发表于 2013-6-20 14:41:54 | 显示全部楼层
听说6050的Z轴有问题,是不是啊?
发表于 2013-6-21 09:12:30 | 显示全部楼层
楼主您好  我是一名大学生 在做有关陀螺仪项目  想和您请教点东西  可以加下qq吗562790554
发表于 2013-6-21 10:54:07 | 显示全部楼层
求指导啊
发表于 2013-6-21 15:29:44 | 显示全部楼层
楼主 有mpu9150的代码吗
发表于 2013-6-27 21:29:28 | 显示全部楼层
很好,学习中。
发表于 2013-6-28 01:14:28 | 显示全部楼层
很棒的一个文件  
发表于 2013-6-29 22:40:20 | 显示全部楼层
学习了
发表于 2013-7-7 13:27:31 | 显示全部楼层
楼主,得到的四元数稳定吗,静止不动的时候会不会有跳动。四元数如何进一步转化为角度呢?方便加个QQ交流一下吗,381700163
发表于 2013-7-7 20:57:56 | 显示全部楼层
例程中gyro_orientation这个矩阵是做什么的?对应dmp_set_orientation函数。
发表于 2013-7-7 21:46:28 | 显示全部楼层
楼主,真心好资料!原来一直没有找到关于这个DMP的说法。谢谢
发表于 2013-7-8 13:18:08 | 显示全部楼层
高人在此,顶顶收藏
发表于 2013-7-8 22:13:03 | 显示全部楼层
四元数计算的初始角度如何确定?
发表于 2013-7-11 10:25:55 | 显示全部楼层
我读取FIFO,有时候挺长时间才能读上来(我是在一个死循环里反复读取,成功后break),有时候会很快,可能是什么原因?
发表于 2013-7-13 10:41:36 | 显示全部楼层
怎么那个PDF下载下来是.attch格式的?
发表于 2013-7-13 21:07:35 | 显示全部楼层
z值得收藏!
发表于 2013-7-13 22:18:23 | 显示全部楼层
我就说为啥datasheet里提到DMP,但就是找不到相关使用文档,非常感谢LZ贡献
发表于 2013-7-24 19:53:21 | 显示全部楼层
求你那么神器上位机啊!
发表于 2013-7-24 20:15:28 | 显示全部楼层
顶了  果然是好东西
发表于 2013-7-30 21:46:32 | 显示全部楼层
I爱电子 发表于 2013-7-13 10:41
怎么那个PDF下载下来是.attch格式的?

可以直接+.pdf
发表于 2013-7-31 12:44:59 | 显示全部楼层
哪里有上位机软件呢.
发表于 2013-7-31 14:54:56 | 显示全部楼层
学习ing楼主真给力
发表于 2013-7-31 15:05:50 | 显示全部楼层
有空再研究
发表于 2013-8-1 20:49:53 | 显示全部楼层
楼主用的什么上位机,怎么使用呀,
发表于 2013-8-2 11:02:38 | 显示全部楼层
mark
发表于 2013-8-3 09:43:31 | 显示全部楼层
catluoq 发表于 2013-6-10 12:46
我用Atmega16和BASCOM,弄出了6050的DMP四元数,初始状态的读数是1.0.0.0,数据很稳定,灵敏度也不错,但就 ...

我用AVR读取MPU6050两周了,没结果,能交流一下吗?Q:1092503627
发表于 2013-8-3 10:48:47 | 显示全部楼层
看看http://www.amobbs.com/forum.php? ... 014&pid=6811835,我把自己完整的 C 代码和 BASCOM 代码都贴出来了。
发表于 2013-8-7 22:07:57 | 显示全部楼层
智涅 发表于 2013-7-30 21:46
可以直接+.pdf

谢谢啊。知道了。
发表于 2013-8-7 22:16:29 | 显示全部楼层
好东西,先顶起
发表于 2013-8-10 01:46:39 | 显示全部楼层
mp_load_motion_driver_firmware()    一运行这个程序串口发送就乱码了,是打开失败的原因吗?是硬件模块决定的吗?我试过几次打开成功的,有什么办法解决吗?
发表于 2013-8-11 15:57:04 | 显示全部楼层
搞了好几天了。。请问他提供的源码文件inv_mpu.c中,开头让你自己定义的这几个函数怎么弄呀??
reg_int_cb(void (*cb)(void), unsigned char port, unsigned char pin)  //我用的MSP430F1611模拟IIC,这个函数怎么改呀?
labs(long x)  //他貌似说在TI提供的工具里,在哪哇,,,找不到额。。
fabsf(float x)  //这个就直接看不懂了,望指教。。
谢谢~
发表于 2013-8-11 22:24:29 来自手机 | 显示全部楼层
看看看看
发表于 2013-8-12 21:41:31 来自手机 | 显示全部楼层
mark……
顶一个…
发表于 2013-8-19 16:18:57 | 显示全部楼层
上位机好给力啊,求楼主给看看哪弄的上位机。
发表于 2013-8-19 16:22:21 | 显示全部楼层
额  膜拜  正在学习中
发表于 2013-8-19 16:22:47 | 显示全部楼层
mark,好东西
发表于 2013-8-19 20:41:09 | 显示全部楼层
MARK!!楼主的帖好有价值~~谢谢分享~
发表于 2013-8-29 16:41:48 | 显示全部楼层
@夏伟~  感谢楼主的资源
发表于 2013-8-29 18:31:11 | 显示全部楼层
是不是这个啊
发表于 2013-8-29 18:32:03 | 显示全部楼层
中文资料里有这两句

本帖子中包含更多资源

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

x
发表于 2013-8-29 18:43:46 | 显示全部楼层
可以弱弱的问下:MPU6050直接内置融合引擎的意思是直接出来的就是角度吗?  
发表于 2013-8-29 22:06:28 | 显示全部楼层
上位机很好用的样子。。。。
发表于 2013-8-30 13:08:04 | 显示全部楼层
顶一个,就是感觉不好弄
发表于 2013-8-31 15:57:17 | 显示全部楼层
为什么我的mpu6050 (在优信上面买的10几元的模块)在mpu_init()的时候老是打印roduct ID read as 0 indicates device is either incompatible or an MPU3050,然道不是全部的mpu6050都支持dmp?
发表于 2013-8-31 18:28:16 | 显示全部楼层
我也在弄这个
发表于 2013-8-31 19:21:48 | 显示全部楼层
还有这种隐藏大招啊
发表于 2013-8-31 19:28:28 | 显示全部楼层
不错   支持一下
发表于 2013-8-31 19:57:35 | 显示全部楼层
已经可以了,原来是I2c驱动的原因,我在重新写了下I2C之后就可以了。但是出现了一个问题bias has not been modified ......

发表于 2013-8-31 20:51:39 | 显示全部楼层
很不错的资料,先顶一下。
发表于 2013-8-31 20:53:51 | 显示全部楼层
现在正努力通过6050求出姿态角,roll pitch yew,四元数,。。。好吧!我承认我连这些概念都没搞懂。。
发表于 2013-9-1 15:25:21 | 显示全部楼层
请问楼主 这个得到的数据是角度吗?还是别的?
发表于 2013-9-1 15:31:27 | 显示全部楼层
dlongry 发表于 2013-8-31 15:57
为什么我的mpu6050 (在优信上面买的10几元的模块)在mpu_init()的时候老是打印roduct ID read as 0 indica ...


跟踪代码能看到的,我确定有个叫DMP_test的代码可以用的,只是自己要把些地方处理下,我一行行拷贝,每行都看过,把所有相关代码拷到一个文件中,大约快3000行,不要的一概抛弃(比如我没磁传感器)我就把他条件编译代码全删掉。
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 粤ICP备09047143号 )

GMT+8, 2017-5-28 01:26

阿莫电子论坛, 原"中国电子开发网"

© 2004-2016 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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