找回密码
 立即注册
搜索
查看: 17678|回复: 2

MPU6050使用dmp库直接读角度数据

[复制链接]

1

主题

2

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2017-6-18 10:34:03 | 显示全部楼层 |阅读模式
MPU6050使用的别家驱动代码,也是使用dmp库直接读角度数据,但是一开始读到的pitch值,一定为0,不管小车实际的pitch(即相对于重力方向),然后以后小车pitch变化,都是以最初的姿态为起点进行变化。弄得我每次开启小车都必须将小车很认真地摆正。
这个在初始化MPU6050的时候应该能矫正吧,在什么位置用什么函数设置呢?
还是说只能自己一开始读3轴重力加速度的值,算个初始pitch,以后每次都将从MPU6050读到的pitch值和它相减,手动矫正呢?
回复

使用道具 举报

1

主题

2

帖子

13

积分

新手上路

Rank: 1

积分
13
 楼主| 发表于 2017-6-18 12:29:13 | 显示全部楼层
总算找到原因了,我对比了平衡之家的驱动和原子的驱动,发现正点驱动里的run_self_test()这个函数里面:
u8 run_self_test(void)
{
        int result;
        //char test_packet[4] = {0};
        long gyro[3], accel[3];
        result = mpu_run_self_test(gyro, accel);
        if (result == 0x3)
        {
                /* Test passed. We can trust the gyro data here, so let's push it down
                * to the DMP.
                */
                float sens;
                unsigned short accel_sens;
                mpu_get_gyro_sens(&sens);
                gyro[0] = (long)(gyro[0] * sens);
                gyro[1] = (long)(gyro[1] * sens);
                gyro[2] = (long)(gyro[2] * sens);
                dmp_set_gyro_bias(gyro);
                mpu_get_accel_sens(&accel_sens);
                accel[0] *= accel_sens;
                accel[1] *= accel_sens;
                accel[2] *= accel_sens;
                dmp_set_accel_bias(accel);
                return 0;
        }else return 1;
}

这个函数内部调用了result = mpu_run_self_test(gyro, accel);
我看了一下这个内部函数的注释,大概就是如果#define了MPU6050这个宏,这个函数最终会返回0x03,如果是#define MPU6500,那么它返回7,而且好像MPU6500需要手动校正,而MPU6050不需要,所以,应该在这个函数返回0x07的时候,我们才校正,而这个校正是会对dmp里面对那pitch、roll产生影响的。如果使用MPU6050却进行该校正,那么pitch、roll会清0。所以你初始姿态的pitch就成了0值。
回复

使用道具 举报

0

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2019-3-2 17:52:12 | 显示全部楼层
WineQ圈9 发表于 2017-6-18 12:29
总算找到原因了,我对比了平衡之家的驱动和原子的驱动,发现正点驱动里的run_self_test()这个函数里面:
u ...

为什么我在result = mpu_run_self_test(gyro, accel);
                 if (result == 0x3)
这两行代码中把0x3改成了0x7还是不行,直接说我dmp初始化错误,您知道是哪里的问题吗?请指教,万分感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

粤ICP备20017043号|小黑屋|手机版|Archiver|轮趣科技(东莞)有限公司  

GMT+8, 2024-11-22 21:04 , Processed in 0.053390 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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