周 唯 王曉東
(昆明理工大學(xué)信息工程與自動化學(xué)院 昆明 650500)
三自由度直升機模型是一個高度非線性,強耦合的多變量控制系統(tǒng)。對它的研究成果可以為直升機研制提供有力參考。本文的目的是實現(xiàn)三自由度直升機良好的姿態(tài)控制?;趥鹘y(tǒng)PID的控制方法[1]雖然對SISO控制系統(tǒng)魯棒性好,但是對多變量強耦合控制系統(tǒng)而言表現(xiàn)不佳。傳統(tǒng)的PID控制方法使用在三自由度直升機上,俯仰軸和橫滾軸的去耦合效果差?,F(xiàn)代控制理論處理多線性多變量問題具有優(yōu)勢[2~3],三自由度直升機的數(shù)學(xué)模型是一個典型的仿射非線性系統(tǒng)多變量強耦合控制系統(tǒng),盡管利用現(xiàn)代控制理論方法處理經(jīng)過簡化后的三自由度直升機取得了比較好的仿真效果,但控制器在實際應(yīng)用中很難實現(xiàn)姿態(tài)的無差控制,產(chǎn)生的誤差無法接受。以上提到的方法主要的缺陷是:在建立三自由度直升機數(shù)學(xué)模型過程中某些非線性環(huán)節(jié)被忽略,這種忽略大多是沒有嚴(yán)格的依據(jù),僅僅是為了適合控制理論中的某些線性的數(shù)學(xué)模型,最終根據(jù)線性系統(tǒng)和理論設(shè)計得到的控制器很難達(dá)到滿意的控制品質(zhì)。隨著人工智能的興起,智能型的控制算法逐漸出現(xiàn),使得對復(fù)雜控制系統(tǒng)的控制更加的簡潔。本文使用PID神經(jīng)網(wǎng)絡(luò)多變量控制算法[4~5]對三自由度直升機的姿態(tài)控制效果好,控制器設(shè)計方便,克服了傳統(tǒng)方法的不足。
三自由度直升機系統(tǒng)模型在三個維度上運動,其模擬的是縱列式雙旋翼結(jié)構(gòu)直升機,比如美國的中型運輸直升機(支奴干縱列式雙旋翼結(jié)構(gòu)直升機CH-47)就是代表。如圖1所示,三自由度直升機研究平臺由直升機本體,俯仰機架桿,重力塊,偏航機架桿,基座,集電環(huán),三個角度傳感器組成。直升機本體由兩個螺旋槳電機驅(qū)動葉片提供直升機系統(tǒng)運動的動力。俯仰機架桿兩端分別連接重力塊和直升機本體。偏航軸機架桿支撐俯仰軸機架桿。三個角度傳感器實時測量系統(tǒng)在俯仰,滾動,偏航這三個維度上的角度。定義三自由度直升機的俯仰角(Pitch)為 α ,橫滾角(Elevation)為 θ ,偏航角(Travel)為?,也稱為旋轉(zhuǎn)角。安裝在基座中的集電環(huán)保證了直升機本體和控制臺之間的信號傳送不受直升機轉(zhuǎn)動的影響。三自由度直升機實驗平臺的控制目標(biāo)是俯仰角度,旋轉(zhuǎn)角度的跟蹤控制,同時控制橫滾角在一定的范圍內(nèi)變動。取俯仰軸水平時α=π/2rad,滾動軸水平時θ=0rad,旋轉(zhuǎn)角初始位置?=0rad。本文要求達(dá)到的控制指標(biāo)是位置跟蹤誤差要小。俯仰角控制在機械結(jié)構(gòu)允許的最小角度和最大角度之間[0.262,1.134]rad,控制誤差要求小于0.01rad。橫滾角在實際的控制中要求動態(tài)響應(yīng)時角度在正負(fù)0.13rad內(nèi),即是正負(fù)15°。旋轉(zhuǎn)軸可以在全局范圍內(nèi)達(dá)到任意位置,要求控制位置誤差小于0.045rad(小于5°)。
圖1 三自由度直升機示意圖
俯仰運動是靠前向電機和后向電機驅(qū)動兩個螺旋槳產(chǎn)生的升力和系統(tǒng)的重力在俯仰機架上產(chǎn)生的合力矩來驅(qū)動的。前向電機的電壓輸入Vf,后向電機的輸入Vb。電機驅(qū)動螺旋槳產(chǎn)生的升力近似和電機的輸入電壓成正比例,Kf為螺旋槳產(chǎn)生的升力和輸入電壓的比值。則單個螺旋槳的輸入電壓V和輸出升力F之間的關(guān)系:
俯仰軸的轉(zhuǎn)動慣量是Je,直升機本體到俯仰軸支點距離La,前向、后向電機的輸入電壓分別為Vf,Vb,俯仰軸自重產(chǎn)生的關(guān)于俯仰軸支點的力矩是Fgsinα。則俯仰軸的動力學(xué)方程如下:
前向電機和后向電機的驅(qū)動力不相等時,作用在滾動軸上的合力矩不為零,此時滾動軸被驅(qū)動。滾動軸轉(zhuǎn)動慣量為Jp,電機到轉(zhuǎn)軸之間的距離為Lh,直升機的升力是垂直于滾動軸的。則滾動軸動力學(xué)方程如下:
直升機的旋轉(zhuǎn)運動是由于在直升機產(chǎn)生俯仰角后在水平面產(chǎn)生了相對于旋轉(zhuǎn)軸的力矩,此力矩使直升機在水平面轉(zhuǎn)動。直升機旋轉(zhuǎn)軸轉(zhuǎn)動慣量Jt=Je,旋轉(zhuǎn)平面上的受力是Kf(Vf+Vb)sinθ,受力點到旋轉(zhuǎn)軸距離La,力的方向與旋轉(zhuǎn)軸之間的夾角為α。則旋轉(zhuǎn)軸的動力學(xué)方程如下:
在直升機的實際控制中首先是控制俯仰角穩(wěn)定,再次控制旋轉(zhuǎn)角。這樣在控制旋轉(zhuǎn)角時方程(2)是穩(wěn)定的,有如下方程:
把式(5)代入式(4)可得:
綜上所述,由式(1)~(6)三自由度直升機的數(shù)學(xué)模型如下:
表1 系統(tǒng)參數(shù)
由式(7)可以看出三自由度直升機系統(tǒng)是一個多輸入多輸出,強耦合,非線性的系統(tǒng)。對上述系統(tǒng)直接設(shè)計控制器是十分困難的。通常的做法是在式(7)的基礎(chǔ)上進行近似處理,使得系統(tǒng)用線性系統(tǒng)來近似,再利用線性系統(tǒng)設(shè)計的相關(guān)理論進行控制器設(shè)計,這樣做的好處是簡化了設(shè)計控制器的過程,缺點是在線性化過程中往往忽略了在系統(tǒng)動態(tài)響應(yīng)過程中起重要作用的非線性部分,在強耦合系統(tǒng)中這樣處理往往會難以解耦??梢钥闯?,當(dāng)俯仰角控制時,俯仰軸上的重力對俯仰軸支點產(chǎn)生的力矩是隨著俯仰角度的變化而變化的;當(dāng)機體繞軸做橫滾運動時,機體在俯仰軸上產(chǎn)生的俯仰動力力矩會隨著橫滾角度的變化而變化,這樣會對俯仰軸的位置穩(wěn)定帶來干擾。因此本文使用的PID神經(jīng)網(wǎng)絡(luò)多變量控制方法可以對三自由度直升機的俯仰軸和滾動軸起到很好的解耦作用,同時俯仰軸可以達(dá)到滿意的跟蹤效果。在仿真和實驗中可以得到滿意的控制效果。
PID神經(jīng)網(wǎng)絡(luò)多變量控制可以對多變量強耦合的非線性系統(tǒng)進行有效的控制,PID神經(jīng)網(wǎng)絡(luò)多變量控制是以單層的PID神經(jīng)網(wǎng)絡(luò)控制為基礎(chǔ)的。單層的 PID 神經(jīng)網(wǎng)絡(luò)控制器[6]NNC(Neural Network Controller)可以對SISO控制對象進行控制,且不需要對建模后的復(fù)雜數(shù)學(xué)模型進行精確的計算,也不需要對控制對象進行辨識就可以對系統(tǒng)進行有效的控制,圖2是PID單變量神經(jīng)網(wǎng)絡(luò)控制原理。由于PID神經(jīng)網(wǎng)絡(luò)控制器的參數(shù)是需要學(xué)習(xí)來確定的,所以必須在數(shù)學(xué)模型的基礎(chǔ)上進行仿真,仿真過程是對PID神經(jīng)網(wǎng)絡(luò)中的權(quán)值矩陣進行初始的學(xué)習(xí)確定,學(xué)習(xí)完成的控制器才可以在實際的控制對象中使用。單層的PID神經(jīng)網(wǎng)絡(luò)控制器是PID神經(jīng)網(wǎng)絡(luò)多變量控制的基礎(chǔ)[7]。下面是單層PID神經(jīng)網(wǎng)絡(luò)控制的原理如圖PID單變量控制原理。其中r1是控制指令的給定,r2是目標(biāo)控制變量的反饋。
圖2 PID單變量控制原理
PID神經(jīng)網(wǎng)絡(luò)多變量控制的控制對象P是具有n個輸入和n個輸出且內(nèi)部具有強耦合的n變量的非線性系統(tǒng),圖3是PID多變量神經(jīng)網(wǎng)絡(luò)控制原理。這樣系統(tǒng)在設(shè)計控制器會面臨系統(tǒng)解耦的問題。多變量的PID神經(jīng)網(wǎng)絡(luò)控制方法可以利用多個神經(jīng)網(wǎng)絡(luò)之間的輸出層之間的耦合實現(xiàn)控制率的解耦。已知控制器NNC由n個PID神經(jīng)子網(wǎng)絡(luò)組成,神經(jīng)子網(wǎng)絡(luò)的輸入層至隱含層是各自獨立的;隱含層至輸出之間不獨立,相互有連接權(quán),各個子網(wǎng)絡(luò)的隱含層中的三個神經(jīng)元分別為比例(P),積分(I),微分(D)單元。這樣,一個n輸入和n輸出的多變量耦合非線性系統(tǒng)的控制器NNC可以表示成 N2n,3n,n。
圖3PIDNNC
本文使用的是兩個神經(jīng)網(wǎng)絡(luò)構(gòu)成的PID神經(jīng)網(wǎng)絡(luò)多變量控制器的控制算法,即是三自由度直升機的高度軸和俯仰軸的角度控制器。
1)控制器輸入層神經(jīng)元的輸入和輸出
輸入層神經(jīng)元的輸入與輸出相等:R=[r1,y1,r2,y2]=[r11,r12,r21,r22]式中,r1是高度軸跟蹤指令,y1是高度軸的輸出;r2是俯仰軸跟蹤指令,y2是俯仰軸的輸出;R是控制器的輸入。
2)隱含層神經(jīng)元的輸入和輸出
神經(jīng)元的隱含層之間的信息流是沒有耦合的,所以每一個神經(jīng)元的隱含層權(quán)值矩陣單獨計算。第s個子網(wǎng)絡(luò)隱含層第i個節(jié)點的輸入為
其中1Ws是第s個子網(wǎng)絡(luò)輸入層到隱含層的權(quán)值矩陣,3×2的實數(shù)矩陣,1wsij是1Ws中的元素,是第s個子網(wǎng)絡(luò)輸入層第j個節(jié)點至隱含層第i個節(jié)點的權(quán)值。
隱含層的輸出是xsi(k)輸入經(jīng)過非線性調(diào)節(jié)器計算輸出,非線性PID調(diào)節(jié)器的輸出計算如下:
(1)比例環(huán)節(jié):
(2)積分環(huán)節(jié):
(3)微分環(huán)節(jié):
第s個神經(jīng)元隱含層的輸出為:qs=[qs1,qs2,qs3]T。
3)輸出層神經(jīng)元的輸入和輸出
輸出層神經(jīng)元的輸入是各個神經(jīng)元的輸出的加權(quán)和。輸出層第h節(jié)點的輸入
PID神經(jīng)網(wǎng)絡(luò)控制器與多變量被控對象一起作為廣義網(wǎng)絡(luò),采用反向傳播(BP)學(xué)習(xí)算法對隱含層和輸出層的權(quán)值矩陣進行調(diào)整,使得控制對象的輸出和控制給定的誤差二范數(shù)準(zhǔn)則指標(biāo)在給定的限度內(nèi)。
三自由度的高度軸和俯仰軸是耦合的、非線性的。采用兩個PID神經(jīng)元和控制對象組成的廣義網(wǎng)絡(luò)在實行跟蹤控制。準(zhǔn)則函數(shù):
根據(jù)BP網(wǎng)絡(luò)的調(diào)整算法可分為兩個部分:輸出層權(quán)值學(xué)習(xí)調(diào)整;隱含層權(quán)值學(xué)習(xí)調(diào)整。
輸出層權(quán)值調(diào)整算法:
可以推導(dǎo)出輸出層梯度:
輸入層至隱含層權(quán)值調(diào)整算法為
可以推導(dǎo)出輸出層梯度:
此控制器是穩(wěn)定的,可以參考文獻[8],至此設(shè)計了三自由度直升機的兩個自由度通道的控制器。
旋轉(zhuǎn)軸位置跟蹤設(shè)計成PID控制器設(shè)計,可以把式(6)右端橫滾角θ看成式(6)的輸入,則簡化后的表達(dá)式 Jt??=Fgθ ,進行拉普拉斯變換后
首先加入PD控制器,定義旋轉(zhuǎn)角誤差e=?c-? ,則輸入 uβ=Kke+Kde?,Kk為比例系數(shù),Kd為微分系數(shù)。閉環(huán)傳遞函數(shù):
按照二階系統(tǒng)響應(yīng)選取阻尼比ξ=0.707設(shè)計系統(tǒng)PD控制器參數(shù)。再加入積分環(huán)節(jié),實現(xiàn)旋轉(zhuǎn)角的無靜差控制。通過計算和調(diào)試選取的控制器為:Kk=0.55,Kd=1.66,Ki=1.11。
仿真和實驗均是在Matlab/Simulink環(huán)境下實現(xiàn)。其中仿真是在Simulink的normal模式仿真環(huán)境下實現(xiàn)的。實驗是通過Matlab/Simulink的實時工具箱RTW(Real-Time Workshop)實現(xiàn)實時控制[9]。在Matlab中的Simulink中進行仿真實驗,確定以上兩輸入兩輸出多變量PID神經(jīng)網(wǎng)絡(luò)的隱含層,輸出層和學(xué)習(xí)調(diào)整速率h的值,以便在控制對象使用。仿真程序有兩部分組成:PID神經(jīng)網(wǎng)絡(luò)控制程序;控制對象的非線性強耦合數(shù)學(xué)模型。實現(xiàn)方式是利用Matlab中強大的S函數(shù)實現(xiàn)。每個采樣時間采用Runge-Kutta迭代算法求解控制對象的微分方程。實驗中采用“ode45”積分求解。仿真學(xué)習(xí)過程分為兩個部分:在滾動軸平衡條件下按照正弦指令訓(xùn)練俯仰軸通道PID神經(jīng)網(wǎng)絡(luò)權(quán)值參數(shù);在俯仰軸水平條件下按照正弦指令訓(xùn)練滾動軸通道PID神經(jīng)網(wǎng)絡(luò)權(quán)值參數(shù)。仿真時分別給定俯仰軸和滾動軸進行仿真,給定的指令信號分別為[10]:高度 軸 y1=sint,y2=0;俯 仰 軸 y1=0,y2=0.1sint。仿真中兩個神經(jīng)元的隱含層和輸出層的權(quán)值矩陣取值按隨機賦予(-1,1)之間的實數(shù)。經(jīng)過多次仿真調(diào)試,隱含層的學(xué)習(xí)速度ηshi統(tǒng)一取值0.2,輸出層權(quán)值矩陣的學(xué)習(xí)速度ηsij統(tǒng)一取0.05。學(xué)習(xí)目標(biāo)取ε=0.01。
圖4 仿真程序圖
通過仿真調(diào)試得到的結(jié)果如下:
俯仰軸和橫滾軸仿真學(xué)習(xí)訓(xùn)練過程如圖5所示。
圖5 俯仰軸和橫滾軸仿真訓(xùn)練
從仿真結(jié)果可以看出,單獨進行俯仰軸參數(shù)仿真學(xué)習(xí)時俯仰軸進行俯仰角度正弦指令跟蹤比較迅速。在4s之前,俯仰角迅速調(diào)整,滾動軸在比較小的范圍內(nèi)抖動,但是不影響飛機本體的平衡性;在4s以后俯仰角迅速跟蹤俯仰角正弦指令,橫滾角的微小滾動還在持續(xù),飛機的平穩(wěn)性依舊良好。
圖6 仿真訓(xùn)練誤差
PID神經(jīng)網(wǎng)絡(luò)多變量控制在Matlab中的學(xué)習(xí)過程誤差見圖誤差圖,從中可以看出系統(tǒng)的綜合誤差在5s之前在迅速的調(diào)整。在5s以后誤差ε≤0.01。通過仿真確定了隱含層和輸出層的權(quán)值矩陣參數(shù),使用得到的權(quán)值參數(shù)進行俯仰軸階躍響應(yīng)的仿真實驗,結(jié)果如圖7所示。
圖7 俯仰軸仿真
從圖7俯仰軸仿真仿真的結(jié)果中可以看到,俯仰軸的階躍響應(yīng)迅速,系統(tǒng)的調(diào)節(jié)時間為2.1s,超調(diào)量較大接近60%,系統(tǒng)的穩(wěn)態(tài)誤差幾乎為0,伴隨著微小抖動。滾動軸有微小抖動,抖動范圍自由±0.05rad。仿真的階躍響應(yīng)控制品質(zhì)基本達(dá)到要求。
由于控制系統(tǒng)使用的控制程序是在Simulink中進行搭建的,使用S函數(shù)編寫的控制器程序可以直接地移植到實時的控制程序中。在系統(tǒng)控制中受到客觀的條件限制 5π/18<α<2π/3,-π/6<?<π/6。直升機靜置狀態(tài)下的俯仰軸α=0.26rad,滾動軸θ=0rad。實時控制系統(tǒng)先控制俯仰角穩(wěn)定,再給定旋轉(zhuǎn)角1.5rad圖8是實際的傳統(tǒng)PID控制曲線。
圖8 傳統(tǒng)PID控制結(jié)果
從表2傳統(tǒng)PID控制指標(biāo)中可以明顯的看到俯仰角跟蹤過程較慢,超調(diào)小,調(diào)節(jié)時間越14s,無靜態(tài)誤差。但是在旋轉(zhuǎn)角給定后,橫滾角有較大的低頭現(xiàn)象,在的抖動范圍在±0.6rad(約±35°)。在橫滾角抖動的過程中極大的影響了俯仰角的位置,造成俯仰角出現(xiàn)了約-0.2rad(約-12°)的減小。綜合可以看出:使用傳統(tǒng)PID控制方法忽略了橫滾角變化時直升機產(chǎn)生了俯仰角方向力矩變化,這種非線性的力矩變化對俯仰角影響很大;俯仰角單獨的控制時,橫滾角的抖動非常大達(dá)到了正負(fù)三十五度。這樣的大抖動極大的降低了控制品質(zhì)。旋轉(zhuǎn)軸的調(diào)節(jié)時間15s,超調(diào)較小。本文提出了PID神經(jīng)網(wǎng)絡(luò)多變量控制可以解決這個問題。
表2 傳統(tǒng)PID控制指標(biāo)
從圖9 PID神經(jīng)網(wǎng)絡(luò)控制結(jié)果和表格3PID神經(jīng)網(wǎng)絡(luò)控制指標(biāo)中可以明顯的看到俯仰角跟蹤過程迅速,上升時間3s,超調(diào)位0,調(diào)節(jié)時間越35s,無靜態(tài)誤差??梢钥闯鱿啾扔趥鹘y(tǒng)的PID控制方法,PID神經(jīng)網(wǎng)絡(luò)控制的俯仰軸響應(yīng)達(dá)到了更好的控制指標(biāo)。當(dāng)俯仰角給定后,旋轉(zhuǎn)角給定1.5rad時,俯仰角沒有出現(xiàn)低頭現(xiàn)象,同時橫滾角的變化較小在[-0.2,0.2]rad之間,滿足了橫滾角的控制要求,但是這樣的控制方法保守,使得旋轉(zhuǎn)角的響應(yīng)速度變慢,超調(diào)增加。
圖9 PID神經(jīng)網(wǎng)絡(luò)控制
表3 PID神經(jīng)網(wǎng)絡(luò)控制指標(biāo)
根據(jù)仿真和實驗結(jié)果,可以得出本文使用的PID神經(jīng)網(wǎng)絡(luò)控制方法在三自由度直升機模型上是適用的,并且取得了較好的效果。解決了在控制旋轉(zhuǎn)角時由耦合造成俯仰角低頭的現(xiàn)象。最終俯仰角動態(tài)響應(yīng)迅速,跟蹤準(zhǔn)確;旋轉(zhuǎn)角跟蹤準(zhǔn)確,但響應(yīng)較慢。