趙 毓,郭繼峰,鄭紅星,白成超
(哈爾濱工業大學航天學院,哈爾濱 150001)
伴隨著無人機行業的高速發展,多無人機在有限空域內協同執行任務成為可能[1]。無論在協同偵查搜索等作戰任務中,還是在快遞配送或飛行表演等日常場景中,多無人機間協同飛行避碰問題一直是相關制導技術研究的重點方向[2]。固定翼無人機因無法懸停及速度控制范圍有限等技術特點,在航路密度較高的環境中,如果發生碰撞、損毀等安全事故,容易導致財產損失甚至人員受傷。因此,局部空域內大量固定翼無人機飛行碰撞沖突已成為相關領域亟待解決的突出問題。
無人機在自主執行任務期間主要依靠自身制導系統進行軌跡規劃與目標跟蹤。隨著任務動態性的提高和執行任務期間無人機數量需求的增加,傳統制導方法的自主性已難以滿足相關性能要求。Lu等最早提出了計算制導控制的概念,以描述具備更高自主性的新興制導算法[3]。早期的計算制導方法研究主要集中在航天領域,模型預測控制可以被稱作計算制導的前身[4]。Jiang等針對行星動力下降過程設計了一種計算制導方法,并使用協同優化算法對其進行求解[5]。近期Yang等將計算制導方法應用在空中交通管制問題上,使用蒙特卡羅樹搜索方法解決了臨近空域內的飛行沖突問題[6]。本文研究的任務場景與其類似,但研究對象為具有更高動態特性的固定翼無人機,對制導系統的可靠性有著更為嚴格的要求。
早期國內外學者對多無人機避碰的航路規劃或制導方法多是基于地面控制站實現。美國McLain等[7]最早基于最優控制的思想解決多無人機協調問題。國內的周煒等[8]基于層次分解法對多無人機避障問題展開研究,并實現了次優航路規劃。楊秀霞等[9]分別基于時間約束和比例導引兩方面對避障問題給出解決方案,通過數值解算得到了避碰時間估計方程和比例導引系數范圍。
在機器人編隊控制方向關于多智能體避碰問題的研究成果較多,近期無人機領域的相關學者也針對此類問題開展了研究。溫家鑫等[10]使用改進的人工勢場法進行無人機三維路徑規劃,有效地解決了傳統虛擬力方法易陷于局部最優的問題。Horn等[11]提出了一種基于虛擬結構的避碰算法,在勢場法的基礎上引入虛擬點理論,實現了對多智能體運動的控制。李相民等[12]將航跡規劃抽象為滾動在線優化問題,基于模型預測控制法實現了4架無人機的避碰飛行。Everett等[13]使用強化學習方法對不確定環境下無人車軌跡規劃問題進行了研究,其訓練成型的神經網絡具有很好的避碰性能。本文也使用了強化學習方法訓練制導決策神經網絡,與前人不同之處在于使用了訓練效率更高的Actor-Critic模型,而且設計的神經網絡結構更簡單,可以適應多無人機場景的高動態性要求。
本文通過構建自主決策神經網絡的方法,解決了同一飛行高度共空域多固定翼無人機的實時飛行避碰制導問題。基于馬爾可夫博弈(Markov game)理論,對多智能體序列制導決策問題進行數學建模,并確定優化目標。為了實現決策網絡功能,根據Actor-Critic模型建立了集中訓練和分布執行的多智能體強化學習訓練系統。針對該自學習系統,分別設計了用于計算制導的執行網絡(Actor)結構和用于評價聯合動作的值函數網絡(Critic)結構,并給出了基于logit協調機制的相關訓練流程。在建立的多航路飛行場景模擬器中應用本文算法進行仿真,結果表明,算法在高航路密度場景中可以實現多無人機協同避碰飛行。
本文算法相對于傳統基于數學模型或數值解析理論方法的優勢,在于該方法對無人機數量可變環境具有更好的適應性,避免了多無人機控制領域自適應動態規劃算法無法精確建模的問題。該研究內容為未來實物系統研究提供了方案參考和理論依據,具有一定的工程應用價值。
本文提出了一種在多無人機環境中分布式執行的自主制導決策神經網絡算法,該方法適用于飛機總數可變的場景。經過訓練后的制導神經網絡以環境狀態為輸入,可以在線為無人機提供制導指令,這些指令被用于引導無人機飛向各自目的地的同時能夠避免發生機間碰撞。在本研究中,僅考慮了飛機做水平運動的情況,即限定空域內所有飛機均在同一高度層飛行。這樣假設主要有兩個原因:1)為了增加無控條件下無人機的碰撞概率,進而有效驗證算法性能;2)不失一般性地模擬了真實飛行情況,由于載荷和動力系統的限制,固定翼無人機協同執行任務時在同高度飛行情景較為常見[14]。為了降低復雜度,研究中假設所有無人機均通過無延遲的可靠通信進行狀態信息交換。
為更貼近現實并提高算法的適用性,本文基于中心地理論將訓練場景設定為正六邊形空域[15],如圖1所示。后續研究可以根據密鋪原理對飛行空域進行擴展。在六邊形每個頂點處,以隨機時間間隔產生初始航向指向非相鄰點的無人機。各無人機的初始速度在一定范圍內隨機選取,在飛行過程中速度存在擾動誤差。

