一個(gè)基于STM32F429的姿態(tài)檢測(cè)系統(tǒng),也就是俗稱的AHRS,被很多人用來(lái)做四軸飛行器的,不過(guò)本人對(duì)四軸飛行器不是很感興趣,主要用來(lái)檢測(cè)人體姿態(tài)和仿生控制的。采用MPU6050進(jìn)行數(shù)據(jù)融合,得到空間姿態(tài)信息,從而完成手勢(shì)檢測(cè),動(dòng)作檢測(cè),人體姿態(tài)檢測(cè)。基于MEMS的三軸陀螺儀,加速度計(jì)。目前AHRS內(nèi)部采用的多傳感器數(shù)據(jù)融合進(jìn)行的航姿解算單元為卡爾曼濾波器。
特點(diǎn):高精度360 度全方位位置姿態(tài)輸出,數(shù)據(jù)融合算法快速動(dòng)態(tài)響應(yīng)與長(zhǎng)時(shí)間穩(wěn)定性(無(wú)漂移,無(wú)積累誤差)
輸出:三維全姿態(tài)數(shù)據(jù)(四元數(shù) / 歐拉角 / 旋轉(zhuǎn)矩陣/原始數(shù)據(jù))三維加速度 / 三維角速度
完整源碼:
空間姿態(tài)檢測(cè).zip
(611.82 KB, 售價(jià): 3 E幣)
1.jpg (35.34 KB)
下載附件
2021-12-13 16:55 上傳
簡(jiǎn)介:
1) 如何計(jì)算積分
對(duì)角速度積分得到角度,但是會(huì)累積誤差,dt為積分時(shí)間s秒,最好放在中斷運(yùn)行.中斷每隔
dt秒進(jìn)入一次中斷并進(jìn)行計(jì)算,必須確保在1個(gè)中斷周期內(nèi)能夠完成全部計(jì)算.
Example:
Axis.GyroY = getGyroY(); //獲取Y軸角速度,單位為度
Angle += Axis.GyroY * dt; //離散信號(hào)的積分即為求黎曼和.
2) 互補(bǔ)濾波器
原理是取當(dāng)前傾角和加速度,做差獲得傾角差值并進(jìn)行放大,然后與陀螺儀角速度
疊加后再積分,從而使傾角跟蹤為加速度獲得的角度.
2為放大倍數(shù),可調(diào)節(jié)補(bǔ)償度;0.01為系統(tǒng)周期10ms.
Example:
FilterAngle = FilterAngle + (((Gesture.Angle_FY - FilterAngle)*2 + Axis.GyroY)*0.01);
3) 卡爾曼濾波器
原理請(qǐng)百度
Example:
Kalman_Filter(Gesture.Angle_FY,Axis.GyroY,&FilterAngle);
4) AHRS數(shù)據(jù)融合
通過(guò)四元數(shù)矩陣運(yùn)算把加速度計(jì)和陀螺儀的數(shù)據(jù)進(jìn)行融合計(jì)算出歐拉角.
2.jpg (103.62 KB)
下載附件
2021-12-13 17:04 上傳
【必讀】版權(quán)免責(zé)聲明
1、本主題所有言論和內(nèi)容純屬會(huì)員個(gè)人意見(jiàn),與本論壇立場(chǎng)無(wú)關(guān)。2、本站對(duì)所發(fā)內(nèi)容真實(shí)性、客觀性、可用性不做任何保證也不負(fù)任何責(zé)任,網(wǎng)友之間僅出于學(xué)習(xí)目的進(jìn)行交流。3、對(duì)提供的數(shù)字內(nèi)容不擁有任何權(quán)利,其版權(quán)歸原著者擁有。請(qǐng)勿將該數(shù)字內(nèi)容進(jìn)行商業(yè)交易、轉(zhuǎn)載等行為,該內(nèi)容只為學(xué)習(xí)所提供,使用后發(fā)生的一切問(wèn)題與本站無(wú)關(guān)。 4、本網(wǎng)站不保證本站提供的下載資源的準(zhǔn)確性、安全性和完整性;同時(shí)本網(wǎng)站也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的損失或傷害。 5、本網(wǎng)站所有軟件和資料均為網(wǎng)友推薦收集整理而來(lái),僅供學(xué)習(xí)用途使用,請(qǐng)務(wù)必下載后兩小時(shí)內(nèi)刪除,禁止商用。6、如有侵犯你版權(quán)的,請(qǐng)及時(shí)聯(lián)系我們(電子郵箱1370723259@qq.com)指出,本站將立即改正。
|