四軸飛控用的什麼演算法?


我大致講一下px4吧

姿態和位置計算:EKF
位置控制:PID
姿態控制:姿態環是直接P控制,姿態率是PID控制。

大致如此


主要是濾波演算法和姿態演算法還有PID演算法。 濾波演算法主要是將獲取到的陀螺儀和加速度計的數據進行去雜訊及融合,得出正確的角度數據。主要採用互補濾波或者高大上的卡爾曼濾波。
姿態演算法是將獲得的濾波後的感測器數據計算得出飛行器自身坐標系與地理空間坐標系的偏差,即歐拉角。 一般採用四元數演算法。
PID演算法就是用來控制四個電機的轉速來糾正歐拉角,從而使機身保持平穩。


無人機或者飛行器的控制器叫做飛控,了解這種控制方法不但是其中的演算法還包括控制對象,控制器等等。飛控作為一個體系來理解更容易入手。

感測器構成控制迴路的閉環;遙控器給過來的信號可以做為控制目標,這時只涉及到油門控制也就是油門曲線和姿態之間的控制問題。但如果將遙控器或者地面站已經設定好的路徑,功能中蘊含的姿態,如定高,特殊油門,自動起降等等,飛控需要自己完全接管姿態控制;輸出是為了控制電機轉速——針對四旋翼的控制原理就是成對的電機調速:

飛控當中常用的演算法暫時還是PID,智能PID如模糊PID,也有採用LQR,變結構控制器等等。控制系統結構上面一般採用雙閉環的形式,分出姿態換和位置換進行控制。
姿態演算法提供控制所需要的閉環迴路,姿態的獲取有幾種途徑:陀螺儀積分,加速度計+強磁計,陀螺儀與加速度計強磁計的數據融合(濾波)。
姿態的標示方式有歐拉角(也叫姿態角),四元數,指數形式,矩陣形式等等。歐拉角畢竟是非全局,非唯一的。四元數是全局標示姿態,但不唯一。
至於原因,我把自己總結的公式貼在下面:

四元數也好,歐拉角也好都有比較固定的工程計算方法。

作者:無人機中的城堡,公眾號:CastleUAVStudio

MR.城堡為您提供涵蓋無人機技術分析與分享,無人機產品評測(參評、機評),行業分析等領域的專業內容

作者為環球網無人機頻道,深圳灣,UAVSNEWS等行業媒體特約撰稿人。


貌似提問者對整個控制系統還不大了解,我來大致回答吧,給個概念。具體演算法如何實現也不是這裡能說清楚的。需要可以去查.

一個旋翼類無人機系統的演算法主要有兩類:姿態檢測演算法、姿態控制演算法。

姿態控制、被控對象(即四旋翼無人機)、姿態檢測三個部分構成一個閉環控制系統。被控對象的模型是由其物理系統決定,我們設計無人機的演算法就是設計姿態控制演算法、姿態檢測演算法。

1:姿態檢測演算法:姿態的三個自由度可以用歐拉角表示,也可以用四元數表示。姿態檢測演算法的作用就是將加速度計、陀螺儀等感測器的測量值解算成姿態,進而作為系統的反饋量。常用的姿態檢測演算法有卡爾曼濾波、互補濾波等。

2:姿態控制演算法:控制飛行器姿態的三個自由度,以給定姿態與姿態檢測演算法得出的姿態偏差作為輸入,被控對象模型的輸入量作為輸出(例如姿態增量),從而達到控制飛行器姿態的作用。最常用的就是PID控制及其各種PID擴展(分段、模糊等)、高端點的有自適應控制。當然,姿態控制演算法裡面又常用角速度、角度雙閉環控制,所以常常有PD外環+PID內環等等,這些細節就不說了。

這倆演算法搞清楚,再指導無刷電機的控制方法,基本就能搞清飛控的組成了。雲台控制也是同理。


我來說一下apm的演算法吧。
自穩(stabilise)模式下:
沒有position and velocity estimator,只用根據imu得到的偏角對馬達轉速進行調整已達到自穩。偏轉補償角度控制器為pi,角度加速度控制器為pid。

定點(loiter)模式下:
ekf根據gps,imu,sonar(如果夠低),optical flow sensor(如果有)的數據計算出現在的位置。然後可以得到現在位置與desired position的差值,位置控制器有一個pid控制偏轉角,然後再到角加速度的pid控制。

