如何對四旋翼飛行器進行精確的數學建模?

通過把輸入的pwm數據和相對應的imu數據導出來,進行系統辨識,這個方案是否可行


必須可行啊,不然你以為那些基於模型的控制演算法是如何做的?第一步就是建立模型。

舉個例子:

四軸的姿態控制,在假設姿態變化的角度很小,且沒有兩個姿態角同時變化的耦合情況,則可以將角度的非線性模型近似線性化,得到以下近似表達式

可知升力與角速度成正比,即升力與轉速成正比,再由轉矩與升力差成正比,可得轉矩與轉速差成正比。對上式做拉普拉斯變換,並假設電機轉速指令信號到實際轉速為一階延遲系統,則由電機旋轉速度信號到姿態角度的傳遞函數為

為了實現飛行器的穩定控制,引入陀螺儀角速度感測器測量角速度,以實現角速度的反饋控制如下圖所示

由上圖可得閉環控制的傳遞函數為

為確定傳遞函數中的參數,需要進行系統辨識,設置遙控器信號為輸入信號,角度為輸出信號,採用MATLAB中的IDENT工具箱求解系統中的參數。需要注意的是輸入的數據必須濾去直流分量才可使用,最好在process中先給出系統的階次,通過辨識則可得出系統的最佳擬合參數。對於同樣的控制輸入,辨識模型的輸出與實際飛行的輸出對比結構如下圖

反正結果差不多就行了。當然,一般建模控制的都用狀態方程,方法是一樣的,主要就是搞清楚你建模的輸入和輸出就行。


機身的結構如上圖所示。四個電機提供升力,一般升力正比於轉速的平方。那麼四旋翼的模型如下:

