【问题标题】:Setting initial values for pitch and roll for MPU6050 DMP processing设置 MPU6050 DMP 处理的俯仰和横滚初始值
【发布时间】:2021-02-22 23:08:51
【问题描述】:

我想处理我的 MPU6050 断开并重置时的情况。不幸的是,在重新初始化 MPU6050 后,俯仰和横滚值显示为 0,并在大约 1-2 秒后以正确的值稳定下来。我想通过在重置之前写入最后读取的值来提示 DMP。它有任何接口吗? 顺便说一句,无论我将 LPF 配置为 5 还是 188 - '问题' 仍然存在。

【问题讨论】:

    标签: mpu6050 imu dmp


    【解决方案1】:

    解决方案

    尝试记录从 D_0_192 开始的 16 字节内存(在 motion_driver_6.12inv_mpu_dmp_motion_driver.c 中定义)。

    unsigned short buf[16];
    mpu_read_mem(D_0_192, 16, buf);
    // your chosen method of logging this buffer
    

    我在mpu_set_dmp_state(1) 之后不久看起来像这样:

    3fffdfeb 003eb3b6 000d2278 00002f3c
    

    稳定15秒后这样:

    1e246556 386e559d 01b407b2 004d6ad9
    

    如果我使用 MPU6050 的设备倒置启动,读数稳定需要这么长时间。

    读数稳定后,将该值记录为常数,并在 DMP 设置发生时将其写回同一位置:

    mpu_write_mem(D_0_192, 16, buf);
    

    方法

    我在inv_mpu_dmp_motion_driver.c 中记录了一些提到但未引用/未记录的 DMP 寄存器的内容,认为它们可能在某处暴露了这部分 DMP 状态。我是在致电mpu_set_dmp_state(1) 之后这样做的。

    我发现许多值在 DMP 运行时会发生变化。 D_0_192,我认为是与态度相对应的内部状态,可以通过其缓慢的松弛时间来识别。我没有花时间解释内容。我只复制了缓冲区并观察了预期的结果——DMP fifo 的内容从记录的姿态开始。

    免责声明

    这是未记录的,可能非常错误,而且肯定很脆弱(未经测试,除了 motion_driver_6.12 中包含的 DMP 固件 blob 之外的任何东西)。使用风险自负。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多