OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 719|回复: 2

MPU9250使用mpl库计算的pitch和roll明显延迟,该调整什么参数呢

[复制链接]

1

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2024-5-27
在线时间
2 小时
发表于 2024-5-30 22:24:27 | 显示全部楼层 |阅读模式
1金钱
用原子STM32F4上的例程植到F103上,数据都已经出来,但pitch和roll延迟很多,yaw响应倒比较快。比如我直接把pitch从0度转到90度,输出的数据将近要1分钟后才逐步到90度。该调整什么参数呢?以下是mpu_dmp_init()中的设置,其中dmp的输出速率设的是100Hz

u8 mpu_dmp_init(void)
{
        u8 res=0;
    struct int_param_s int_param;
    unsigned char accel_fsr;
    unsigned short gyro_rate, gyro_fsr;
    unsigned short compass_fsr;

        MPU_IIC_Init();                         //初始化IIC总线
        if(mpu_init(&int_param)==0)        //初始化MPU9250
        {         
        res=inv_init_mpl();     //初始化MPL
        if(res)return 1;
        inv_enable_quaternion();
        inv_enable_9x_sensor_fusion();
        inv_enable_fast_nomot();
        inv_enable_gyro_tc();
        inv_enable_vector_compass_cal();
//        inv_enable_magnetic_disturbance();
        inv_enable_eMPL_outputs();
        res=inv_start_mpl();    //开启MPL
        if(res)return 1;
                res=mpu_set_sensors(INV_XYZ_GYRO|INV_XYZ_ACCEL|INV_XYZ_COMPASS);//设置所需要的传感器
                if(res)return 2;
                res=mpu_configure_fifo(INV_XYZ_GYRO | INV_XYZ_ACCEL);   //设置FIFO
                if(res)return 3;
                res=mpu_set_sample_rate(DEFAULT_MPU_HZ);                    //设置采样率
                if(res)return 4;
        res=mpu_set_compass_sample_rate(1000/COMPASS_READ_MS);  //设置磁力计采样率
        if(res)return 5;
        mpu_get_sample_rate(&gyro_rate);
        mpu_get_gyro_fsr(&gyro_fsr);
        mpu_get_accel_fsr(&accel_fsr);
        mpu_get_compass_fsr(&compass_fsr);
        inv_set_gyro_sample_rate(1000000L/gyro_rate);
        inv_set_accel_sample_rate(1000000L/gyro_rate);
        inv_set_compass_sample_rate(COMPASS_READ_MS*1000L);
        inv_set_gyro_orientation_and_scale(
            inv_orientation_matrix_to_scalar(gyro_orientation),(long)gyro_fsr<<15);
        inv_set_accel_orientation_and_scale(
            inv_orientation_matrix_to_scalar(gyro_orientation),(long)accel_fsr<<15);
        inv_set_compass_orientation_and_scale(
            inv_orientation_matrix_to_scalar(comp_orientation),(long)compass_fsr<<15);


                res=dmp_load_motion_driver_firmware();                             //加载dmp固件
                if(res)return 6;
                res=dmp_set_orientation(inv_orientation_matrix_to_scalar(gyro_orientation));//设置陀螺仪方向
                if(res)return 7;
                res=dmp_enable_feature(DMP_FEATURE_6X_LP_QUAT|DMP_FEATURE_TAP|                    //设置dmp功能
                    DMP_FEATURE_ANDROID_ORIENT|DMP_FEATURE_SEND_RAW_ACCEL|DMP_FEATURE_SEND_CAL_GYRO|
                    DMP_FEATURE_GYRO_CAL);
                if(res)return 8;
                res=dmp_set_fifo_rate(DEFAULT_MPU_HZ);        //设置DMP输出速率(最大不超过200Hz)
                if(res)return 9;   
                res=run_self_test();                //自检
//                if(res)return 10;   
                res=mpu_set_dmp_state(1);        //使能DMP
                if(res)return 11;     
        }
        return 0;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2024-5-27
在线时间
2 小时
 楼主| 发表于 2024-5-31 12:26:35 | 显示全部楼层
新人首贴,大家捧个场
另外MPU9250很难成功校准(强磁干扰已关掉),芯片转啊转操作十多次,只能那么一两次能够校准好(accuracy = 3)
回复

使用道具 举报

0

主题

7

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2021-11-10
在线时间
5 小时
发表于 2024-9-18 13:12:18 | 显示全部楼层
suntds 发表于 2024-5-31 12:26
新人首贴,大家捧个场
另外MPU9250很难成功校准(强磁干扰已关掉),芯片转啊转操作十多次,只能那么一 ...

大佬 要获取yaw的值 是不是要进行8字校准呀 还有就是强磁干扰怎么关闭呀 (正在学习9250)
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 07:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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