日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Pixhawk之姿态解算篇(4)_补充篇

發(fā)布時間:2024/4/18 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pixhawk之姿态解算篇(4)_补充篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、開篇

? ? ? ? 大家期待已久的第四篇來了,但是本篇可能比較水啊~~~見諒~~~

? ? ? ? 首先,上一周沒有什么收獲,雖然看了不少的論文,但是卻沒有什么質(zhì)的飛越~~~~

? ? ? ? 看的論文都是關于姿態(tài)解算的,用的算法大部分也都是基于mahony算法的擴展,就當是深入理解一下姿態(tài)解算過程吧,稍微寫寫上周總結的一丁點的知識。

? ? ? ? 昨天開了一整天的會議,最終決定姿態(tài)解算部分還是需要用EKF做,慢慢搞吧,但是我還是先把姿態(tài)控制部分解決了,感覺這個部分也相當重要。


三、實驗平臺

Software?Version:PX4Firmware

Hardware Version:pixhawk

IDE:eclipse Juno (Windows)

四、基礎知識

? ? ? ? 研究多旋翼無人機前期主要需要了解其氣動布局和復雜的動力學模型,然后就是姿態(tài)解算和控制器的設計。為了實現(xiàn)精確四旋翼飛行器的姿態(tài)估計,首先就是需要了解各傳感器采集的數(shù)據(jù)和誤差存在的原因,然后就是各種數(shù)學運算(都是基于一定的數(shù)學平臺),比如DCM隨時間的變化、四元數(shù)微分方程、四元數(shù)隨時間的變化、重正交化等等。

? ? ? ? 在理解構建四旋翼動力學模型時,需要了解它是屬于四輸入六輸出的欠驅(qū)動系統(tǒng),欠驅(qū)動主要就是輸入只值靠四個電機的拉力實現(xiàn)控制角速度、角度、上升速度、下降速度、上升距離和下降距離。動力學模型還在研究中

? ? ? ? 實現(xiàn)四旋翼飛行器的自主飛行主要就是靠姿態(tài)解算和姿態(tài)控制。姿態(tài)控制是四旋翼飛行器實現(xiàn)各項工作的核心,位置控制建立在完善的姿態(tài)控制的基礎上。前面已經(jīng)介紹過,僅僅依靠陀螺儀積分獲取角度值是不可靠的,由于陀螺儀由于其本身的固有的drift,積分帶來的誤差隨時間的積累越來越大;而加速度計又容易受到噪聲和震動的干擾。因此在此基礎上使用各種算法對兩種數(shù)據(jù)進行融合,以獲取較為理想的姿態(tài)數(shù)據(jù)。比較常見的融合算法有EKF(Extended Kalman Filter)、UKF(Unscented Kalman Filter)、梯度下降法、CKF(Cubature Kalman Filter)、PF(Particle Filter)和CF(Complementary Filter)。

? ? ? ? 其中mahony姿態(tài)解算算法主要就是基于CF設計的數(shù)據(jù)融合濾波器,該算法需要重點掌握其原理思想其分為AHRS(陀螺儀、加速度計、磁力計)和IMU(陀螺儀、加速度計)兩種。

? ? ? ? 目前研究多集中在非線性控制領域,由于非線性控制對模型準確性有較強的依賴,在模型誤差存在的條件下,PID控制更加實用,所以現(xiàn)有的基于mahony互補濾波器設計的算法中大多數(shù)都是基于PID反饋控制器的。

? ? ? ? 接下來就是使用Simulink進行控制器建模仿真,也在研究中

五、正文

1、傳感器的數(shù)值模型(mahony互補濾波器)

? ? ? ? 首先還是貼圖吧,word編輯的公式還是搞不進來。


2、互補濾波器的設計(基于四元數(shù))

? ? ? ? 依舊是圖片~~~~



? ? ? ? 終于不是圖片了~~~

? ? ? ? 這里講的互補濾波就是在短時間內(nèi)采用陀螺儀得到的角度做為最優(yōu)值,定時對加速度采樣來的加速度值進行取平均值來校正陀螺儀的得到的角度。短時間內(nèi)用陀螺儀比較準確,以它為主;長時間用加速度計比較準確,這時候加大它的比重,這就是互補了,不過加速度計要濾掉高頻信號,陀螺儀要濾掉低頻信號,互補濾波器就是根據(jù)傳感器特性不同,通過不同的濾波器(高通或低通,互補的),然后再相加得到整個頻帶的信號。例如,加速度計測加速度值,其動態(tài)響應較慢,在高頻時信號不可用,所以可通過低通濾波器抑制高頻干擾;陀螺儀響應快,積分后可測傾角,不過由于零點漂移等,在低頻段信號不好,通過高通濾波器可抑制低頻干擾。將兩者結合,就將陀螺儀和加速度計的優(yōu)點融合起來,得到在高頻和低頻都較好的信號,互補濾波需要選擇切換的頻率點,即高通和低通的頻率。

六、在深入一點

1、對mahony互補濾波算法和PX4Firmware源代碼中的姿態(tài)解算算法的一點見解

