顧明琨, 鐘小勇
(江西理工大學(xué)理學(xué)院, 贛州 341000)
四旋翼飛行器是一種具有6個(gè)自由度可垂直起降的旋翼無人機(jī),因其機(jī)動(dòng)靈活、操作簡單、能自由懸停等優(yōu)點(diǎn)被廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、軍事等各個(gè)領(lǐng)域[1-2]。四旋翼飛行器具有高度非線性、欠驅(qū)動(dòng)以及強(qiáng)耦合的特性,容易受到各種因素干擾,至今四旋翼控制器的研究設(shè)計(jì)依然面臨許多問題。
中外眾多研究機(jī)構(gòu)和大學(xué)對(duì)無人機(jī)進(jìn)行了深入研究,設(shè)計(jì)出了很多控制方法。其中,最為經(jīng)典的方法是基于牛頓-歐拉定律建立四旋翼六自由度剛體運(yùn)動(dòng)模型,使用比例積分微分(proportion integral differential,PID)控制器來進(jìn)行控制。由于PID控制器結(jié)構(gòu)簡單,在無擾動(dòng)情況下可以實(shí)現(xiàn)無靜差的特性,在控制精度要求不高的場合得到了廣泛應(yīng)用。如文獻(xiàn)[3]設(shè)計(jì)了級(jí)聯(lián)雙閉環(huán)PID控制器,在小速度、小角度的變化下 實(shí)現(xiàn)了較為精準(zhǔn)的定點(diǎn)懸停和軌跡跟蹤,但在有外部干擾或需要更高控制精度的場合時(shí),PID控制器的適應(yīng)性較差,此時(shí)采用自抗擾(active disturbance rejection control,ADRC)控制器能取得更好的效果。如文獻(xiàn)[4]利用自抗擾控制器的解耦特性和抗干擾能力,通過延遲補(bǔ)償擴(kuò)張觀測器和改進(jìn)非線性狀態(tài)誤差反饋,提高了系統(tǒng)的抗干擾性能,但同時(shí)也導(dǎo)致了控制參數(shù)過多,不便于實(shí)際工程應(yīng)用。文獻(xiàn)[5]雖然在ADRC控制原理及設(shè)計(jì)方法的基礎(chǔ)上,通過線性簡化的方式減少了控制器參數(shù),并通過人工整定,獲得了較好的控制性能,但由于在內(nèi)外回路控制中,參數(shù)之間并不是相互獨(dú)立的關(guān)系,調(diào)節(jié)其中一個(gè)參數(shù)也會(huì)影響其他參數(shù)的控制作用,也就造成了人工整定參數(shù)精確度低、效率差的缺點(diǎn)。因此許多學(xué)者選擇運(yùn)用智能算法,如粒子群算法(particle swarm optimization,PSO)[6]、人工蜂群算法(artificial bee colony,ABC)[7]等進(jìn)行控制器的參數(shù)整定。文獻(xiàn)[8]采用人工蜂群算法優(yōu)化控制器參數(shù),提高了參數(shù)整定的效率和精度。文獻(xiàn)[9]將人工整定與算法整定相結(jié)合,根據(jù)控制精度確定部分參數(shù),對(duì)于與受控對(duì)象有關(guān)的參數(shù)使用人工蜂群整定,減小了參數(shù)整定難度,但其采用的標(biāo)準(zhǔn)的人工蜂群算法也存在著易陷入局部最優(yōu),后期收斂速度慢的缺陷。
為進(jìn)一步提高控制器性能,克服算法收斂速度慢以及局部收斂的問題,現(xiàn)利用改進(jìn)人工蜂群算法(adaptive artificial bee colony,AABC)對(duì)ADRC控制器進(jìn)行參數(shù)整定,將一種固定的搜索策略拓展為多種,并比較每種策略產(chǎn)生更優(yōu)解的能力。當(dāng)某種策略產(chǎn)生的更優(yōu)解越多,該策略被選中的概率就會(huì)增加。這種方法使得原算法中的隨機(jī)開發(fā)具有了一定的方向性,更容易快速地找到更優(yōu)解,避免因算法隨機(jī)性而導(dǎo)致的精度下降問題,并在四旋翼無人機(jī)懸停仿真實(shí)驗(yàn)中加入風(fēng)干擾測試算法的整定性能,驗(yàn)證設(shè)計(jì)的可行性和工程應(yīng)用價(jià)值。
四旋翼飛行器的動(dòng)力模型是飛行控制系統(tǒng)設(shè)計(jì)的基礎(chǔ)。假設(shè)四旋翼飛行器所在的地理坐標(biāo)為ζ=[x,y,z],歐拉角為Θ=[φ,θ,ψ],角速度為ω=[p,q,r],四旋翼飛行器動(dòng)力學(xué)模型[10]為
(1)
式(1)中:x、y、z為地面坐標(biāo)系中無人機(jī)的坐標(biāo)位置;φ、θ、ψ分別為橫滾角、俯仰角和偏航角;p、q、r為三軸的角速度;JTP為旋翼的轉(zhuǎn)動(dòng)慣量;Ii(i=x,y,z)分別為三個(gè)軸上的轉(zhuǎn)動(dòng)慣量;m為飛行器的質(zhì)量;g為重力加速度;Ω為機(jī)體轉(zhuǎn)速;U1為垂直運(yùn)動(dòng)力矩;U2、U3、U4分別代表橫滾、俯仰和偏航力矩,它與4個(gè)電機(jī)的轉(zhuǎn)速關(guān)系如下:
(2)
式(2)中:Fi(i=1,2,3,4)為對(duì)應(yīng)旋翼的升力;Ωi(i=1,2,3,4)為4個(gè)電機(jī)的轉(zhuǎn)速;b為升力系數(shù);d為阻力矩系數(shù);l為旋翼中心到機(jī)體坐標(biāo)系原點(diǎn)的距離。
為了更加貼近無人機(jī)在各種干擾下的實(shí)際飛行情況,在四旋翼仿真模型中加入干擾風(fēng)場。假設(shè)風(fēng)從側(cè)下方吹來,無人機(jī)的受力情況如圖1所示。
圖1 風(fēng)干擾時(shí)無人機(jī)的受力分析Fig.1 Force analysis of unmanned aerial vehicle under wind disturbance
無人機(jī)由于受到風(fēng)的推力,旋翼2產(chǎn)生的升力F2變成了F′2,造成了四旋翼無人機(jī)控制的振蕩。為了準(zhǔn)確描述風(fēng)的隨機(jī)性和間歇性,建立以下4種風(fēng)構(gòu)成的風(fēng)速模型[11]:基本風(fēng)vb、陣風(fēng)vg、隨機(jī)風(fēng)vr和漸進(jìn)風(fēng)vn。對(duì)上面4種風(fēng)進(jìn)行組合就可以得到風(fēng)速模型V:
V=vb+vg+vr+vn
(3)
基本風(fēng)可看作是不隨時(shí)間變化的常量:
vb=k
(4)
式(4)中:k為常數(shù)。
陣風(fēng)模型體現(xiàn)了風(fēng)的間歇性,可表示為
(5)
式(5)中:Vgmax為陣風(fēng)風(fēng)速的最大值;t為當(dāng)前時(shí)間;T1為陣風(fēng)開始時(shí)間;T2為陣風(fēng)結(jié)束時(shí)間;Tg為陣風(fēng)周期。
隨機(jī)風(fēng)模型反映了風(fēng)的隨機(jī)性,可表示為
vr=VrmaxRam(-1,1)cos(ω+φr)
(6)
式(6)中:Vrmax為隨機(jī)風(fēng)的最大值;Ram(-1,1)為-1~1的隨機(jī)數(shù);ω取值為[0.5π,2π];φr為[0,2π]的隨機(jī)量。
漸變風(fēng)反映風(fēng)的漸變性,可表示為
(7)
式(7)中:Vnmax為漸進(jìn)風(fēng)風(fēng)速最大值;T′1為漸變風(fēng)開始時(shí)間;T′2漸變風(fēng)結(jié)束時(shí)間;T為漸變風(fēng)持續(xù)時(shí)間。
根據(jù)貝茨理論[12],當(dāng)空氣作用在旋翼上時(shí),可以將旋翼看作是一個(gè)圓盤,圓盤受到的力為
Ff=2ρAdV2a(1-a)
(8)
式(8)中:ρ為空氣密度;Ad為圓盤的截面積;V為干擾風(fēng)的風(fēng)速;α為軸流誘導(dǎo)因數(shù),取值為[0,0.5]。
線性自抗擾控制器的結(jié)構(gòu)是由ADRC自抗擾控制器演變而來的。線性自抗擾控制器將原有的擴(kuò)張狀態(tài)觀測器和非線性狀態(tài)誤差反饋兩部分線性化,利用帶寬來確定線性擴(kuò)張觀測器(linear extended state observer, LESO)和線性狀態(tài)誤差反饋(linear state error feedback, LSEF),并去掉微分跟蹤器(tracking differentiator, TD),使ADRC的結(jié)構(gòu)變得更加簡單,減少了需要整定的參數(shù)[13]。因此二階線性ADRC的控制器結(jié)構(gòu)原理圖如圖2所示。
圖2 二階線性自抗擾控制器結(jié)構(gòu)Fig.2 The structure of second-order linear ADRC
其中,LESO實(shí)現(xiàn)形式為
(9)
式(9)中:β1、β2和β3為線性擴(kuò)張觀測器LESO的增益。
假設(shè)ω0為觀測器帶寬,β與ω0的數(shù)學(xué)關(guān)系為
sn+1+β1sn+…+βn+1=(s+ω0)n+1
(10)
LSEF實(shí)現(xiàn)形式為
u0=kp(ν0-z1)-kdz2
(11)
式(11)中:kp與kd為待定系數(shù)。
同樣設(shè)ωc為控制器帶寬,它們與控制器寬度ωc的數(shù)學(xué)關(guān)系為
sn+1+k1sn+…+kn+1=(s+ωc)n+1
(12)
(13)
與非線性環(huán)節(jié)相比,線性環(huán)節(jié)需要整定的參數(shù)明顯減少,只有ω0、ωc和b0這3個(gè)分量,且ω0≈ 3ωc~5ωc,降低了整定難度。
人工蜂群算法[14]是一種模擬蜜蜂采蜜行為的算法,利用不同角色蜜蜂之間相互協(xié)作,使蜜蜂不斷趨向于蜂蜜豐富的蜜源。人工蜂群算法主要包含以下5個(gè)階段:種群初始化、雇傭蜂階段、跟隨蜂階段、偵查蜂階段和判斷終止條件[15]。
(1)種群初始化。設(shè)初始種群規(guī)模為2SN,變量總維數(shù)為D,其中雇傭蜂數(shù)量和觀察蜂數(shù)量都為種群規(guī)模的1/2,即SN。然后隨機(jī)初始化SN個(gè)蜜源(初始解):
xi,j=xmin,j+rand(0,1)(xmax,j-xmin,j)
(14)
式(14)中:i∈{1,2,…,SN};j∈{1,2,…,D};rand(0,1)為[0,1]范圍內(nèi)的隨機(jī)數(shù);xi,j為第xi個(gè)蜜源的第j個(gè)分量位置;xmax,j、xmin,j為搜索范圍的上、下限。
(2)雇傭蜂階段。在此階段,雇傭蜂會(huì)根據(jù)式(15)對(duì)蜜源xi,j進(jìn)行搜索更新,產(chǎn)生一個(gè)不同于原蜜源xi,j的新蜜源vi,j作為候選解,計(jì)算新蜜源vi,j的適應(yīng)度,并在兩者進(jìn)行貪婪選擇。
vi,j=xi,j+φi,j(xi,j-xr1,j)
(15)
式(15)中:φi,j為[0,1]之間的隨機(jī)數(shù);r1為隨機(jī)選擇的一個(gè)蜜源,且r1≠i。如果新蜜源vi,j的適應(yīng)度值好于舊蜜源xi,j,則用新蜜源vi,j的位置取代舊蜜源xi,j的位置,否則xi,j不變,仍為當(dāng)前蜜源位置。
(3)跟隨蜂階段。當(dāng)所有雇傭蜂完成對(duì)蜜源的更新操作后,雇傭蜂會(huì)把掌握的信息傳遞給觀察蜂,觀察蜂會(huì)根據(jù)雇傭蜂獲取的蜜源信息按照式(16)采用輪盤選擇法再次更新蜜源,蜜源被選中的概率由適應(yīng)度值來決定。
(16)
式(16)中:fiti為蜜源xi的適應(yīng)度值的大??;其計(jì)算公式為
(17)
式(17)中:abs為取絕對(duì)值;fi為目標(biāo)函數(shù)值,越小的目標(biāo)函數(shù)值越易被選中。當(dāng)蜜源被觀察蜂選中后,就會(huì)根據(jù)式(15)進(jìn)行搜索,同時(shí)產(chǎn)生新的鄰域解。根據(jù)貪婪選擇,適應(yīng)度值更優(yōu)一方將會(huì)被保留。
(4)偵查蜂階段。當(dāng)蜜源xi的采集次數(shù)達(dá)到了最大次數(shù)Limit后,適應(yīng)度值依然沒有得到改善,就認(rèn)為該蜜源已經(jīng)陷入了局部最優(yōu)解。則相關(guān)的雇傭蜂就會(huì)變?yōu)閭刹榉?,根?jù)式(14),產(chǎn)生一個(gè)新的食物源代替xi。
(5)判斷終止條件。判斷是否達(dá)到停止條件,是則輸出最優(yōu)蜜源位置,適應(yīng)度值和其他參數(shù),否則轉(zhuǎn)至雇傭蜂階段繼續(xù)運(yùn)行。
從對(duì)標(biāo)準(zhǔn)ABC算法的分析中可知,雇傭蜂負(fù)責(zé)探索未訪問點(diǎn),跟隨蜂負(fù)責(zé)開發(fā)訪問過的位置鄰域,尋找最優(yōu)點(diǎn)。對(duì)于進(jìn)化算法來說,探索和開發(fā)能力的平衡十分重要,而ABC算法擅長探索,開發(fā)能力較差。在ABC算法中,候選方案是通過式(15)產(chǎn)生的,這種生成方式不能保證生成的結(jié)果朝向更好方向,但如果能采用不同搜索策略,對(duì)表現(xiàn)好的搜索策略增加被選中概率,那么ABC算法的性能就可以得到顯著提高[16]。
故設(shè)計(jì)思路是在式(15)的基礎(chǔ)上,將一種搜索策略擴(kuò)展為5種,采用輪盤選擇方法,根據(jù)每種搜索策略的先驗(yàn)性能來更新被選中的概率。用s表示搜索策略的個(gè)數(shù),SRs記錄每種搜索策略的成功率為
(18)
式(18)中:SAs為每種策略得出更優(yōu)解的次數(shù);TA為所有策略得出更優(yōu)解的總次數(shù)。由此可以通過SRs算出每種策略被選中的概率Ps為
(19)
同時(shí)引入一個(gè)存儲(chǔ)長度ML,當(dāng)某個(gè)策略的選中次數(shù)達(dá)到存儲(chǔ)長度最大值之后,重置選擇概率。選用的5種搜索策略如表1所示。對(duì)于所有的搜索規(guī)則SRules,i為蜜源,j為變量維度的索引,i∈{1,2,…,SN},j∈{1,2,…,D}。r1和r2是隨機(jī)選擇的蜜源,r1,r2∈{1,2,…,SN}且r1≠r2≠i。gbest為全局最優(yōu)解,lbest為當(dāng)前種群中的最優(yōu)解,φ和ψ分別為[-1,1]和[0,1]的隨機(jī)數(shù)。
表1 搜索策略
ADRC的參數(shù)尋優(yōu),實(shí)質(zhì)上就是尋找一條超調(diào)量最小,達(dá)到穩(wěn)態(tài)時(shí)間最短,誤差積分最小的反饋曲線[17]。選取時(shí)間絕對(duì)偏差積分(integral time absolute error,ITAE)作為適應(yīng)度函數(shù),定義為
(20)
式(20)中:e(t)為控制系統(tǒng)穩(wěn)態(tài)誤差。
利用改進(jìn)人工蜂群算法整定ADRC控制器參數(shù)的流程圖如圖3所示。算法與四旋翼模型之間通過種群(ADRC控制器參數(shù))和種群對(duì)應(yīng)的適應(yīng)度值(控制系統(tǒng)的性能指標(biāo))相連接,將種群依次賦值給控制器參數(shù)b0、ω0和ωc,運(yùn)行四旋翼模型獲得仿真數(shù)據(jù),利用該組參數(shù)得到的數(shù)據(jù)計(jì)算出對(duì)應(yīng)的性能指標(biāo),并將該指標(biāo)作為算法中的適應(yīng)度值依次迭代,獲取適應(yīng)度最優(yōu)的控制器參數(shù)。
圖3 AABC優(yōu)化LADRC流程圖Fig.3 The flow chart for optimizing LADRC with AABC
改進(jìn)人工蜂群算法整定ADRC參數(shù)的步驟如下。
(1)初始化,設(shè)定算法的種群規(guī)模NP、維度參數(shù)D,最大迭代次數(shù)MAX_FES,最大采集次數(shù)Limit和概率重置次數(shù)ML。設(shè)置需要優(yōu)化的ADRC參數(shù)的上限Xmax和下限Xmin,隨機(jī)選擇搜索規(guī)則產(chǎn)生初始蜜源Xi。
(2)將蜜源Xi代入四旋翼模型輸出仿真數(shù)據(jù),計(jì)算出反饋曲線的適應(yīng)度值。
(3)隨機(jī)選擇表1中的搜索策略,產(chǎn)生新的蜜源Vi,將蜜源Vi代入四旋翼模型輸出仿真數(shù)據(jù),計(jì)算反饋曲線適應(yīng)度值。
(4)在Xi和Vi中進(jìn)行貪婪選擇,組成整體適應(yīng)度值更優(yōu)的蜜源Xi。并記錄被選中的Vi是來自哪個(gè)搜索策略和該策略被選中的次數(shù)和概率。
(5)根據(jù)式(16)和式(17)隨機(jī)選擇蜜源。并將選出的蜜源按照搜索策略的選擇概率進(jìn)行隨機(jī)更新。
(6)將更新后蜜源Ui,j與對(duì)應(yīng)位置Xi,j按照步驟(4)中的方式重新組合成下一代種群Xi,更新每種策略被選中的次數(shù)和概率,若次數(shù)大于ML,則將每種策略設(shè)置為相同概率,重新記錄。
(7)若有蜜源在Limit時(shí)間內(nèi)沒有更新,則根據(jù)式(14)重新生成。
(8)判斷是否達(dá)到最大迭代次數(shù)。若達(dá)到最大迭代次數(shù),則停止尋參,輸出最優(yōu)解。否則跳轉(zhuǎn)到步驟(2)。
為驗(yàn)證對(duì)本文所提算法的控制精度及實(shí)時(shí)性,以橫滾角為例,期望角度設(shè)定為30°,運(yùn)用MATLAB和Simulink進(jìn)行仿真。四旋翼仿真模型的具體參數(shù)如表2所示。
風(fēng)干擾參數(shù)模型如表3所示,并將此風(fēng)干擾模型應(yīng)用到四旋翼的旋翼2 (參見圖1中的升力F2)。
設(shè)置PSO粒子群規(guī)模為PS=40、維度參數(shù)D=3、位置區(qū)間為Xmin=[0 0 0]到Xmax=[4 100 30],速度區(qū)間V為位置區(qū)間的0.2倍,學(xué)習(xí)因子c1=c2=2,慣性權(quán)重ω從0.9線性遞減至0.4。
設(shè)置ABC算法和AABC算法的種群規(guī)模NP=40,維度參數(shù)D=3,位置區(qū)間為Xmin=[0 0 0]到Xmax=[4 100 30],最大采集次數(shù)Limit=10。同時(shí)設(shè)置AABC算法中的概率重置次數(shù)ML=10。
3種算法各自評(píng)價(jià)1 000次,即MAX_FES=1 000,循環(huán)迭代次數(shù)maxG=25,得到的優(yōu)化的ADRC 參數(shù)值如表4所示。
3種算法下適應(yīng)度隨迭代次數(shù)變化曲線如圖4所示。計(jì)算得出風(fēng)擾下的ADRC控制曲線,如圖5所示。由圖5可以看出,AABC算法計(jì)算出的參數(shù)調(diào)節(jié)時(shí)間最短,ABC算法其次,PSO算法的參數(shù)調(diào)節(jié)時(shí)間最長。在達(dá)到穩(wěn)態(tài)后,3種算法整定的參數(shù)抗干擾性能如圖6所示。
表2 四旋翼模型參數(shù)
表3 干擾風(fēng)模型參數(shù)
表4 橫滾通道LADRC參數(shù)
圖4 3種算法下適應(yīng)度隨迭代次數(shù)變化曲線Fig.4 Fitness curve with the iterations based on three algorithms
從圖6中可知,當(dāng)受到風(fēng)干擾導(dǎo)致當(dāng)前值小于或大于期望值30°時(shí),都是AABC算法得到的反饋曲線響應(yīng)速度最快,能更迅速的恢復(fù)到穩(wěn)態(tài)。
分析以上仿真結(jié)果,從圖4的適應(yīng)度迭代曲線來看,AABC算法的開發(fā)與探索能力強(qiáng),在迭代20次后依然可以跳出局部最優(yōu)解,防止了過早收斂,得到了最優(yōu)的適應(yīng)度值。結(jié)合圖5和圖6可以看出,系統(tǒng)在階躍響應(yīng)和風(fēng)干擾的輸入下,AABC算法的最優(yōu)解可以使控制器以最快的速度達(dá)到穩(wěn)定狀態(tài),并且對(duì)干擾有較強(qiáng)的抑制能力和反饋速度。
圖5 風(fēng)干擾下的ADRC控制曲線Fig.5 ADRC control curve under wind disturbance
將線性自抗擾控制器應(yīng)用在四旋翼控制系統(tǒng)中,并用Simulink對(duì)四旋翼飛行器進(jìn)行建模仿真。為了得到最優(yōu)的控制效果和解決人工整定參數(shù)困難的問題,提出改進(jìn)人工蜂群算法,并加入自適應(yīng)搜索策略,提高種群的多樣性和尋優(yōu)能力,有效克服了人工蜂群算法會(huì)陷入局部最優(yōu)解的缺點(diǎn)。通過對(duì)四旋翼飛行器姿態(tài)的控制仿真,證明了改進(jìn)人工蜂群算法的尋優(yōu)能力更強(qiáng),得到的控制參數(shù)具有更好的動(dòng)態(tài)特性和穩(wěn)態(tài)特性,對(duì)應(yīng)用于復(fù)雜的飛行環(huán)境有一定的參考價(jià)值。
圖6 風(fēng)干擾下的ADRC控制曲線放大圖Fig.6 Enlarged view of ADRC control curve under wind disturbance