[英]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.c
的D_0_192
中motion_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.