申 海, 于長敏, 林雨奇
(沈陽師范大學 物理科學與技術學院, 沈陽 110034)
隨著無人機技術的蓬勃發展,單架無人機已經不能滿足軍用及民用的需求。基于生物行為的研究涌現出眾多集群智能算法,由集群智能引發的無人機集群系統恰好可彌補該不足。無人機集群除了具有數量上的優勢外,還具有成本低、靈活性好和魯棒性強等特點。目前,生物集群智能算法是無人機集群協同問題研究的新方法,此類方法在軍用及民用中具有廣泛應用,因而受到了國內外學者的廣泛關注[1-2]。
無人機集群協同飛行是無人機集群協同問題之一,要求多架無人機通過群體內的協作,能夠實現自主協同飛行。另外,由于飛行區域內存在障礙物,還需要無人機集群躲避障礙物。因此,無人機集群協同飛行問題的研究應包括協同飛行和協同避障2個子問題的研究。首先,本文介紹了集群智能及無人機集群的產生背景和目前研究情況;其次,介紹了可實現協同飛行的LFPSO(leader-follower-particle swarm optimization)算法,并進行了仿真測試,驗證了LFPSO算法可實現協同飛行,基于避障問題,設計了無人機協同避障算法;最后,將協同飛行LFPSO算法與協同避障算法相結合,形成了ALFPSO算法。仿真測試結果驗證了此算法的正確性和魯棒性。
集群智能(swarm intelligence,SI)的研究,源于1959年法國生物學家PierrePaul Grasse的研究。他發現昆蟲之間存在著簡單的溝通,但憑借這種簡單溝通,生物群體能夠完成一些復雜的任務[3-4],執行任務的效率也遠遠超過單個個體的效率。這種利用單個個體間簡單的溝通協作從而完成復雜任務的行為就是生物集群智能的雛形,顯示出生物群體的集體智慧行為。通過對昆蟲間集體智慧行為的研究逐漸衍生出許多集群智能算法,如粒子群算法、蜂群算法和狼群算法等[5-7]。
從生物集群智能的研究獲得靈感,無人機集群技術應運而生[8-10]。無人機技術向無人機集群技術的轉變,不僅是數量上的改變,更重要的是集群智能與無人機技術的結合。無人機與生物個體有許多共同點,比如都是單一智能個體,且執行任務的效率遠不如群體帶來的優勢。將集群智能引入到無人機技術中,能夠使無人機集群自主協同飛行,避免增加額外的地面操作和人工操作。因此,無人機集群成為現代戰爭的主要研究方向,可以以無人、自主和協同3個方面特征取得戰爭的優勢[11]。
粒子群優化算法(particle swarm optimization,PSO),也稱粒子群算法或鳥群覓食算法,是由Kennedy和Eberhart等[12]于1995年提出的一種生物啟發式算法。在粒子群算法中,粒子群中的每個粒子都可以看作鳥群中的鳥,且存在社會認知和個體認知,粒子尋找最優解過程代表鳥群不斷覓食過程。在每次迭代過程中,粒子群里離食物源最近的粒子設定為全局最優解,即社會認知;每個粒子曾飛行的歷史最優位置為個體認知。每個迭代過程代表社會認知的個體并不是固定的。粒子通過當前位置、社會認知和個體認知的綜合決策后決定下一時刻的位置。粒子群算法是一種基于群體的隨機優化算法,在解空間中較容易找到全局最優解,因而被廣泛應用。
無人機編隊是指無人機飛行過程中的隊伍形狀,此問題的研究源于無人機集群飛行中需要靈活地調整隊形以適應不同任務不同環境的要求[13]。目前常用的無人機編隊方法有長機-僚機法、虛擬結構法和行為法等。其中,長機-僚機可類比為大雁的飛行方式,由頭雁帶領其他大雁飛行。多架無人機飛行中,設置一架無人機為長機,其余無人機為僚機[14]。長機可以理解為管理者,負責任務的統籌;僚機屬于附屬者,主要任務是完成管理者的任務,或配合管理者來完成任務。長機根據目標的識別情況或感知情況進行飛行,僚機通過調整自身的速度和偏航角等信息實現跟隨狀態,從而達到保持編隊隊形的目的。由于此編隊方法較為成熟,易于實現,因而本文采用此種方法實現無人機集群飛行的隊形保持。
本文將長機-僚機編隊方法與PSO算法相結合,設計了可實現無人機集群協同飛行的算法,即LFPSO算法。在LFPSO算法中,設定每個粒子僅有社會認知,沒有個體認知。社會認知代表全局最優解,即長機-僚機編隊方法中的長機。長機和僚機均具有不同的位置信息和速度信息,長機運動具有隨機性,僚機跟隨長機飛行。無人機協同飛行相對運動如圖1所示。

