繁体   English   中英

设置 MPU6050 DMP 处理的俯仰和横滚初始值

[英]Setting initial values for pitch and roll for MPU6050 DMP processing

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

解决方案

尝试从 D_0_192 开始记录 memory 的 16 个字节(在inv_mpu_dmp_motion_driver.cD_0_192motion_driver_6.12 )。

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 state 的这一部分。 我在调用mpu_set_dmp_state(1)后这样做了。

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

免责声明

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM