mpu9250 MD6.12移植到STM32F103

2019-07-20 23:24发布

昨天晚上,淘宝上买的MPU9250模块终于到手了,迫不及待上了自己的移植的代码试了一下,结果错误百出,经过今天一天的调试,终于完活了。上视频


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
25条回答
ringudk
1楼-- · 2019-07-22 01:01
本帖最后由 ringudk 于 2017-2-9 07:47 编辑
aaaaalaode 发表于 2016-11-26 11:46
Yaw有漂移啊

还可以接受吧


ringudk
2楼-- · 2019-07-22 01:38
本帖最后由 ringudk 于 2017-2-9 09:11 编辑
Boris 发表于 2016-11-18 17:14
代码和硬件连接都在这里了,其中大量引用了原子哥的代码,如有侵权,请及时告知。

9250.jpg
你好,我用你移植的代码在STM32F103C8是做了测试,发现如果按上图顺序旋转的在回到原位置的话会有问题,10次有5次以上会出问题。
用STM32F407VE测试motion_driver_6.12的代码没有出现这个问题。
初始状态四元数输出
quat:  0.9986  0.0040  0.0527  0.0072
quat:  0.9986  0.0039  0.0527  0.0072
quat:  0.9986  0.0039  0.0527  0.0072
quat:  0.9986  0.0040  0.0527  0.0072
quat:  0.9986  0.0040  0.0527  0.0072
quat:  0.9986  0.0040  0.0526  0.0072
quat:  0.9986  0.0039  0.0526  0.0072


按我上图顺序旋转后回原位置四元数输出
quat:  0.4227 -0.0466  0.0264  0.9047
quat:  0.4227 -0.0466  0.0264  0.9047
quat:  0.4227 -0.0466  0.0263  0.9047
quat:  0.4227 -0.0466  0.0263  0.9047
quat:  0.4227 -0.0465  0.0263  0.9047
quat:  0.4227 -0.0465  0.0263  0.9047
quat:  0.4227 -0.0465  0.0263  0.9047


麻烦你帮忙测试一下是否会出现和我一样的问题,我找不出原因为什么会这样。


刚刚尝试在inv_error_t inv_get_quaternion函数,把罗盘数据强制设置为
        rh.compass_correction[0]=        0x40000000;
        rh.compass_correction[1]=        0x0;
        rh.compass_correction[2]=        0x0;
        rh.compass_correction[3]=        0x0;
这样就不会出现上面的错误了,由此估计是罗盘数据有问题。



inv_error_t inv_get_quaternion(long *data)
{
       
        rh.compass_correction[0]=        0x40000000;
        rh.compass_correction[1]=        0x0;
        rh.compass_correction[2]=        0x0;
        rh.compass_correction[3]=        0x0;

    if (rh.status & (INV_COMPASS_CORRECTION_SET | INV_6_AXIS_QUAT_SET)) {
        inv_q_mult(rh.compass_correction, rh.gam_quat, rh.nav_quat);
        rh.status &= ~(INV_COMPASS_CORRECTION_SET | INV_6_AXIS_QUAT_SET);
    }
    memcpy(data, rh.nav_quat, sizeof(rh.nav_quat));
    return INV_SUCCESS;
}


Electronic
3楼-- · 2019-07-22 05:36
xuyan021
4楼-- · 2019-07-22 06:33
为什么不用SPI方式?I2C方式速度慢。
牛宝宝
5楼-- · 2019-07-22 07:38
 精彩回答 2  元偷偷看……
ringudk
6楼-- · 2019-07-22 11:46
牛宝宝 发表于 2017-2-13 22:55
楼主这个软件是啥啊?

motion_driver_6.12eMPL-pythonclienteMPL-client.py里面的pygame,要安装Python才能运行的。安装好后还要安装pygame-1.9.1.win32-py2.7.msi,pyserial-2.5.win32.exe或pyserial-3.2.1-py2.py3-none-any.whl。运行python eMPL-client.py 15 [15]是串口的端口号。

一周热门 更多>