圖1 無人機協同飛行相對運動Fig.1 Relative motion of UAV cooperative flight
如圖1所示,長機A在坐標系內坐標為(xA,yA),速度大小為vA,航向角為φA。飛行過程中,長機航向角φA隨機變化,長機位置坐標不斷更新。僚機B在坐標系內坐標為(xB,yB),速度為vB。長機運動模型如式(1)所示。

(1)

僚機跟隨長機運動,規定僚機B朝向長機A下一位置運動,引入僚機位置分量ratio,如式(2)所示。

(2)
式中:(xB,yB)為僚機B當前時刻位置坐標;vB為僚機B的速度。
通過僚機B位置分量計算其下一時刻位置,如式(3)所示。將式(2)代入式(3),得到式(4)所示的僚機B運動數學模型。

設定飛行區域為100×100,長機和僚機均在飛行區域內進行飛行,要求不能越過邊界或與邊界發生碰撞。長機和僚機開始下一時刻飛行之前,通過計算當前位置與限定飛行區域邊界之間的距離是否小于速度×單位時間進行判斷。長機如即將越過邊界或與邊界碰撞,則長機速度調整為原來一半,并重復調整航向角,直至長機判斷出下一時刻不會越過邊界或與邊界不發生碰撞為止;如不能越過邊界或與邊界碰撞,則根據判斷后的最佳航向角完成下一時刻飛行。僚機計算與長機之間的位置分量ratio,通過ratio計算僚機下一時刻位置。僚機如不能越過邊界或與邊界碰撞,則完成下一時刻飛行;如即將越過邊界或與邊界碰撞,則在下一時刻暫停飛行,即保持當前位置和速度不變。由于長機位置不斷變化,因而僚機預估的下一時刻位置也在不斷變化,直至判斷不能越過邊界或與邊界發生碰撞為止。LFPSO算法具體流程如圖2所示。

圖2 無人機協同飛行算法流程圖Fig.2 Flow chart of UAV cooperative flight algorithm
為驗證本文提出的無人機集群協同飛行算法的有效性,本文選取1架長機和4架僚機進行仿真測試,測試結果如圖3所示。本文主要采用的計算機硬件CPU為AMD Ryzen 5 5600G,主內存為16GB,操作系統為Windows 10,利用Matlab 2019軟件編寫程序并進行測試。飛行區域限定為100×100,長機和僚機位置均隨機產生。從圖3中可看出,本文設計的LFPSO算法能夠滿足在各個無人機初始位置不同的前提下,僚機不斷向長機方向進行飛行,最終完成與長機的匯集,同時也避免了在設定的飛行領域發生飛出范圍的情況。

圖3 1架長機與4架僚機協同飛行測試圖Fig.3 Cooperative flight test of 1 leader and 4 followers
無人機避障行為是指無人機在移動過程中感知到預定路線上所存在的障礙物時,為防止碰撞,通過算法計算避障路線,實時更新路徑,從而成功避開障礙物的一種行為模式[15]。無人機協同避障是指多個無人機飛行過程中,除了需要避開已有障礙物外,為防止無人機之間發生碰撞,還需要無人機之間進行避障。因此,無人機協同避障包括2個方面的問題,一方面是飛行路徑上的障礙物避障;另一方面是無人機之間進行避障。本文采用人工勢場法實現上述2個方面的避障。
人工勢場法(artificial potential field)是無人機避障研究中最為常見的一種方法,是由Khatib[16]于1986年提出的。此方法有著簡單實用、與工程結合緊密和實踐性強等諸多優點。算法將物體運動區域視為勢力場,勢力場包括引力勢場和斥力勢場。引力勢場主要與距離成正比,距離越大,物體之間所受引力勢場的勢能值則越大;距離越小,物體之間所受引力勢場的勢能值則越小。引力勢場函數及相應的負梯度函數如式(5)和式(6)所示。
式中:Fatt(X)為引力場負梯度;η為正比例增益系數;ρ(q,qg)表示物體之間的距離,距離值為|q-qg|。
斥力勢場的勢能值大小同樣與物體間距離有關, 在安全閾值ρ0范圍外, 勢能值為0; 反之, 勢能值與距離呈反比例函數。 斥力勢場的勢能值勢場函數及相應的斥力場負梯度函數如式(7)和式(8)所示。
式中:Frep(X)為斥力場負梯度;k為負比例增益系數;ρ0為常數,表示物體之間的安全閾值;ρ(q,q0)表示物體當前位置與安全閾值間的距離,距離值為|q-q0|。
本文基于人工勢場法,設計了無人機集群協同避障算法。 設定無人機飛行區域為(0,0)至(100,100),飛行區域內的障礙物周圍及每個無人機周圍都存在引力場和斥力場。 設定(100,0)為長機初始位置,(0,100)為長機目標位置。僚機初始位置在飛行區域內隨機產生,飛行目標區域為x∈[0,10],y∈[90,100]組成的方形區域。 長機從初始位置出發,在目標點的引力勢場作用下向目標位置飛行, 僚機則通過長機引力場作用向長機方向運動。 飛行過程中,長機和僚機均受障礙物斥力作用, 從而躲避障礙物。為保障無人機之間不碰撞,無人機之間也存在斥力場。 無人機在勢力場的作用下飛行示意圖如圖4所示。

