簡體   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