圖1 訓練場景示意圖Fig.1 Sketch map of training case
在實際應用中的固定翼無人機有多種構型[16]。由于本文研究算法為通用方法,不妨假設場景中無人機是碰撞半徑為50m的空間球形包絡,于是當空域內任意兩機間距離小于100m時,即認定發生碰撞;同樣,當飛機與空域邊界距離小于50m時,認定為出界。無論發生碰撞還是出界,相關無人機都將從仿真場景中移除。
基于以上設定,本文提出算法的目標有2個:1)引導所有飛機到達各自目的地;2)避免飛行過程中發生碰撞或出界。
許多學者已經對固定翼無人機的動力學問題展開了深入研究[17-18]。為了降低問題的復雜程度,本文僅考慮無人機在水平面內的運動控制問題,于是得到如下無人機二維運動學簡化模型
(1)
其中,(x,y)為無人機實時位置坐標;v為無人機巡航速度;φ為飛行航向角;ac為本文控制量,對應于航向角轉動角速度。
在本文中,為了驗證高速場景下的算法性能,將無人機的初速設定為60m/s。巡航速度在每一仿真步長中會附加均值為5m/s的隨機噪聲,但實時飛行速度被限制在一定范圍內,其值不大于80m/s,不小于40m/s。由于固定翼飛機相比旋翼飛機速度高很多,其控制系統必然存在擾動誤差,速度噪聲的引入是為了更加真實地模擬實際工程情況。
在生成每架無人機的初始階段,隨機選擇非相鄰節點為目標點,于是每架飛機從出生點指向目標點方向的航向角即為初始航向角。設定所有無人機在無控飛行狀態下均保持初始航向角不變。在每一仿真步長中,文中制導算法為無人機選取某一確定的航向角轉動角速度,該速度不大于5(°)/s。本文制導決策神經網絡會根據當前全局狀態實時為無人機提供制導指令,為控制系統選擇精確的轉向角速度。無人機通過執行相應動作,實現對空域內其他飛機的規避并飛向目標點。
本文使用off-policy形式的強化學習方法對制導神經網絡進行訓練,訓練過程每一回合(Episode)中產生200架無人機。對于每一個出生點生成的前后2架飛機,其時間間隔將會在60~180s內隨機選取。關于更詳細的參數信息將會在第4節中給出。
當空域內只有1架無人機與環境發生交互,其制導過程可以視為序列決策問題,使用傳統的馬爾可夫決策過程(Markov Decision Process, MDP)可以對其進行建模并求解。然而,本文研究空域內存在多個無人機對象,環境的整體狀態受到所有飛機聯合動作影響,對單架無人機來講環境失去穩定性,MDP方法不再適用于此場景。本文使用馬爾可夫博弈理論對空域內可變數量飛行器的制導決策問題進行建模,該理論是MDP在多智能體條件下的一種自然擴展[19]。
多智能體的馬爾可夫博弈問題可以用一個元組{n,S,A1,…,An,γ,R,T}來表示,其中n代表環境中智能體的總數;S代表整個系統可能狀態的有限集合,也稱為狀態空間;Ai,i∈[1,n]代表第i個智能體的可選動作集合,因本文智能體有相同可選動作集,此處可稱為動作空間;γ是獎勵折扣系數;R是聯合獎勵值,由環境受聯合動作a影響后產生;T是狀態轉移函數。某一時刻系統狀態改變受所有智能體聯合動作a=(a1,…,an),ai∈Ai影響,其中第i個智能體的動作ai通過自身策略πi選擇產生。
多智能體系統在聯合策略π=(π1,…,πn)的指導下,有累計折扣獎勵定義如下
(2)
其中,Tm為總時間;t為當前仿真時刻;st為當前時刻環境的狀態。多智能體馬爾可夫博弈的終極目標是找到最優的聯合策略π*,使得整個系統的累計期望回報值最大。

