bvp解算器是什麼 幾種飛控的姿態解算演算法

2021-10-17 05:56:44 字數 2726 閱讀 3889

姿態解算是飛控的乙個基礎、重要部分,估計出來的姿態會發布給姿態控制器,控制飛行平穩,是飛行穩定的最重要保障。有關姿態解算的基礎知識,這裡筆者不會細細描述,有關這方面的資料,網上已經有很多。主要是先掌握座標系的概念、姿態角的幾種描述方法(尤拉角、四元數、旋轉矩陣)等。

姿態解算的難點主要在於,消費級飛控上一般所選用的慣性感測器,都是mems器件,精度相對較差,同時陀螺儀、加速度計、地磁計單個感測器無法得到滿意的姿態角資訊,所以需要一些融合演算法,進行姿態估計。

首先,如何測量姿態解算的精度?

很多人都會有這個困擾,就是沒辦法確定所得到的角度的精確程度。一般用外部參考的方法測量,比如飛機上同時掛載自己的飛控以及高精度的imu裝置(比如xsens、sbg等),飛行完成後,對比自己飛控所解算的角度和外部裝置的誤差;又或者,在室內裝vicon裝置來給出外部參考。

筆者手上沒有精確的外部裝置,所以本文不能得出結論哪種演算法的好壞,只是提供大概思路。

採用開源px4飛控,進行姿態模式飛行,取出飛行資料,注意,驗證演算法的時候,最好還是用實際飛行的資料,否則加速度雜訊對演算法的影響無法驗證,同時,這裡的角度參考僅是px4飛控所解算得到的角度,不能算高精度參考,資料曲線:

1.看一下單獨的陀螺儀積分角度與加速度計算出的角度各有什麼問題?

陀螺儀角度:就是對角速度資料進行積分;

加速度角度:

在matlab中編寫m**進行驗證對比。

如上圖所示,藍色的陀螺積分角度隨著時間會有漂移,而加速度計得到的角度則雜訊很大,都無法使用。

2.互補濾波

由於單一感測器獲得角度都有缺點,乙個動態精度好,乙個靜態精度好,很自然聯想到互補濾波,即通過調整乙個加權係數,如果陀螺儀所佔的權重大些,則解算的角度則跟陀螺角度近似,加速度類似。

filtered(i) = (filtered(i-1) +

imu_gyrox(i)*imuper)*a + (1-a)*angle_acc(i);

a為0.95的曲線如下:

a為0.3,曲線如下:

綜上所看,固定增益a,無論如何調整,效能總是不盡理想,陀螺儀的權重大了,動態效能還可以,大致能跟上角度,但是不能靜態保持,當沒有角速度時,角度也收斂了;加速度權重大了,噪音大,另外動態效能差,100s左右的來回打杆,所得的角度基本沒有變化。

3.自適應互補濾波

如果權重引數可變呢?也就是如果角度變化大時,更相信陀螺,否則則更相信加速度的角度。

如圖所示,雖然動態精度看上去好了,但是當靜態的時候,還是不能達到滿意效果。另外,圖中可以看出,加速度的角度所保證的靜態精度是有延遲的。

4.mahony&px4

so3演算法

px4飛控早期的姿態解算有乙個so3版本,其演算法其實就是網上常見的mahony演算法。演算法原理:根據加速度計和地磁計的資料,轉換到地理座標系後,與對應參考的重力向量和地磁向量進行求誤差,這個誤差用來校正陀螺儀的輸出,然後用陀螺儀資料進行四元數更新,再轉換到尤拉角。

具體步驟如下:

該演算法能得到大概的角度。至於哪個更準確,這裡無法判斷。不過俯仰角,在40s左右的一段,這時候飛機姿態是回平的,但是解算有誤。

5.卡爾曼濾波

卡爾曼濾波是非常常用的狀態估計演算法,相關的理論介紹有很多,這裡不贅述了。有一點要注意,就是你的狀態方程和量測方程的模型不一樣,效果肯定也是不一樣的,卡爾曼濾波只是理論,具體怎麼用還得看具體情況,效果也是看所建的模型。

模型一:

狀態量分別是俯仰角、滾轉角以及對應的角速度偏移。

模型如下:

模型二:

參考書目

nonami k, kendoul f, suzuki s, et al.

autonomous flying robots: unmanned aerial vehicles and micro aerial

vehicles[m]. springer publishing company, incorporated, 2010.

第10章

結果如圖:

兩者曲線差不多,認為可以使用。

模型三:

px4飛控早期的attitude_estimator_ekf版本。

演算法的具體步驟,可以參考:

幾個小點:

1、怎麼用卡爾曼進行融合?模型**來?

建模一般則是根據物理規律進行定的,運用現成的數學理論,如果不是很了解,可以參考一些**。

2、卡爾曼如何調引數?

簡單來講,就是重點調r矩陣引數,一般取資料,用matlab看曲線。

3、資料的座標系?

很多人用同樣的**,輸入資料後,運算的結果不對。一般主要原因就是正負號不對應,要對好資料的座標系,就是正負號,不知道的話,本辦法就是試湊。

4、資料質量對解算的影響?

最後那個資料曲線就是手晃的資料,不是直接飛行的,加速度噪音小。資料質量一般關心的是加速度的資料,起飛後,加速度噪音比較大,可能你在地面測試,覺得姿態角算的挺準的,但是一起飛就不行了,這時候需要回過頭來處理加速度資料,怎麼處理?涉及到濾波方面的知識,後續會簡單講講。

5、卡爾曼濾波好在**?

主要是因為一般的互補濾波,權重引數是固定的,而卡爾曼本質也是調整權重引數,但是是時變的,不過計算量相對較大。

6、動加速度的影響?

動加速度對姿態解算影響較大,因為你的陀螺是靠重力加速度向量去校正的,一旦運動的加速度大了,則會影響參考,自然也算不准了。普遍的方法是會融合gps的速度算加速度。

這篇文章只是簡單描述了一些常用的姿態解算演算法,並不直接點明好壞,沒有參考資料,不太好分析。有的一些沒有給出推導過程,讀者可以自己推導。一些理論也請自行查閱相關文獻。後續也會講解下卡爾曼濾波等內容。

挖礦的算力是什麼?

1 本地算力和礦池算力 算力分為本地算力和礦池算力,挖過礦的朋友知道這兩個算力永遠對不上號。本地算力就是你的本地礦機顯示的算力。礦池算力是顯示在你所挖礦池的查詢頁面上,分為總計算力和單台礦機算力,總算力就是錢包位址所有在挖礦機的算力總和。一般礦池算力都是顯示的平均值,分為15鐘平均算力跟24小時平均...

邊沿觸發是什麼意思 示波器的幾種觸發方式解釋

我們先簡單回顧下什麼是示波器的觸發。由於訊號無時無刻都在變化,如果一股腦的都把他們顯示在示波器上,就會很亂,根本無法讓我們看清楚,從而也就無法觀察訊號來解決問題。考慮到訊號大多數時候都是以某種規律週期性出現的,因此我們只要找到他重複的規律,把每一次重複疊加顯示在示波器上,訊號就可以穩定觀察了。這種把...

迭代器是什麼

在學習c stl的時候,整天碰到迭代器,也整天用,但是,到底它是個什麼東西,很多人沒有乙個認識。這裡我通過幾個小的demo,來看看迭代器。首先我實現了乙個十分簡陋的vector類 view plain template class t class vector t begin void insert...