馬梓元, 龔華軍
(南京航空航天大學 自動化學院,南京 211100)
群體無人機在通信覆蓋[1]、災(zāi)難救援[2]、軍事行動[3]等領(lǐng)域具有重要的應(yīng)用前景。與單體無人機相比,群體無人機具有故障容錯性、任務(wù)并行性、功能分布性等優(yōu)勢,從而能夠支持更為復雜的任務(wù),具有重要的研究價值。無人機群導航是指根據(jù)目標的位置、速度等信息,控制無人機群運動到目標區(qū)域的過程,是無人機群執(zhí)行各種復雜任務(wù)的基礎(chǔ)和前提,也是機器人領(lǐng)域亟待解決的核心問題。
無人機群的導航策略包括集中式控制和分布式控制兩大類。集中式控制便于數(shù)學分析,相比分布式控制具備更豐富的理論研究基礎(chǔ),但在實際的大規(guī)模、大范圍應(yīng)用場景中,無人機之間的相互通信高度受限,群體的全局信息獲取十分困難,集中式控制面臨嚴重的單點失效和網(wǎng)絡(luò)擁塞問題而不具有實用性和可擴展性。因此,無人機群的分布式導引控制研究具有重要的理論意義和實際意義[4]。
分布式的群體編隊導航控制是當前群體機器人研究的難點問題。文獻[5]采用領(lǐng)航跟隨法實現(xiàn)多機器人便對控制,該方法結(jié)合了領(lǐng)航跟隨法控制簡單、編隊快速和星系動力學法編隊穩(wěn)定和動態(tài)均衡的優(yōu)點,實現(xiàn)了機器人快速編隊和動態(tài)避障的性能要求。基于虛擬結(jié)構(gòu)的編隊控制方法的主要原理是把編隊結(jié)構(gòu)看作是虛擬的剛體結(jié)構(gòu),其中,實際中的每個機器人都對應(yīng)一個虛擬剛體結(jié)構(gòu)中的頂點。虛擬結(jié)構(gòu)的頂點即代表著機器人在編隊中期望的相對位置。算法的目標在于設(shè)計一個控制方法,以使得所有機器人向指定方向運動,同時盡可能保持完美的編隊,即保持其頂點位置構(gòu)成的剛體虛擬結(jié)構(gòu)始終維持不變[6-8]。文獻[9]中采用了虛擬機器人與人工勢場法相結(jié)合的方法,實現(xiàn)了多水下機器人的編隊控制?;谛袨榈目刂品椒ㄓ梢幌盗械男袨闃?gòu)成,不同的行為對應(yīng)不同的目標,例如避免碰撞、保持距離、向目標移動等等,控制方法設(shè)計的核心是對行為的定義以及行為之間的協(xié)調(diào)機制,這類方法的優(yōu)點是設(shè)計較為簡單,能夠兼顧各種行為,缺點是難以進行穩(wěn)定性分析等理論分析,在復雜環(huán)境中,機器人的行為具有不可知性[10-11]。多機器人的編隊既包括拓撲結(jié)構(gòu)固定的編隊,也包括拓撲結(jié)構(gòu)可變的編隊。蜂群編隊是拓撲結(jié)構(gòu)可變編隊的典型實例,蜂群編隊的機器人并不保持特定的拓撲結(jié)構(gòu),其拓撲結(jié)構(gòu)是可變的,但該拓撲結(jié)構(gòu)對應(yīng)的圖應(yīng)是連通的,并且機器人之間互相保持特定的期望距離,該方法具有較好的應(yīng)用效果。上述相關(guān)研究主要集中在分布式的群體編隊,卻沒有同時研究導航整個群體時所需要考慮的群體機動性。此外,多數(shù)理論研究工作僅開展了模擬仿真實驗,而沒有進行基于無人機實物的實際驗證,缺乏實驗驗證無法保證方法的有效性,因此仍需尋找更好的方法。
人工勢場法在多機器人的蜂群編隊控制中有廣泛的應(yīng)用[12-13]。通過在機器人之間引入人工勢場,使得當機器人之間的距離大于期望值時二者產(chǎn)生引力,小于期望值時二者產(chǎn)生斥力,從而使得機器人之間保持期望的距離。人工勢場法現(xiàn)在廣泛應(yīng)用于無人機路徑規(guī)劃、避障等方面[14-15],并且和模糊控制法等其他方法相結(jié)合。本文針對大規(guī)模、大范圍的復雜應(yīng)用場景環(huán)境,研究無人機群的分布式導航的關(guān)鍵技術(shù)與系統(tǒng)實現(xiàn),提出一套新的完整的無人機分布式導航方法,通過在三維仿真平臺的無人機實驗,驗證了本方法的有效性。
為了實現(xiàn)無人機群體的分布式導航,本文首先將無人機群體看作一個整體,進行路徑規(guī)劃;然后基于文獻[16]中的分布式群集控制算法,實現(xiàn)無人機的分布式編隊控制;最后通過編隊控制方法與規(guī)劃路徑的結(jié)合,實現(xiàn)無人機的分布式導航。
圖1 路徑規(guī)劃算法流程圖
為無人機群體進行路徑規(guī)劃時,首先要有飛行場地的地圖,基于飛行場地地圖對無人機的路徑進行規(guī)劃等相關(guān)工作。在開源機器人操作系統(tǒng)ROS中,地圖信息由二維柵格地圖進行表示,整個地圖被等分為若干柵格,地圖的分辨率參數(shù)決定了該地圖中每個柵格的長度和寬度,每個柵格由一個狀態(tài)值描述,代表該柵格對應(yīng)的區(qū)域可通行、不可同行或是信息未知。對于高分辨率的地圖,其柵格面積較小,數(shù)量較多,因而能夠更精確地表示地圖的可通行信息,但存在計算量大的問題;低分辨率的地圖則計算量較小,但對地圖的描述不如高分辨率地圖精確,因此地圖的選擇對于路徑規(guī)劃的影響較大。為有效解決這一問題,以所有柵格作為頂點,連接所有相鄰的可通行柵格,即可將二維柵格表示的地圖轉(zhuǎn)化為圖的表示。
本文將群體看作一個整體進行規(guī)劃,以無人機群的中心位置所在柵格作為路徑規(guī)劃的起點,以導航的目標點所在柵格作為路徑規(guī)劃的目標點,即可通過A*算法等圖搜索算法求得群體的最短路徑,其流程如圖1所示。路徑規(guī)劃結(jié)果即圖中兩兩相連的頂點構(gòu)成的路徑,可以再一一對應(yīng)到地圖的柵格。
在ROS的單體機器人路徑規(guī)劃中,為了確保機器人能夠通過所規(guī)劃出的路徑,通常會在進行路徑規(guī)劃時設(shè)置機器人的半徑參數(shù)r,將不可通過柵格(即障礙物)周圍范圍r的可通過柵格也認為是不可通過的,從而確保實際規(guī)劃出的路徑有足夠空間供機器人通過。在為群體進行規(guī)劃時,本文也引入了這種方法,根據(jù)群體的預估半徑設(shè)置參數(shù)r,從而確保規(guī)劃出的路徑能夠供整個無人機群體通過。
文獻[4]提出了一種針對多智能體系統(tǒng)的分布式群集控制方法,其中每個個體能夠感知周圍范圍R內(nèi)的相鄰個體的位置和速度以向量q和向量p分別表示所有個體的位置和速度,則個體i的鄰居集合為:
Ni={j:||qj-qi|| (1) 通過鄰居的位置和速度信息以及個體自身的位置和速度,該控制方法即可計算出個體的加速度并據(jù)此調(diào)整個體的速度。作者證明了通過該控制方法,所有個體能夠漸進地收斂成一個群,具有相同的速度并且能夠互相保持一定的間距。該控制方法如公式所示。 (2) 其中:ui代表個體i的加速度,是控制算法的輸出,它由三項相加所得,三項的具體信息如公式所示。 fiγ= -c1(qi-qr)-c2(pi-pr) (3) 文獻[5]將第一項稱為梯度項,通過人工勢場法控制個體i與所有鄰居的距離:當距離小于給定值時,這一項表現(xiàn)為斥力,當距離大于給定值時,這一項表現(xiàn)為引力,當距離等于給定值時,這一項為0。第二項被稱為一致項,通過一致性算法與相鄰個體的速度保持一致。第三項被稱為導航項,代表群體集結(jié)的目標,這里群體集結(jié)的目標被抽象為一個虛擬的領(lǐng)航者,具有位置qr和速度pr,是整個群體預先知道的共識信息。 通過在每架無人機上運行該控制算法,就能夠使無人機在群體目標處群集,形成“蜂群”編隊,即整個群中的無人機之間將保持特定的距離,同時以目標速度運行,最終是實現(xiàn)無人機群的整體編隊控制。 通過1.1節(jié)和1.2節(jié),已經(jīng)能夠為整個無人機群體進行路徑規(guī)劃,并且群體能夠分布式自組織形成編隊,為了實現(xiàn)無人機群體的導航,還要使無人機編隊沿著規(guī)劃的路徑進行運動。本文首先將路徑規(guī)劃結(jié)果中的每個路徑點轉(zhuǎn)化為具有位置和速度信息的虛擬領(lǐng)航者的序列L1,L2……Ln,其中n為路徑點的總數(shù),然后將1.2節(jié)中無人機群集控制第三項中的虛擬領(lǐng)航者替換為該序列,從而實現(xiàn)無人機群體的分布式導航。 每個路徑點對應(yīng)的領(lǐng)航者的位置即是其對應(yīng)柵格的中心點在地圖中的位置,除最后一點即目標點對應(yīng)的領(lǐng)航者速度為0外,其他路徑點對應(yīng)領(lǐng)航者的速度大小v可作為參數(shù)根據(jù)實際導航的需要進行設(shè)定,其速度方向指向下一個路徑點,如公式所示。 (4) 當無人機起飛后,每架飛機即開始運行如2.2節(jié)所述的分布式編隊控制算法,整個群體的初始虛擬領(lǐng)航者是虛擬領(lǐng)航者序列的第一個,即由路徑起點對應(yīng)的虛擬領(lǐng)航者,其速度方向朝向路徑上第二點對應(yīng)的虛擬領(lǐng)航者,該虛擬領(lǐng)航者以速度大小v進行運動。當該虛擬領(lǐng)航者抵達下一個路徑點對應(yīng)虛擬領(lǐng)航者的位置時,虛擬領(lǐng)航者就更換為下一個路徑點對應(yīng)的虛擬領(lǐng)航者,直到抵達最后的虛擬領(lǐng)航者,即路徑終點對應(yīng)的虛擬領(lǐng)航者,導航結(jié)束,整個流程如圖2所示。 圖2 無人機群導航迭代流程圖 利用MATLAB軟件,可以構(gòu)建理想的仿真環(huán)境進行無人機編隊導航的驗證。由于四旋翼無人機可以垂直起降,本文研究的重點是編隊與導航方法,本文將四旋翼無人機看作二維空間的質(zhì)點模型,即每架無人機用一個二維平面的質(zhì)點表示,具有的屬性包括位置、速度和加速度,如公式所示。 (5) 其中:q代表無人機的位置向量,p代表無人機的速度向量,u代表無人機的加速度向量,這樣,無人機的運動學模型就被建模為二階積分模型。 仿真模擬按照時間步進行,每個時間步的長度使0.01秒。在每個時間步中,根據(jù)控制算法計算出的無人機的加速度,對無人機的速度進行更新,而后再根據(jù)速度更新無人機的位置,最后根據(jù)無人機的位置畫出圓圈即可表示無人機,畫出箭頭即可可視化無人機的速度大小。 Gazebo是支持開源機器人操作系統(tǒng)ROS的三維機器人仿真器,通過內(nèi)置的物理引擎對機器人的運動學進行仿真,同時進行包括碰撞檢測與響應(yīng)在內(nèi)的各種物理過程計算,仿真實驗效果貼近真實場景,是ROS開源社區(qū)使用的主流三維仿真器,提供了多種環(huán)境模型和機器人模型,并且支持通過插件的方式開發(fā)新的模型。 本文選取的無人機模型來自于ROS開源軟件包hector_quadrotor,實驗過程中僅在起飛時發(fā)送豎直方向速度指令,開始編隊導航后僅發(fā)送水平面的速度指令。該無人機模型以水平面的兩個正交的平移速度為控制輸入,本文為每一架飛機運行一個進程,按照0.1秒的時間步迭代執(zhí)行控制算法,計算出加速度后按照時間步計算出相應(yīng)速度指令,發(fā)送消息控制各自對應(yīng)的無人機模型。 為了驗證所提出的導航方法的有效性,本文首先在MATLAB中進行了理想情況下的二維仿真實驗,隨機初始化50架無人機,如圖3所示。其中,圓圈代表無人機,紅色的箭頭代表無人機的當前速度,連接無人機的黑色邊代表對應(yīng)的兩架無人機在通信范圍之內(nèi)。 圖3 MATLAB仿真實驗初始設(shè)置 在實驗過程中,整個群體的規(guī)劃路徑如圖4(a)中的黑色粗線所示,50架無人機的運動軌跡如如圖4(a)中紅色軌跡所示,實驗過程中的群體編隊行動過程如圖4(b)至4(d)所示。 圖4 MATLAB仿真實驗結(jié)果 如圖4所示,實驗結(jié)果表明,無人機群體能夠根據(jù)2.2節(jié)所述的控制方法形成規(guī)則的編隊,與此同時整個群體能夠沿規(guī)劃的路徑進行運動,實現(xiàn)了導航的目標,仿真結(jié)果驗證了該方法的有效性。 為了進一步驗證本文提出方法的實用性,本文在Gazebo仿真器中設(shè)置了實驗場景,針對20架四旋翼無人機開展導航實驗,其場景如圖5所示,整個場地時邊長為150米的正方形。 圖5 四旋翼無人機仿真實驗場景 20架四旋翼無人機被隨機初始化在一排建筑物的左側(cè),設(shè)置的導航的目標是讓四旋翼無人機群形成規(guī)則的編隊飛往建筑物的右側(cè),利用本文提出的方法進行導航控制,導航實驗結(jié)果如圖6所示,20架四旋翼無人機準確按照既定目標準確飛往了建筑物的右側(cè)。 圖6 四旋翼無人機仿真實驗結(jié)果 在Gazebo中,通過物理引擎仿真四旋翼無人機的運動,其速度控制器和傳感器都是非理想、有誤差的,實驗結(jié)果表明,本文提出的無人機群體導航方法在這種非理想條件下,仍然能夠控制無人機群導航到目標點,驗證了本文所提出導航方法的實用性和有效性。 本文考慮現(xiàn)實任務(wù)場景中通信受限的實際情況,在無人機之間僅進行局部通信的前提下,設(shè)計并實現(xiàn)了一套無人機群的編隊與導航方法。首先基于開源機器人操作系統(tǒng)ROS實現(xiàn)了對無人機群的路徑規(guī)劃,然后將路徑規(guī)劃與一種多智能體系統(tǒng)群集的控制方法相結(jié)合,從而使無人機能夠僅僅依據(jù)局部的鄰域信息,一邊形成蜂群編隊一邊導航到目標位置。最后,通過在MATLAB的二維理想化環(huán)境和Gazebo三維機器人仿真器環(huán)境中進行仿真實驗,驗證了所提出方法的有效性,實現(xiàn)了無人機群的編隊與導航。但是,目前的方法尚未考慮動態(tài)的障礙物躲避和路徑的重規(guī)劃等問題,解決這些問題是下一步研究的內(nèi)容。1.3 無人機群體分布式導航
2 實驗平臺搭建
2.1 二維仿真平臺
2.2 三維機器人仿真平臺
3 實驗驗證
3.1 二維仿真實驗
3.2 四旋翼無人機仿真實驗
4 結(jié)束語