為了降低環境的不穩定性,本研究對場景內所有智能體使用Logit策略進行動作協調[21]。具體來說,在Logit策略中僅存在一個高級別智能體,其余智能體均保持原始動作不變。當環境中高級別智能體做出決策和選擇動作后,向其余智能體發送這一信息,然后自動變為低級智能體。順序選擇下一智能體為高級別智能體,循環迭代進行決策,直到所有智能體完成動作選擇。通過這種方式可以在智能體進行策略更新時固化環境影響,進而降低系統的不穩定性。
本文使用強化學習領域最流行的Actor-Critic方法解決多智能體避碰制導決策神經網絡的訓練問題[22]。在集中訓練過程中,使用2個異步更新的Actor神經網絡來擬合策略(Policy),同樣使用2個Critic網絡逼近評價值(Q-Value)函數。環境中的所有無人機都共享一套神經網絡結構,但各自網絡參數存在一定噪聲,通過這種方式鼓勵協作的同時擴大系統的探索能力。在分布執行過程中,每架無人機各自使用一個獨立的Actor網絡生成制導指令。
本文提出的多智能體強化學習算法具有如下特點:1)所有智能體共享同一套Actor-Critic網絡結構和參數,但個體網絡參數存在噪聲;2)理論上,由于使用了Logit策略,本文算法中不同智能體的動作選擇是異步更新的;3)文中算法通過引入長短期記憶(Long Short Term Memory, LSTM)網絡,能夠處理智能體數目可變場景下的制導決策問題。下面將對多智能體計算制導方法進行詳細分析。
本文所述強化學習過程中共有4個神經網絡,分別是決策Actor(ActorD)、估計Actor(ActorE)、決策Critic(CriticD)和估計Critic(CriticE)。其中ActorD用來擬合制導策略,可以用參數θ描述,它是唯一在訓練過程和執行過程都被使用的神經網絡結構;CriticD用來逼近評價函數,可以用參數ω描述。以第i個智能體為例,其在自學習系統中的訓練過程如圖2所示。