中文很爛,但願有幫助。


普及下四旋翼的控制流程:控制中心單片機通過IMU陀螺儀加速度計(MPU6050等等)獲取四旋翼的角度(俯仰、橫滾和偏航)的相對基準角度變化、然後濾波(卡爾曼濾波等等)處理獲得方向餘弦矩陣和四元數得到歐拉角、使用PID控制或者PI,PD控制(P比例I積分D微分)將系統反饋值和期望值進行比較、並根據偏差不斷修復、直至達到期望的預定值。P的作用是加快系統達到預期的速度;I的作用是消除凈差;D有阻尼的作用、就是阻止系統突變。
通過PID自動控制演算法處理、輸出期望的PWM波給四個電調、控制四個無刷電機的轉速、從而得到一個期望的力控制四旋翼的前後左右上下飛行。
第一次回答、手機打字、輕噴(→o←)


1. 三角函數直接解算歐拉角+互補濾波+單級PID版本
效果:簡單暴力,但是補濾波效果差,單級PID響應慢,打舵跟隨效應差。
2. 三角函數直接解算歐拉角+卡爾曼濾波+單級PID版本
效果:卡爾曼濾波雜訊偏大,滯後略微嚴重,單級PID難操作,打舵響應慢,跟隨效應差。不過比較適合初學四軸的人,難度比四元數加串級PID版本低,易於理解。
3. 四元數姿態解算+互補濾波(德國開源四軸)+串級PID版本
效果:四元數難理解,基於PI控制的互補濾波不適合非專業人員,PID參數較單級PID參數難調。打舵響應極佳,穩定程度高,易於操作,是目前四軸的主流演算法

參考:初學PX4之飛控演算法


我這種新手渣隨便說說 採集姿態曾用過KF IMU UKF三種演算法 比較之後選擇了中庸的IMU 其實UKF真的很屌只是運算量太大了。。用的是串級PID,本想用模糊PID裝裝逼發現隸屬函數選不好效果不好,最後就用了經典PID然後就D項加個低通,平衡還是沒問題的。。無線用nrf24l01+,上位機用匿名。。至於超聲定高調增量PID調的太水了就不發表看法了。要是壕一點就弄個光流加gps還有牛逼的電機,關鍵還有旋翼一定要買好的這尼瑪真的差很遠!!!


這裡講的都是4旋翼無人機。我想做一個2旋翼,用2台大功率摩托車發動機做動力,駕駛員騎在中間,這樣的話,飛控系統怎麼做?飛控器多少錢?


imu姿態採集,濾波融合後得到姿態角,低精度使用傳統位置式pid,一般pd就夠了
精度在高點用串級,外環pd,內環p就夠了
再升級加模糊控制,自適應,神經網路等等,看你控制器計算速度了
加定位定高的話gps,flow數據和imu的融合
當然你先要數據採集,還有可視化模擬,總之費時費力。


一般有兩種方法:互補濾波和卡爾曼濾波。

互補濾波演算法比較容易實現,實時性比較好,濾波效果需要多次調整濾波參數。

卡爾曼濾波演算法比較複雜,計算量比較大,濾波效果比較好。


飛控系統中會涉及到很多演算法!
首先感測器數據需要濾波,這樣就會有低通,高通,iir等濾波方法!目的是保證感測器數據的平滑,接下來就是姿態結算,有互補,梯度下降,ekf等演算法!接下來就是姿態控制,這個就是傳統的pid,沒啥可說的!再下來就是位置,速度結算演算法,常用的就是kf和ekf,這樣飛控中大概所有的演算法都應該齊全了!


卡爾曼濾波 PID控制 角速度 角加速度


留名,電腦上回答


分導航部分和控制部分,導航是組合導航,控制一般串級PID


pid


推薦閱讀:

如何用通俗易懂的話來解釋非對稱加密?
編寫怎樣的代碼能使計算機發熱效率最高?
如何高效的識別出網路爬蟲?
MATLAB循環嵌套的優化,可否改成矩陣運算?
一個N*N的矩陣,取值為0或1,有什麼好的演算法判斷一行或一列全為1啊?

TAG:演算法 | 四軸飛行器 |