left{ egin{aligned}ddot{phi}  =dot{	heta}dot{psi}(frac{I_{y}-I_{z}}{I_{x}})-frac{J_{r}}{I_{x}}dot{	heta}Omega+frac{l}{I_{x}}U_{2}-frac{lK_{4}}{m}dot{phi}\ ddot{	heta}  =dot{phi}dot{psi}(frac{I_{z}-I_{x}}{I_{y}})+frac{J_{r}}{I_{y}}dot{phi}Omega+frac{l}{I_{y}}U_{3}-frac{lK_{5}}{m}dot{	heta}\ ddot{psi}  =dot{phi}dot{	heta}(frac{I_{x}-I_{y}}{I_{z}})+frac{l}{I_{z}}U_{4}-frac{K_{6}}{m}dot{psi}\ ddot{x}  =(cosphisin	hetacospsi+sinphisinpsi)frac{1}{m}U_{1}-frac{K_{1}}{m}dot{x}\ ddot{y}  =(cosphisin	hetasinpsi-sinphicospsi)frac{1}{m}U_{1}-frac{K_{2}}{m}dot{y}\ dot{z}  =(cosphicos	heta)frac{1}{m}U_{1}-g-frac{K_{3}}{m}dot{z} end{aligned} 
ight.

其中phi,	heta,psi分別是機身圍繞y軸,x軸,z軸旋轉的角度(逆時針);I_x,I_y,I_z分別是機身在三個方向的轉動慣量;J_r是轉動慣量,k_1,cdots k_6分別是空氣阻力係數;l是電機到質量中心的臂長;m是機身的質量;g是加速度(數值為9.81)。

U_1,U_2,U_3,U_4,Omega由下列方程得出(十字控制模式):

left{ egin{aligned}U_{1}  =b(Omega_{1}^{2}+Omega_{2}^{2}+Omega_{3}^{2}+Omega_{4}^{2})\ U_{2}  =b l(Omega_{4}^{2}-Omega_{2}^{2})\ U_{3}  =b l(Omega_{3}^{2}-Omega_{1}^{2})\ U_{4}  =d(Omega_{2}^{2}+Omega_{4}^{2}-Omega_{1}^{2}-Omega_{4}^{3})\ Omega  =Omega_{2}+Omega_{4}-Omega_{1}-Omega_{3} end{aligned} 
ight.

或(X控制模式):

left{ egin{aligned}U_{1}  =b(Omega_{1}^{2}+Omega_{2}^{2}+Omega_{3}^{2}+Omega_{4}^{2})\ U_{2}  =b l(Omega_{1}^{2}-Omega_{2}^{2}-Omega_{3}^{2}+Omega_{4}^{2})\ U_{3}  =b l(-Omega_{1}^{2}-Omega_{2}^{2}+Omega_{3}^{2}+Omega_{4}^{2})\ U_{4}  =d(Omega_{2}^{2}+Omega_{4}^{2}-Omega_{1}^{2}-Omega_{4}^{3})\ Omega  =Omega_{2}+Omega_{4}-Omega_{1}-Omega_{3} end{aligned} 
ight.

其中Omega_1,Omega_2,Omega_3,Omega_4分別為四個電機的轉速。至於電機轉速與PWM的關係,需要對具體電機進行分析,不過一般建模到這裡就足夠前期的研究了。

-----------------------------------------------------------------------

順便秀一下軌跡跟蹤的模擬~

----------------------------------------------------------------------

再秀一下多四旋翼集群運動,感覺畢業有望啦^_^

-------------------------------------------------------------------

四旋翼點跟蹤PID控制器設計:

待更新。。。

先貼上代碼吧

wjxjmj/quadrotorTracking


直接看論文,不要重複磨輪子。


認清自己

為了認清自己,四旋翼飛行器配備了兩隻功能強大的眼睛:一隻能看清自己的「位置」,知道自己是在黃山還是泰山,這就是自帶的GPS定位系統;另一隻能看清自己的「姿態」,就是知道自己是「坐著」、「躺著」,還是「倒立」,這就是陀螺儀。這兩隻眼睛還要和「加速度計」配合使用,才能更準確地知道自己的姿態和位置,以及姿態和位置的改變情況。

所謂GPS定位系統即全球定位系統(GlobalPositioningSystem),是一種以全球24顆定位人造衛星為基礎,向全球各地全天候地提供三維位置、三維速度等信息的無線電導航定位系統。它由三部分構成:一是地面控制部分,由主控站、地面天線、監測站及通訊輔助系統組成;二是空間部分,由24顆衛星組成,分布在6個軌道平面;三是用戶裝置部分,由GPS接收機和衛星天線組成。四旋翼飛行器身上安裝的就是用戶裝置部分。

陀螺儀又叫角速度計,就是通過一個不斷旋轉的陀螺記錄「姿態」。它的原理跟小時候玩的抽陀螺一樣,陀螺一旦轉起來,即使地面是斜的,陀螺還是會保持垂直旋轉,具有「定軸性」,我們可以假定這個姿勢是「坐姿」。當四旋翼飛行器「躺下」時,便與坐姿產生了一個夾角,但陀螺儀依然會沿著「躺姿」的軸繼續高速旋轉,具有「進動性」。利用安裝在陀螺儀上的感測器就可以知道這個夾角的大小和方向,從而確定「姿態」的變化。

光有GPS和陀螺儀還不能很好地知道自己準確的「姿態」和「位置」及動態變化的情況,還需要有加速度計的配合。

設計者在加速度計的內部配置了兩個電容的連接點,並且在中間放置一個可導電、可晃動的物質,透過監測該物質移動引起的電容改變,得到四旋翼飛行器位置變化的劇烈程度。

認識他人

認清了自己之後,四旋翼飛行器還需要認識他人。比如俊鷹的四旋翼飛行器會配備一架高級相機,這台高級相機,其實和咱們日常使用的相機是一個原理,只是多了一個高級的視覺處理系統,猶如人的視神經系統一樣,可以感知周邊環境。「相機」解析度越高四旋翼飛行器就「看」得越清楚。

四旋翼飛行器還師從蝙蝠,仿照超聲波測距,配備紅外線發射裝置,通過發射出去的波和反射回來的波之間的時間差,測出目標距離自己有多遠。

四旋翼飛行器擁有對稱分布在身體的前後左右的四隻「翅膀」,它們在同一高度的平面上,大小完全相同,由四個對稱分布在「翅膀」支架端的電機提供動力,支架中間安放著GPS、陀螺儀、加速度計、感應器、視覺感應系統和紅外線測距裝置等。

擁有如此簡單的構架,四旋翼飛行器又是如何飛翔的呢?

四旋翼飛行器的四隻「翅膀」不停的轉動會提供升力,轉速的改變可以改變升力的大小,從而改變四旋翼飛行器的位置和姿態。另外,相鄰的翅膀要做相反方向的旋轉,這樣才能產生平衡的力矩防止四旋翼在空中「打轉」。

下面就讓我們看看四旋翼飛行器的飛行絕技。

懸停:四個電機的輸出功率增加,就帶動著四隻翅膀的轉速提升,產生向上的升力,當這個升力超出了四旋翼飛行器自身重力時,四旋翼飛行器便起飛了。所謂在空中懸停,就需要四隻翅膀轉速帶來的升力和地球施加的重力大小相同,方向相反,也就是「靜若處子」啦。

前進:做到懸停之後,四旋翼飛行器又如何前進呢?這需要力的方向發生變化,一定要有使其向前的力,如圖7所示,在懸停的基礎上增加後面翅膀的轉速使得升力增大,減小前面翅膀的轉速使得升力減小,如此四旋翼飛行器的身體便會產生傾斜,翅膀的升力差便會產生向前的分量,四旋翼飛行器便可以向前飛行了。

滾轉:如果改變左右兩隻翅膀的轉速,即改變力矩,四旋翼飛行器就能在空中實現滾轉。當增大左邊減小右邊電機的轉速或者減小左邊增大右邊電機的轉速時,機體就會傾斜,如此左右不平衡的升力會使得力矩增大,這樣飛行器就可以在空中滾轉了。


Google "drone athletics"

或者看

Raffaello D"Andrea: The astounding athletic power of quadcopters

老外2013年就drone數學建模已經玩得很溜了。


看國外的博士論文,不要自己建


請參考mil-hdbk-1797關於有人駕駛飛機飛行品質等效系統擬配的相關方法。雖然這個主要針對固定翼飛機,然而原理和旋翼機是相通(不是一模一樣)的。

補充一句,雖然用pwm數據是可行的,然而如果沒有約束就蠻幹,辨識起來會比較麻煩,建議在系統穩定的前提下,通過階躍響應或衝擊響應來進行系統辨識。注意,你要辨識的是若干個參數,也就是說,你先要準備好含未定參數的系統模型,然後可事半功倍矣。


精確的數學建模 就要動力學建模了 平時我們用matlab系統辨識就夠了


肯定是可以,但是建議不要用pwm信號作為輸入量,而是把pwm的占空比信號做為輸入量,這樣的話效果會好很多,pwm里很多高頻的成分其實是無意義的,只要關注基波就行。

辯識模型有優勢也有局限性,對於固定對象比較適用,對於可變對象,就要好好斟酌一下了


推薦閱讀:

大家都用matlab做過哪些有趣的事兒?
MATLAB 能幹嘛?
怎樣利用MATLAB求一維含時薛定諤方程的數值解?
數學中求解整數規劃在matlab中怎麼使用呢?
MATLAB做圖像處理到社會上實用嗎?

TAG:MATLAB | 數學建模 | 四軸飛行器 |