圖2 多智能體訓練過程示意圖Fig.2 Multi-agent training framework diagram
在訓練期間,ActorD實時生成決策,即通過獲取當前環境中全局狀態信息為智能體選擇動作。在每一個時間步長t中,所有智能體都通過自身策略選擇各自動作,雖然這些策略有相同的ActorD網絡結構,但每次應用時都為參數附加了誤差,并且每個個體的輸入和輸出是差異化的。環境中所有被選擇的動作最終合成為聯合動作at。環境狀態st在執行聯合動作at后,通過狀態轉移函數更新為新的狀態s′t,并返回即時獎勵Rt。每一仿真步長最終產生一個用集合(st,at,Rt,s′t)表示的案例,所有案例將會被存儲在經驗池D中。當經驗池中案例達到一定數目時,隨機從中抽取M組案例對所有神經網絡進行訓練。類似于深度Q學習(Deep Q-Learning)的思路,用off-policy這樣的方式來提高動態環境中訓練曲線的收斂速度。
案例訓練過程中,CriticD首先根據聯合狀態st和聯合動作at生成評價值Qt;然后ActorE根據新的聯合狀態s′t生成估計聯合動作a′t;CriticE將會基于s′t和a′t生成Q′t。于是可以得到CriticD網絡的損失方程為
L(ω)=E[(Qt(st,at)-Rt-γQ′t(s′t,a′t))2]
(3)
基于求得的損失值L(ω)更新CriticD網絡參數。
用式(4)可以求取ActorD網絡的梯度
(4)
其中,J(π)=E[R]由式(2)給出。使用Adam優化器根據上述梯度值更新ActorD的神經網絡參數。
綜上,本文強化學習訓練的目的是通過不斷調整各網絡參數,使ActorD能夠根據環境內全局狀態為智能體選擇最理想的動作。
本文將多無人機的計算制導問題求解過程抽象為強化學習過程,將每架飛機看作一個智能體。制導算法的最終目標是形成一個決策神經網絡,為智能體選擇合適的動作,在避免碰撞的同時引導其到達目的地。由于空域中飛機隨機產生,所以本文研究的是一個動態場景,正因如此,需要每個智能體能夠具備對突發情況的臨時決策能力。雖然給出了飛行速度約束,但在研究中只對無人機的飛行航向角進行控制,即選擇航向角的改變角速率作為動作集合。前文已經提到可用航向角速度的最大值為5 (°)/s,所以需要優化的動作集合是有界且連續的。以下將給出本文所用強化學習方法中狀態空間、動作空間、回報函數和其他一些參數的相關定義。
(1)狀態空間
每架無人機的狀態信息包括實時位置(x,y)、速度v、飛行航向角φ和目標點(gx,gy)。在t時刻,空域環境中所有智能體的狀態信息聯合構成了完整的全局狀態信息st,定義如下
(5)
其中,st是一個n×6的矩陣,n是環境中智能體的總數。本文認為在仿真過程中所有智能體都能及時獲得完整的全局狀態信息。
(2)動作空間
每架無人機在仿真步長內可以選擇一個固定的角速度值做航向角轉向動作,于是智能體的動作空間為Ai∈[-5,5] (°)/s,正值代表右轉,負值代表左轉。然而,通過大量仿真實驗發現,在訓練中使用連續的動作空間將會耗費大量計算時間,使得系統難以找到最優策略。為了提高訓練速度,在本研究中將動作空間離散為Ai={-5,-3,0,3,5},其中0表示不發生轉向。
(3)回報函數
在前文中已經給出了發生機間碰撞的距離為100m,為了進一步提高算法的訓練速度,在此還設定了機間警告距離為500m,如果2架飛機間距離小于此值時,他們各自的回報值中會計入一個懲罰?;谝陨显O定,可以得到每個智能體的回報函數定義

(6)

(7)
基于這樣的回報函數設定,可以通過訓練提高環境累積回報值以提升算法性能。
(4)其他相關參數
由于轉移方程和回報函數已經確定,本文中強化學習訓練的目標即是為多智能體問題找到優化的策略。為了解決這一隨機博弈問題,需要找到可以使所有無人機未來累計折扣回報總和盡量大的策略π*。因為環境中所有智能體都有相同的回報函數,并在環境返回時累加所有智能體的回報值,而且有相同的決策神經網絡結構,所以屬于完全合作情景。如2.1節所述,將動作-值函數定義為Q(st,a1,…,an),它是由當前全局狀態和所有無人機聯合共同決定的。
在仿真過程中,模擬器會生成固定數量的無人機。如果某一架無人機發生了碰撞、出界或者到達終點,它將會被從場景中移除。為了防止訓練早期發生無人機無限循環飛行的情況,設定了每一回合中的最大仿真步數Tmax,一旦有飛機總飛行時間達到Tmax,則同樣被從場景中移除。當所有飛機從場景中移除后,一個仿真回合結束。