? ? ? ? 首先是最原始mahony濾波算法中的加速度計數(shù)據(jù)修正陀螺儀數(shù)據(jù),源碼如下。

[plain] view plain copy
  • 1.??//?measured?by?Accelerate?sensor??
  • 2.????ax?=?ax?/?norm;????
  • 3.????ay?=?ay?/?norm;????
  • 4.????az?=?az?/?norm;????
  • 5.????
  • 6.??//?estimated?direction?of?gravity??(v)?????
  • 7.????vx?=?2*(q1q3?-?q0q2);????
  • 8.????vy?=?2*(q0q1?+?q2q3);????
  • 9.????vz?=?q0q0?-?q1q1?-?q2q2?+?q3q3;????
  • 10.????
  • 11.?//?error?is?sum?ofcross?product?between?reference?direction?of?fields?and?direction?measured?by?Accelerate?sensor?????
  • 12.???ex?=?ay*vz?-?az*vy?;????
  • 13.???ey?=?az*vx?-?ax*vz?;????
  • 14.???ez?=?ax*vy?-?ay*vx?;????
  • 15.????
  • ? ? ? ? 對上述代碼的理解:[ax,ay,az] 表示由機體上的加速度計實際測量到的加速度數(shù)據(jù),根據(jù)數(shù)據(jù)融合修正原理,加速度計在低頻的情況下效果比較好,陀螺儀在高頻情況下效果好;在低頻下,忽略機體的運動加速度,即加速度計測量到的數(shù)據(jù)就是近似的純重力加速度向量。[vx,vy,vz]表示由陀螺儀積分以后的姿態(tài)矩陣中獲取的重力加速度向量(如何得到的不再贅述)。并且這兩個向量都是在機體坐標系中,兩個重力加速度向量做外積得到的向量就是所謂的誤差向量(12、13、14行代碼),且叉積的大小和陀螺儀的積分誤差成正比,用該誤差向量修正下一次的陀螺儀數(shù)據(jù)即可達到用加速度計修正陀螺儀數(shù)據(jù)誤差的效果。

    ? ? ? ? 然后就是PX4Firmware源碼中的加速度計數(shù)據(jù)修正陀螺儀數(shù)據(jù),源碼如下。

    [plain] view plain copy
  • 1.??//?Accelerometer?correction????
  • 2.??//?Project?'k'?unit?vector?of?earth?frame?to?body?frame????
  • 3.??//?Vector<3>?k?=?_q.conjugate_inversed(Vector<3>(0.0f,?0.0f,?1.0f));?n系到???
  • 4.??//?b系??
  • 5.??//?Optimized?version?with?dropped?zeros????
  • 6.??????Vector<3>?k(????
  • 7.??????????2.0f?*?(_q(1)?*?_q(3)?-?_q(0)?*?_q(2)),????
  • 8.??????????2.0f?*?(_q(2)?*?_q(3)?+?_q(0)?*?_q(1)),????
  • 9.??????????(_q(0)?*?_q(0)?-?_q(1)?*?_q(1)?-?_q(2)?*?_q(2)?+?_q(3)?*?_q(3))????
  • 10.?????);????
  • 11.??corr?+=?(k?%?(_accel?-?_pos_acc).normalized())?*?_w_accel;??
  • 12.????
  • ? ? ? ? 該算法中,Vector<3> k就是由陀螺儀積分以后的姿態(tài)矩陣中獲取的重力加速度向量(等同于mahony算法中的[vx,vy,vz]);這部分都類似,主要的不同就是下面的加速度計測量數(shù)據(jù)的處理,首先通過加速度計獲取總的加速度向量,然后同過GPS或者空速管獲取運動加速度向量,然后通過這兩個向量之差求取純重力加速度,即:總的加速度 =運動加速度 + 重力加速度(此處考慮了低頻情況下的運動加速度,修正效果更好)。_w_accel代表權重,即類似于Kp。

    ? ? ? ? 上述代碼中的“%”運算符定義為叉積運算:

    [plain] view plain copy
  • 1.??Vector<3>?operator?%(const?Vector<3>?&v)?const?{????
  • 2.??????????return?Vector<3>(????
  • 3.?????????????????????data[1]?*?v.data[2]?-?data[2]?*?v.data[1],????
  • 4.?????????????????????data[2]?*?v.data[0]?-?data[0]?*?v.data[2],????
  • 5.?????????????????????data[0]?*?v.data[1]?-?data[1]?*?v.data[0]????
  • 6.?????????????????);????
  • 7.??????}????
  • 8.??};????
  • 七、總結
    ? ? ? ? 沒看多少東西,可能是因為清明放假太嗨了吧,心還沒有收回來。好吧,我承認,是我太水~~~

    ? ? ? ? 今天建了一個群,希望大家可以多多討論技術相關問題,為祖國的無人機行業(yè)多做貢獻。

    版權聲明:. https://blog.csdn.net/qq_21842557/article/details/51122524

    總結

    以上是生活随笔為你收集整理的Pixhawk之姿态解算篇(4)_补充篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。