圖4 無人機在力的作用下飛行示意圖Fig.4 UAV flight diagram under the action of force
長機所受的合力為受目標點的引力,由僚機間的斥力及與障礙物間的斥力組成,如式(9)所示。 僚機所受的合力為受長機的引力和斥力, 由其他僚機間的斥力及與障礙物間的斥力組成, 如式(10)所示。
式中:FZ為長機所受的合力;Fatt(G)為長機受目標點的引力;Frep(L)為長機與僚機間的斥力;Frep(obs)表示長機與障礙物間的斥力;FL為單架僚機所受到的合力;Fatt(Z)為僚機受長機的引力;Frep(Z)為僚機與長機間的斥力;Frep(Li)為僚機與其他僚機之間的斥力;Frep(obs)表示僚機與障礙物之間的斥力。各項引力值和斥力值的計算方法采用式(6)和式(8)進行計算。
協同避障算法具體實現步驟如下:
Step 1 確立無人機的飛行區域范圍,并設置長機、僚機和障礙物的相關信息。
Step 2 長機向目標點運動。在運動過程中,計算長機與目標點的引力,與障礙物間及與其他僚機間的斥力。將長機所受的引力與斥力進行矢量疊加,并在合力的作用下運動。
Step 3 僚機向長機方向運動。在運動過程中,僚機計算與長機之間的引力和斥力、與障礙物間的斥力,以及與其他僚機間的斥力。將僚機所受的引力與斥力進行矢量疊加,并在合力的作用下向長機周圍運動。
Step 4 判斷長機是否到達目標點,若長機未到達目標點,則重復Step 2;若長機到達目標點,則長機停止飛行。判斷僚機是否到達飛行目標區域,若到達,則僚機停止飛行;若未到達,則繼續重復Step 3,直至到達飛行目標區。
算法流程如圖5所示。

圖5 無人機協同避障算法流程圖Fig.5 Flow chart of UAV cooperative obstacle avoidance algorithm
本文將提出的協同飛行算法和協同避障算法相結合,形成無人機集群協同飛行避障算法,即ALFPSO算法。為測試ALFPSO算法的有效性,選取1架長機和4架僚機進行仿真測試,測試結果如圖6所示。測試采用的計算機硬件CPU為AMD Ryzen 5 5600G,主內存為16GB,操作系統為Windows 10,利用Matlab 2019軟件編寫程序并進行測試。
如圖6所示,圖6(a)至圖6(d)各子圖中的左圖均為無人機集群運動軌跡圖,右圖均為各無人機位置分布圖。圖6(a)為飛行起始圖,長機在(100,0)位置,僚機位置隨機產生;圖6(d)為飛行結束圖,長機到達(0,100)位置,僚機跟隨;圖6(b)和圖6(c)分別表示長機從起點到達目標點期間,長機和僚機協同飛行及避障情況。通過各子圖的左圖可觀測出,長機從初始位置出發,最終到達目標位置。僚機跟隨長機飛行,最終所有僚機均順利到達飛行目標區域,實現了無人機集群協同飛行。通過各子圖的右圖可觀測出,無人機集群飛行過程中,無人機之間不發生碰撞,且長機和僚機都能夠對飛行路徑上的障礙物進行有效避障,從而滿足無人機集群飛行的協同避障要求。

圖6 1架長機和4架僚機協同飛行及避障仿真測試圖Fig.6 Cooperative flight and obstacle avoidance test of 1 leader and 4 followers
本文主要對無人機集群協同飛行避障問題進行討論,并提出了可實現協同飛行且避障的ALFPSO算法。ALFPSO算法中,由長機-僚機編隊方法和粒子群算法相結合的LFPSO算法實現了協同飛行功能;基于人工勢場法設計的無人機協同避障方法實現了協同避障功能。通過仿真測試可看出,在靜態飛行區域和已知障礙物環境下,本文設計的ALFPSO算法能有效實現由1架長機和4架僚機組成的無人機集群,在設定的飛行區域內,自主協同飛行且自動規避障礙物,并順利到達飛行目標點。因此,該算法具有正確性與魯棒性。在實際的無人機飛行過程中,飛行環境是不可預知的,障礙物可隨時出現在飛行區域內,下一階段可對動態飛行環境的協同飛行避障問題進行深入研究。