圖3 Actor的神經網絡結構示意圖Fig.3 Illustration of the Actor neural network architecture
雖然LSTM網絡結構經常被用于處理序列數據,但是只用到其對序列輸入相關信息的存儲能力,沒有考慮時序相關性。在每一個仿真步長中,除自身外其余所有的智能體狀態都被輸入到LSTM網絡中,以距離由遠到近的順序輸入,這樣可以保證距離最近的智能體在最終獲得的隱藏狀態中具有最大的影響力。每輸入一個智能體的狀態,LSTM網絡都會生成一個隱藏狀態,并傳入下一步計算中。將最后的隱藏狀態作為一個固定長度的、編碼過的全局狀態提供給決策神經網路用于選擇動作。
本文中Actor和Critic網絡具有相似的前端結構,他們都有一個LSTM網絡處理輸入,有2個全連接隱層處理信息。但是,Critic網絡的輸入中不僅包含了全局狀態信息,還加入了所有智能體的當前動作信息,進一步增強了智能體之間的協同。如前文所述,Actor神經網絡的作用是擬合為智能體選擇最優動作的策略函數,由于仿真中動作空間是離散的,所以使用Gumbel-Softmax估計器作為Actor的輸出層[23]。Critic網絡的輸出層只有一個神經元,用于輸出評價值Q。
根據前文中相關描述和參數信息,表1給出了本文使用的強化學習方法算法流程。

表1 強化學習計算制導算法流程
在仿真期間,發生碰撞的次數將會被記錄下來,并在每回合仿真最后輸出。當模擬器生成了最大數量為max_num的無人機后不再生成新的無人機。需要指出的是,為了提高訓練速度,本文使用AdaGrad優化器對LSTM網絡進行更新操作。
為了更好地訓練和驗證算法的有效性,基于OpenAI的Gym環境建立了一個大量飛機自由飛行的2D模擬器,模擬器中空域范圍為34km×34km。模擬器的輸入為無人機的聯合動作at,輸出為新的全局狀態s′t和當前即時回報Rt。算法根據全局狀態中參數對的個數判斷當前環境中的無人機數目。每回合中最大仿真步數為Tmax=500×max_num。
本文設置LSTM網絡的隱層有32個節點,其輸入數據需要正則化,選擇Softsign函數作為其激活函數。各網絡結構中的全連接層均為128個節點,使用ReLU函數作為激活函數。
操作系統環境為Windows10 x64,使用軟件工具包版本為Python3.7和TensorFlow 2.1.0。硬件信息為Intel i5-9600K、DDR4 16GB和240GB SSD。
為了研究多智能體計算制導神經網絡的性能,分別設計了訓練案例和壓力測試案例。訓練案例用來訓練并驗證文中算法的有效性,而壓力測試案例則用于檢驗訓練好的決策神經網絡對高航路密度場景的適應性。下面分別給出了算法在各案例中的仿真結果。
(1)強化學習訓練和驗證
在此場景中,有6個出生點均勻分布在正六邊形的各頂點處,相鄰頂點間距為16km。在每個出生點以60~180s的隨機時間間隔生成新的無人機,并以非臨近頂點作為其終點設定初始航路。圖4(a)是該場景在仿真過程中的截圖。
將訓練過程的最大回合數設定為10萬次,在每個回合中生成200架無人機,單回合最大仿真步數Tmax=105。強化學習系統有如下相關參數:網絡更新率τ=0.01,折扣因子γ=0.98,最小樣本數為1000組,M=103,各優化器使用默認參數,神經網絡的相關參數每1000回合存儲1次。

