工程介紹
工程使用stm32f407開發,imu單元爲ADIS16465-1 BMLZ,通過spi通信讀取imu的輸出寄存器,對讀取到的三軸加速度值和三軸陀螺儀值利用四元數進行姿態解算,最後得到pitch和roll。由於只通過六軸傳感器無法得到yaw,工程中只是對陀螺儀輸出的角速度進行了簡單的積分,誤差較大。
學習資料
四元數原理參考網上:https://blog.csdn.net/guanjianhe/article/details/95608801,把博主的這篇文章從上到下推導一遍基本就明白了。
工程中還有卡爾曼濾波的代碼,但是在姿態解算中並未用到,有需要的可以自己學習一下。
加速度計、陀螺儀原理以及卡爾曼濾波原理參考:https://www.arduino.cn/thread-18392-1-1.html
代碼下載
網盤下載鏈接:https://pan.baidu.com/s/14ekDutUUJU_7skPqi0qe-Q
提取碼:h2dd
有關四元數、ADIS16465、陀螺儀加速度計、卡爾曼濾波原理的文檔,我整合了一些,放在另一個repository:ADIS16465-version1
代碼移植的時候可能會有bug,只能滿足基本需要,僅供參考,敬請原諒。
結果
ADIS16465圖片
IMU靜止時輸出
繞x軸旋轉輸出
繞y軸旋轉輸出
繞z軸旋轉輸出
轉載請說明出處哦~希望對你有幫助!