申 海, 于長敏, 林雨奇
(沈陽師范大學(xué) 物理科學(xué)與技術(shù)學(xué)院, 沈陽 110034)
隨著無人機(jī)技術(shù)的蓬勃發(fā)展,單架無人機(jī)已經(jīng)不能滿足軍用及民用的需求。基于生物行為的研究涌現(xiàn)出眾多集群智能算法,由集群智能引發(fā)的無人機(jī)集群系統(tǒng)恰好可彌補(bǔ)該不足。無人機(jī)集群除了具有數(shù)量上的優(yōu)勢外,還具有成本低、靈活性好和魯棒性強(qiáng)等特點(diǎn)。目前,生物集群智能算法是無人機(jī)集群協(xié)同問題研究的新方法,此類方法在軍用及民用中具有廣泛應(yīng)用,因而受到了國內(nèi)外學(xué)者的廣泛關(guān)注[1-2]。
無人機(jī)集群協(xié)同飛行是無人機(jī)集群協(xié)同問題之一,要求多架無人機(jī)通過群體內(nèi)的協(xié)作,能夠?qū)崿F(xiàn)自主協(xié)同飛行。另外,由于飛行區(qū)域內(nèi)存在障礙物,還需要無人機(jī)集群躲避障礙物。因此,無人機(jī)集群協(xié)同飛行問題的研究應(yīng)包括協(xié)同飛行和協(xié)同避障2個(gè)子問題的研究。首先,本文介紹了集群智能及無人機(jī)集群的產(chǎn)生背景和目前研究情況;其次,介紹了可實(shí)現(xiàn)協(xié)同飛行的LFPSO(leader-follower-particle swarm optimization)算法,并進(jìn)行了仿真測試,驗(yàn)證了LFPSO算法可實(shí)現(xiàn)協(xié)同飛行,基于避障問題,設(shè)計(jì)了無人機(jī)協(xié)同避障算法;最后,將協(xié)同飛行LFPSO算法與協(xié)同避障算法相結(jié)合,形成了ALFPSO算法。仿真測試結(jié)果驗(yàn)證了此算法的正確性和魯棒性。
集群智能(swarm intelligence,SI)的研究,源于1959年法國生物學(xué)家PierrePaul Grasse的研究。他發(fā)現(xiàn)昆蟲之間存在著簡單的溝通,但憑借這種簡單溝通,生物群體能夠完成一些復(fù)雜的任務(wù)[3-4],執(zhí)行任務(wù)的效率也遠(yuǎn)遠(yuǎn)超過單個(gè)個(gè)體的效率。這種利用單個(gè)個(gè)體間簡單的溝通協(xié)作從而完成復(fù)雜任務(wù)的行為就是生物集群智能的雛形,顯示出生物群體的集體智慧行為。通過對昆蟲間集體智慧行為的研究逐漸衍生出許多集群智能算法,如粒子群算法、蜂群算法和狼群算法等[5-7]。
從生物集群智能的研究獲得靈感,無人機(jī)集群技術(shù)應(yīng)運(yùn)而生[8-10]。無人機(jī)技術(shù)向無人機(jī)集群技術(shù)的轉(zhuǎn)變,不僅是數(shù)量上的改變,更重要的是集群智能與無人機(jī)技術(shù)的結(jié)合。無人機(jī)與生物個(gè)體有許多共同點(diǎn),比如都是單一智能個(gè)體,且執(zhí)行任務(wù)的效率遠(yuǎn)不如群體帶來的優(yōu)勢。將集群智能引入到無人機(jī)技術(shù)中,能夠使無人機(jī)集群自主協(xié)同飛行,避免增加額外的地面操作和人工操作。因此,無人機(jī)集群成為現(xiàn)代戰(zhàn)爭的主要研究方向,可以以無人、自主和協(xié)同3個(gè)方面特征取得戰(zhàn)爭的優(yōu)勢[11]。
粒子群優(yōu)化算法(particle swarm optimization,PSO),也稱粒子群算法或鳥群覓食算法,是由Kennedy和Eberhart等[12]于1995年提出的一種生物啟發(fā)式算法。在粒子群算法中,粒子群中的每個(gè)粒子都可以看作鳥群中的鳥,且存在社會認(rèn)知和個(gè)體認(rèn)知,粒子尋找最優(yōu)解過程代表鳥群不斷覓食過程。在每次迭代過程中,粒子群里離食物源最近的粒子設(shè)定為全局最優(yōu)解,即社會認(rèn)知;每個(gè)粒子曾飛行的歷史最優(yōu)位置為個(gè)體認(rèn)知。每個(gè)迭代過程代表社會認(rèn)知的個(gè)體并不是固定的。粒子通過當(dāng)前位置、社會認(rèn)知和個(gè)體認(rèn)知的綜合決策后決定下一時(shí)刻的位置。粒子群算法是一種基于群體的隨機(jī)優(yōu)化算法,在解空間中較容易找到全局最優(yōu)解,因而被廣泛應(yīng)用。
無人機(jī)編隊(duì)是指無人機(jī)飛行過程中的隊(duì)伍形狀,此問題的研究源于無人機(jī)集群飛行中需要靈活地調(diào)整隊(duì)形以適應(yīng)不同任務(wù)不同環(huán)境的要求[13]。目前常用的無人機(jī)編隊(duì)方法有長機(jī)-僚機(jī)法、虛擬結(jié)構(gòu)法和行為法等。其中,長機(jī)-僚機(jī)可類比為大雁的飛行方式,由頭雁帶領(lǐng)其他大雁飛行。多架無人機(jī)飛行中,設(shè)置一架無人機(jī)為長機(jī),其余無人機(jī)為僚機(jī)[14]。長機(jī)可以理解為管理者,負(fù)責(zé)任務(wù)的統(tǒng)籌;僚機(jī)屬于附屬者,主要任務(wù)是完成管理者的任務(wù),或配合管理者來完成任務(wù)。長機(jī)根據(jù)目標(biāo)的識別情況或感知情況進(jìn)行飛行,僚機(jī)通過調(diào)整自身的速度和偏航角等信息實(shí)現(xiàn)跟隨狀態(tài),從而達(dá)到保持編隊(duì)隊(duì)形的目的。由于此編隊(duì)方法較為成熟,易于實(shí)現(xiàn),因而本文采用此種方法實(shí)現(xiàn)無人機(jī)集群飛行的隊(duì)形保持。
本文將長機(jī)-僚機(jī)編隊(duì)方法與PSO算法相結(jié)合,設(shè)計(jì)了可實(shí)現(xiàn)無人機(jī)集群協(xié)同飛行的算法,即LFPSO算法。在LFPSO算法中,設(shè)定每個(gè)粒子僅有社會認(rèn)知,沒有個(gè)體認(rèn)知。社會認(rèn)知代表全局最優(yōu)解,即長機(jī)-僚機(jī)編隊(duì)方法中的長機(jī)。長機(jī)和僚機(jī)均具有不同的位置信息和速度信息,長機(jī)運(yùn)動具有隨機(jī)性,僚機(jī)跟隨長機(jī)飛行。無人機(jī)協(xié)同飛行相對運(yùn)動如圖1所示。
圖1 無人機(jī)協(xié)同飛行相對運(yùn)動Fig.1 Relative motion of UAV cooperative flight
如圖1所示,長機(jī)A在坐標(biāo)系內(nèi)坐標(biāo)為(xA,yA),速度大小為vA,航向角為φA。飛行過程中,長機(jī)航向角φA隨機(jī)變化,長機(jī)位置坐標(biāo)不斷更新。僚機(jī)B在坐標(biāo)系內(nèi)坐標(biāo)為(xB,yB),速度為vB。長機(jī)運(yùn)動模型如式(1)所示。
(1)
僚機(jī)跟隨長機(jī)運(yùn)動,規(guī)定僚機(jī)B朝向長機(jī)A下一位置運(yùn)動,引入僚機(jī)位置分量ratio,如式(2)所示。
(2)
式中:(xB,yB)為僚機(jī)B當(dāng)前時(shí)刻位置坐標(biāo);vB為僚機(jī)B的速度。
通過僚機(jī)B位置分量計(jì)算其下一時(shí)刻位置,如式(3)所示。將式(2)代入式(3),得到式(4)所示的僚機(jī)B運(yùn)動數(shù)學(xué)模型。
設(shè)定飛行區(qū)域?yàn)?00×100,長機(jī)和僚機(jī)均在飛行區(qū)域內(nèi)進(jìn)行飛行,要求不能越過邊界或與邊界發(fā)生碰撞。長機(jī)和僚機(jī)開始下一時(shí)刻飛行之前,通過計(jì)算當(dāng)前位置與限定飛行區(qū)域邊界之間的距離是否小于速度×單位時(shí)間進(jìn)行判斷。長機(jī)如即將越過邊界或與邊界碰撞,則長機(jī)速度調(diào)整為原來一半,并重復(fù)調(diào)整航向角,直至長機(jī)判斷出下一時(shí)刻不會越過邊界或與邊界不發(fā)生碰撞為止;如不能越過邊界或與邊界碰撞,則根據(jù)判斷后的最佳航向角完成下一時(shí)刻飛行。僚機(jī)計(jì)算與長機(jī)之間的位置分量ratio,通過ratio計(jì)算僚機(jī)下一時(shí)刻位置。僚機(jī)如不能越過邊界或與邊界碰撞,則完成下一時(shí)刻飛行;如即將越過邊界或與邊界碰撞,則在下一時(shí)刻暫停飛行,即保持當(dāng)前位置和速度不變。由于長機(jī)位置不斷變化,因而僚機(jī)預(yù)估的下一時(shí)刻位置也在不斷變化,直至判斷不能越過邊界或與邊界發(fā)生碰撞為止。LFPSO算法具體流程如圖2所示。
圖2 無人機(jī)協(xié)同飛行算法流程圖Fig.2 Flow chart of UAV cooperative flight algorithm
為驗(yàn)證本文提出的無人機(jī)集群協(xié)同飛行算法的有效性,本文選取1架長機(jī)和4架僚機(jī)進(jìn)行仿真測試,測試結(jié)果如圖3所示。本文主要采用的計(jì)算機(jī)硬件CPU為AMD Ryzen 5 5600G,主內(nèi)存為16GB,操作系統(tǒng)為Windows 10,利用Matlab 2019軟件編寫程序并進(jìn)行測試。飛行區(qū)域限定為100×100,長機(jī)和僚機(jī)位置均隨機(jī)產(chǎn)生。從圖3中可看出,本文設(shè)計(jì)的LFPSO算法能夠滿足在各個(gè)無人機(jī)初始位置不同的前提下,僚機(jī)不斷向長機(jī)方向進(jìn)行飛行,最終完成與長機(jī)的匯集,同時(shí)也避免了在設(shè)定的飛行領(lǐng)域發(fā)生飛出范圍的情況。
圖3 1架長機(jī)與4架僚機(jī)協(xié)同飛行測試圖Fig.3 Cooperative flight test of 1 leader and 4 followers
無人機(jī)避障行為是指無人機(jī)在移動過程中感知到預(yù)定路線上所存在的障礙物時(shí),為防止碰撞,通過算法計(jì)算避障路線,實(shí)時(shí)更新路徑,從而成功避開障礙物的一種行為模式[15]。無人機(jī)協(xié)同避障是指多個(gè)無人機(jī)飛行過程中,除了需要避開已有障礙物外,為防止無人機(jī)之間發(fā)生碰撞,還需要無人機(jī)之間進(jìn)行避障。因此,無人機(jī)協(xié)同避障包括2個(gè)方面的問題,一方面是飛行路徑上的障礙物避障;另一方面是無人機(jī)之間進(jìn)行避障。本文采用人工勢場法實(shí)現(xiàn)上述2個(gè)方面的避障。
人工勢場法(artificial potential field)是無人機(jī)避障研究中最為常見的一種方法,是由Khatib[16]于1986年提出的。此方法有著簡單實(shí)用、與工程結(jié)合緊密和實(shí)踐性強(qiáng)等諸多優(yōu)點(diǎn)。算法將物體運(yùn)動區(qū)域視為勢力場,勢力場包括引力勢場和斥力勢場。引力勢場主要與距離成正比,距離越大,物體之間所受引力勢場的勢能值則越大;距離越小,物體之間所受引力勢場的勢能值則越小。引力勢場函數(shù)及相應(yīng)的負(fù)梯度函數(shù)如式(5)和式(6)所示。
式中:Fatt(X)為引力場負(fù)梯度;η為正比例增益系數(shù);ρ(q,qg)表示物體之間的距離,距離值為|q-qg|。
斥力勢場的勢能值大小同樣與物體間距離有關(guān), 在安全閾值ρ0范圍外, 勢能值為0; 反之, 勢能值與距離呈反比例函數(shù)。 斥力勢場的勢能值勢場函數(shù)及相應(yīng)的斥力場負(fù)梯度函數(shù)如式(7)和式(8)所示。
式中:Frep(X)為斥力場負(fù)梯度;k為負(fù)比例增益系數(shù);ρ0為常數(shù),表示物體之間的安全閾值;ρ(q,q0)表示物體當(dāng)前位置與安全閾值間的距離,距離值為|q-q0|。
本文基于人工勢場法,設(shè)計(jì)了無人機(jī)集群協(xié)同避障算法。 設(shè)定無人機(jī)飛行區(qū)域?yàn)?0,0)至(100,100),飛行區(qū)域內(nèi)的障礙物周圍及每個(gè)無人機(jī)周圍都存在引力場和斥力場。 設(shè)定(100,0)為長機(jī)初始位置,(0,100)為長機(jī)目標(biāo)位置。僚機(jī)初始位置在飛行區(qū)域內(nèi)隨機(jī)產(chǎn)生,飛行目標(biāo)區(qū)域?yàn)閤∈[0,10],y∈[90,100]組成的方形區(qū)域。 長機(jī)從初始位置出發(fā),在目標(biāo)點(diǎn)的引力勢場作用下向目標(biāo)位置飛行, 僚機(jī)則通過長機(jī)引力場作用向長機(jī)方向運(yùn)動。 飛行過程中,長機(jī)和僚機(jī)均受障礙物斥力作用, 從而躲避障礙物。為保障無人機(jī)之間不碰撞,無人機(jī)之間也存在斥力場。 無人機(jī)在勢力場的作用下飛行示意圖如圖4所示。
圖4 無人機(jī)在力的作用下飛行示意圖Fig.4 UAV flight diagram under the action of force
長機(jī)所受的合力為受目標(biāo)點(diǎn)的引力,由僚機(jī)間的斥力及與障礙物間的斥力組成,如式(9)所示。 僚機(jī)所受的合力為受長機(jī)的引力和斥力, 由其他僚機(jī)間的斥力及與障礙物間的斥力組成, 如式(10)所示。
式中:FZ為長機(jī)所受的合力;Fatt(G)為長機(jī)受目標(biāo)點(diǎn)的引力;Frep(L)為長機(jī)與僚機(jī)間的斥力;Frep(obs)表示長機(jī)與障礙物間的斥力;FL為單架僚機(jī)所受到的合力;Fatt(Z)為僚機(jī)受長機(jī)的引力;Frep(Z)為僚機(jī)與長機(jī)間的斥力;Frep(Li)為僚機(jī)與其他僚機(jī)之間的斥力;Frep(obs)表示僚機(jī)與障礙物之間的斥力。各項(xiàng)引力值和斥力值的計(jì)算方法采用式(6)和式(8)進(jìn)行計(jì)算。
協(xié)同避障算法具體實(shí)現(xiàn)步驟如下:
Step 1 確立無人機(jī)的飛行區(qū)域范圍,并設(shè)置長機(jī)、僚機(jī)和障礙物的相關(guān)信息。
Step 2 長機(jī)向目標(biāo)點(diǎn)運(yùn)動。在運(yùn)動過程中,計(jì)算長機(jī)與目標(biāo)點(diǎn)的引力,與障礙物間及與其他僚機(jī)間的斥力。將長機(jī)所受的引力與斥力進(jìn)行矢量疊加,并在合力的作用下運(yùn)動。
Step 3 僚機(jī)向長機(jī)方向運(yùn)動。在運(yùn)動過程中,僚機(jī)計(jì)算與長機(jī)之間的引力和斥力、與障礙物間的斥力,以及與其他僚機(jī)間的斥力。將僚機(jī)所受的引力與斥力進(jìn)行矢量疊加,并在合力的作用下向長機(jī)周圍運(yùn)動。
Step 4 判斷長機(jī)是否到達(dá)目標(biāo)點(diǎn),若長機(jī)未到達(dá)目標(biāo)點(diǎn),則重復(fù)Step 2;若長機(jī)到達(dá)目標(biāo)點(diǎn),則長機(jī)停止飛行。判斷僚機(jī)是否到達(dá)飛行目標(biāo)區(qū)域,若到達(dá),則僚機(jī)停止飛行;若未到達(dá),則繼續(xù)重復(fù)Step 3,直至到達(dá)飛行目標(biāo)區(qū)。
算法流程如圖5所示。
圖5 無人機(jī)協(xié)同避障算法流程圖Fig.5 Flow chart of UAV cooperative obstacle avoidance algorithm
本文將提出的協(xié)同飛行算法和協(xié)同避障算法相結(jié)合,形成無人機(jī)集群協(xié)同飛行避障算法,即ALFPSO算法。為測試ALFPSO算法的有效性,選取1架長機(jī)和4架僚機(jī)進(jìn)行仿真測試,測試結(jié)果如圖6所示。測試采用的計(jì)算機(jī)硬件CPU為AMD Ryzen 5 5600G,主內(nèi)存為16GB,操作系統(tǒng)為Windows 10,利用Matlab 2019軟件編寫程序并進(jìn)行測試。
如圖6所示,圖6(a)至圖6(d)各子圖中的左圖均為無人機(jī)集群運(yùn)動軌跡圖,右圖均為各無人機(jī)位置分布圖。圖6(a)為飛行起始圖,長機(jī)在(100,0)位置,僚機(jī)位置隨機(jī)產(chǎn)生;圖6(d)為飛行結(jié)束圖,長機(jī)到達(dá)(0,100)位置,僚機(jī)跟隨;圖6(b)和圖6(c)分別表示長機(jī)從起點(diǎn)到達(dá)目標(biāo)點(diǎn)期間,長機(jī)和僚機(jī)協(xié)同飛行及避障情況。通過各子圖的左圖可觀測出,長機(jī)從初始位置出發(fā),最終到達(dá)目標(biāo)位置。僚機(jī)跟隨長機(jī)飛行,最終所有僚機(jī)均順利到達(dá)飛行目標(biāo)區(qū)域,實(shí)現(xiàn)了無人機(jī)集群協(xié)同飛行。通過各子圖的右圖可觀測出,無人機(jī)集群飛行過程中,無人機(jī)之間不發(fā)生碰撞,且長機(jī)和僚機(jī)都能夠?qū)︼w行路徑上的障礙物進(jìn)行有效避障,從而滿足無人機(jī)集群飛行的協(xié)同避障要求。
圖6 1架長機(jī)和4架僚機(jī)協(xié)同飛行及避障仿真測試圖Fig.6 Cooperative flight and obstacle avoidance test of 1 leader and 4 followers
本文主要對無人機(jī)集群協(xié)同飛行避障問題進(jìn)行討論,并提出了可實(shí)現(xiàn)協(xié)同飛行且避障的ALFPSO算法。ALFPSO算法中,由長機(jī)-僚機(jī)編隊(duì)方法和粒子群算法相結(jié)合的LFPSO算法實(shí)現(xiàn)了協(xié)同飛行功能;基于人工勢場法設(shè)計(jì)的無人機(jī)協(xié)同避障方法實(shí)現(xiàn)了協(xié)同避障功能。通過仿真測試可看出,在靜態(tài)飛行區(qū)域和已知障礙物環(huán)境下,本文設(shè)計(jì)的ALFPSO算法能有效實(shí)現(xiàn)由1架長機(jī)和4架僚機(jī)組成的無人機(jī)集群,在設(shè)定的飛行區(qū)域內(nèi),自主協(xié)同飛行且自動規(guī)避障礙物,并順利到達(dá)飛行目標(biāo)點(diǎn)。因此,該算法具有正確性與魯棒性。在實(shí)際的無人機(jī)飛行過程中,飛行環(huán)境是不可預(yù)知的,障礙物可隨時(shí)出現(xiàn)在飛行區(qū)域內(nèi),下一階段可對動態(tài)飛行環(huán)境的協(xié)同飛行避障問題進(jìn)行深入研究。