(a)訓練場景
環境累計回報值隨訓練回合數變化的曲線如圖5所示。從圖5中可以看出,決策神經網絡在經歷了2萬回合訓練后才逐漸學習到有一定效果的策略,且整體收斂過程較慢。分析其原因,應是LSTM網絡在訓練前期難以收斂導致。由于后端決策網絡輸入了大量依賴LSTM網絡輸出的隱藏狀態信息,LSTM網絡的性能嚴重限制了算法的整體效果。曲線最終逐漸收斂于回報值300附近,說明本文算法能夠有效避免航路沖突。
制導決策神經網絡訓練完成后,將訓練好的ActorD應用在每架無人機上,進行1000回合獨立仿真實驗并統計發生碰撞次數信息。對飛機無制導自由飛行場景也進行了1000回合獨立仿真實驗,并將取得的結果作為對比。表2展示了本文算法的性能,說明提出的算法可以有效降低限定空域內多無人機飛行過程中的碰撞概率。由于初始航向即指向目標點,自由飛行場景中未發生碰撞的飛機全部到達目標點。在使用本文算法的場景中,所有飛機均到達目標點。統計了隨機100回合中每個仿真步長內空域中無人機密度信息,并繪制圖6所示直方圖。綜合表2和圖6可以看出,大多數時間空域內有20~26架飛機在飛行,最大數量可達30架次,本文算法能夠在此航路密度下保證不發生機間碰撞,說明其具有較好的性能。

表2 測試案例碰撞統計表

圖6 單步長內無人機數量統計Fig.6 Statistical histogram of UAVs in a single step
為了測試算法的運算速度,統計了隨機100回合中某一步長內無人機數量與計算時間的關系數據,取均值后繪制成圖7所示曲線。由圖7可以看出,隨著空域內無人機數量的增加,算法總的計算時間也快速增大。當空域內無人機數量不超過22架時,算法運算時間不超過1s,在實際應用中可以接受。后續可以通過壓縮神經網絡或優化決策系統結構來進一步提升運算速度。

圖7 單步長內計算時間隨無人機數量變化曲線Fig.7 Computation time with the number of UAVs in a single step
通過觀察模擬器中無人機飛行路徑發現,隨著訓練回合數的增加,無人機規避動作數量大量減少,飛向目標點的曲線愈發平滑。但這一結果并未得到充分統計和論證,未來將對此點進行深入研究。
(2)壓力測試
為進一步評估算法性能,本文設計了一個限定空域內多無人機相遇的壓力測試場景,此場景有助于研究算法在高航路密度條件下解決碰撞沖突的能力。在壓力測試場景的每一回合中,產生從10架到50架不等數量的無人機,隨機分布在一個內徑為28km、外徑為34km的環形空域上。限定任意2架飛機的初始位置最小距離不小于1km。每架飛機的終點被設定為空域中的中心對稱位置,因此所有飛機的初始航向都必然指向空域中心,以確保他們都存在碰撞可能。圖4(b)展示了在場景中有20架飛機的仿真過程截圖。
圖8展示了隨著飛機數量的增加,本文計算制導算法在測試場景中的性能,其中每個數據點表示100個獨立回合中統計結果的均值。從圖8中可以看出,如果空域內飛機不采取制導措施,60%以上的飛機將在測試中發生碰撞,這一概率隨著飛機數目的增長而逐漸增加。然而在應用本文算法的測試場景中,無人機的最大碰撞概率不超過10%,在總數28架以下的場景中可以保證無碰撞發生。由此表明,即使在高航路密度情況下,本文提出的計算制導方法也具有良好的適應性。

圖8 碰撞概率隨飛機總數變化圖Fig.8 Collision probability as the number of UAVs increases
針對有限空域內多固定翼無人機避碰飛行問題,提出了一種實時分布式計算制導方法。算法分析與實驗結果表明:
1)提出了一種解決限定空域內多飛行器碰撞沖突問題的方法,為未來三維空間制導算法和實物仿真提供了新的研究思路;
2)基于全局狀態信息的神經網絡決策方法可以解決多智能體計算制導問題,能夠有效降低多無人機在飛行過程中的碰撞概率;
3)基于強化學習的計算制導算法在高航路密度場景下具有良好的性能,能夠有效避免碰撞發生,對提高限定空域內無人機容量有一定幫助。
文中算法在仿真過程中僅對空間進行抽象,并未考慮受硬件影響的精確時間因素;受限于硬件性能致使訓練時間過長,未能對連續動作空間問題進行深入分析。未來需要對以上兩點展開進一步研究。