肖春暉,鄒媛媛,李少遠(yuǎn)
無人機(jī)具有敏捷、地面保障要求低、安全風(fēng)險(xiǎn)系數(shù)小等特性,且運(yùn)行成本較低,近年來已廣泛地應(yīng)用于民用及軍事等多個(gè)領(lǐng)域,如電力巡檢、農(nóng)業(yè)灌溉、物流配送、遙感[1-4]及情報(bào)搜集、偵查監(jiān)視、通信中繼、對地打擊等[5-8]. 在無人機(jī)的運(yùn)動(dòng)控制過程中,路徑規(guī)劃是重要的一部分.一般而言,無人機(jī)路徑規(guī)劃的目標(biāo)是在到達(dá)目標(biāo)點(diǎn)的同時(shí)盡可能最小化燃料消耗、時(shí)間消耗等因素. 在二維環(huán)境中的無人機(jī)路徑規(guī)劃類似于一般地面機(jī)器人路徑規(guī)劃[9]. 常規(guī)無人機(jī)路徑規(guī)劃的現(xiàn)有解決方案主要有Dijkstra算法[10]、基于啟發(fā)式的搜索算法A*和D*和各種其他元啟發(fā)式算法[11]、基于采樣的路徑搜索方式,包括快速擴(kuò)展隨機(jī)樹算法(RRT)[12]和隨機(jī)路標(biāo)圖算法(PRM)[13]. 對于有障礙物的情況,文獻(xiàn)[14]通過模擬人類躲避障礙的思想,制定了五項(xiàng)飛行規(guī)則,提出了基于廣度優(yōu)先和RRT結(jié)合的算法,文獻(xiàn)[15]提出了切向量矢量場引導(dǎo)和李雅普諾夫矢量場引導(dǎo)的無人機(jī)路徑規(guī)劃算法,文獻(xiàn)[16]則設(shè)計(jì)了基于神經(jīng)網(wǎng)絡(luò)和反步法的狀態(tài)反饋算法.
對于有多個(gè)目標(biāo)點(diǎn)需要訪問的無人機(jī)路徑規(guī)劃,可以將其轉(zhuǎn)化為旅行商問題(traveling salesman problem, TSP)或車輛路徑問題(vehicle routing problem, VRP). 文獻(xiàn)[17]針對無人機(jī)運(yùn)輸任務(wù)提出了兩個(gè)多旅途VRP,分別使用了混合整數(shù)線性規(guī)劃算法和模擬退火算法,以解決時(shí)間窗約束及時(shí)間窗和預(yù)算約束問題,并通過數(shù)值仿真與效果分析進(jìn)行了算法驗(yàn)證. 文獻(xiàn)[18]針對具有曲率約束的無人機(jī)的TSP,提出了一種基于自組織映射網(wǎng)絡(luò)(self organizing map, SOM)的非監(jiān)督式學(xué)習(xí)算法,解決了鄰域約束的多個(gè)體Dubins旅行商問題,并能夠在傳統(tǒng)的計(jì)算資源上以秒為單位快速地提供解決方案,使得該方法適合于在線規(guī)劃. 上述工作均未考慮障礙區(qū)域,但實(shí)際中存在的飛行障礙往往導(dǎo)致現(xiàn)有方案規(guī)劃的路徑不可行.
本文考慮解決有障礙區(qū)域限制的多無人機(jī)遍歷多目標(biāo)點(diǎn)的路徑規(guī)劃問題,難點(diǎn)主要體現(xiàn)在兩方面:一方面是如何求解每個(gè)無人機(jī)的訪問順序和各點(diǎn)的航向角,得到適用于無人機(jī)的路徑;另一方面是如何處理路徑與障礙區(qū)域的約束. 本文的結(jié)構(gòu)如下:首先建立了無人機(jī)模型,確定無人機(jī)路徑所用曲線;其次確定了優(yōu)化問題. 針對該優(yōu)化問題,使用改進(jìn)的遺傳算法求得所需要的無人機(jī)數(shù)量及各無人機(jī)對應(yīng)的路徑,并判斷所獲得路徑是否存在障礙區(qū)域約束,若存在則使用Dubins-RRT算法進(jìn)行調(diào)優(yōu)以得到滿足約束的路徑. 最后,通過仿真算法案例證明了本文方法的有效性.
選取小型固定翼多無人機(jī)(unmanned aerial vehicle,UAV)作為本文的研究對象,為保證規(guī)劃的路徑平滑可飛,便于UAV后續(xù)的運(yùn)動(dòng)控制,使用Dubins模型來描述固定翼UAV簡化的動(dòng)力學(xué)特性,滿足了無人機(jī)的曲率約束[19].
Dubins模型的公式如下所示:
(1)
式中,(xA,yA)為UAV在二維平面直角坐標(biāo)系下的橫縱坐標(biāo),θA為UAV的轉(zhuǎn)向角,vA和rA分別為UAV的飛行速度和最小轉(zhuǎn)彎半徑,uA為控制轉(zhuǎn)向的輸入.(xA,yA,θA)∈R3表示Dubins運(yùn)動(dòng)體的狀態(tài),可以稱之為Dubins狀態(tài)(Dubins Configuration). 通過Dubins模型可以看出,當(dāng)uA>0時(shí),Dubins運(yùn)動(dòng)體相對于當(dāng)前運(yùn)動(dòng)方向左轉(zhuǎn)彎,而uA<0時(shí),Dubins運(yùn)動(dòng)體相對于當(dāng)前運(yùn)動(dòng)方向向右轉(zhuǎn)彎,當(dāng)uA=0時(shí),Dubins運(yùn)動(dòng)體保持當(dāng)前運(yùn)動(dòng)方向直行. 同時(shí),rA限制了Dubins運(yùn)動(dòng)體轉(zhuǎn)彎的最小半徑,當(dāng)|uA|=1時(shí),表示Dubins運(yùn)動(dòng)體以最小轉(zhuǎn)彎半徑向左或者向右轉(zhuǎn).
Dubins路徑表示從起始Dubins狀態(tài)到目標(biāo)Dubins狀態(tài)的符合Dubins動(dòng)力學(xué)模型的最短路徑.文獻(xiàn)[19]證明,當(dāng)給定任意起始Dubins狀態(tài)和目標(biāo)Dubins狀態(tài)時(shí),存在六種類型的最短路徑,根據(jù)運(yùn)動(dòng)模式的不同稱它們?yōu)? RSR, LSL, RSL, LSR, RLR, LRL. 其中,R、L、S分別代表右轉(zhuǎn)、左轉(zhuǎn)、直行. 圖1分別給出了在這兩個(gè)Dubins狀態(tài)下的RSR路徑和RLR路徑示例,其中SP表示起始Dubins狀態(tài),TP表示目標(biāo)Dubins狀態(tài). 在尋找兩個(gè)Dubins狀態(tài)之間的Dubins路徑時(shí),需要計(jì)算這六種Dubins路徑各自的長度(部分情況下可能存在某些種類路徑不存在),其中長度最短的路徑就是這兩個(gè)Dubins狀態(tài)下的Dubins路徑.
圖1 Dubins路徑Fig.1 Dubins path
指揮中心擁有K個(gè)UAV,UAV需要到達(dá)N個(gè)目標(biāo)點(diǎn)并裝載一定量的任務(wù)物品以完成任務(wù). 安排合理科學(xué)的UAV遍歷路徑,使得一定數(shù)量的UAV從指揮中心出發(fā),在總飛行成本最低的目標(biāo)下,完成任務(wù)后再返回到指揮中心.
UAV在飛行的過程中,可能遇到影響其飛行的障礙物或禁飛區(qū)域(兩者統(tǒng)稱為障礙區(qū)域),所規(guī)劃的路徑應(yīng)該避開這些障礙區(qū)域.
為構(gòu)建問題的數(shù)學(xué)模型,做出一定的假設(shè):只有一個(gè)指揮中心,且所有的UAV均以指揮中心為起點(diǎn),執(zhí)行完各自的任務(wù)后返回指揮中心;每一個(gè)任務(wù)點(diǎn)對于UAV執(zhí)行該點(diǎn)任務(wù)時(shí)所需要的裝備、物資是已知且不變的,且小于UAV的額定載重量指揮中心和任務(wù)點(diǎn)的位置已知;障礙區(qū)域提前已知且靜態(tài)的.
為了更方便地描述模型,首先給出使用到的符號的定義.
N:任務(wù)點(diǎn)集合;
K:UAV集合,下標(biāo)用表示;
O:指揮中心,下標(biāo)用表示;
C:UAV單位距離所耗費(fèi)的飛行成本;
dij:從任務(wù)點(diǎn)i到j(luò)的Dubins距離;
qi:執(zhí)行任務(wù)點(diǎn)處任務(wù)所需的裝備物資量;
Q:UAV的額定裝備物資載重量;
D:UAV飛行距離上限;
Obs:障礙區(qū)域集合,每個(gè)障礙區(qū)域用圓來表示;
Φik:當(dāng)xijk=1時(shí),UAVk在任務(wù)點(diǎn)i的航向角.
針對該問題,給定目標(biāo)函數(shù)為:
(2)
s.t.
(3)
(4)
(5)
(6)
(7)
(8)
path(X,Y,Φ)Obs
(9)
其中,式(2)為目標(biāo)函數(shù);式(3)保證了每次任務(wù)都以指揮中心為起點(diǎn)和終點(diǎn);式(4)保證每個(gè)任務(wù)都被執(zhí)行且僅執(zhí)行一次;式(5)表示額定載重量約束;式(6)表示所有使用的UAV數(shù)量少于指揮中心所擁有的數(shù)量;式(7)表示任務(wù)點(diǎn)的總數(shù)為N;式(8)表示UAV最大距離約束;式(9)表示障礙區(qū)域約束,即形成的所有路徑都不經(jīng)過障礙區(qū)域.
在節(jié)2.2中形成的NP-hard的優(yōu)化問題中,由于約束條件復(fù)雜繁多,問題規(guī)模較大,同時(shí)決策變量具有離散性,且Dubins路徑具有組合性,使得傳統(tǒng)的優(yōu)化算法不便于求解該問題. 遺傳算法具有強(qiáng)大的并行搜索能力,自學(xué)習(xí)性、自組織性和自適應(yīng)性強(qiáng),并且不易陷入局部最優(yōu). 本節(jié)首先使用遺傳算法求解優(yōu)化問題得到路徑,對得到的路徑進(jìn)行障礙區(qū)域檢測,若不滿足障礙約束,則通過Dubins-RRT算法進(jìn)行調(diào)優(yōu)以滿足約束.
遺傳算法主要包括染色體編碼、初始化、適應(yīng)性函數(shù)設(shè)置、選擇、進(jìn)化等步驟. 在交叉步驟中,通常是對染色體中的元素隨機(jī)交叉,本文在交叉過程中通過設(shè)計(jì)新的交叉算子以改進(jìn)遺傳算法,在保留了父代優(yōu)秀染色體的同時(shí)加快了收斂速度. 改進(jìn)的遺傳算法各個(gè)步驟如下.
1)編碼
在遺傳算法中,一條染色體就是一個(gè)解.由于xijk,yki,Φik均存在不少的約束條件,設(shè)定一個(gè)合適的染色體編碼直接處理掉這些約束尤為重要. 使用[S,φ]來表示一個(gè)解,它們都是N+K+1維的向量,其中S表示UAV對于V的訪問順序,φ表示UAV在S所對應(yīng)點(diǎn)處的航向角.S由K+1個(gè)0(首尾一定是0)和1到N的排列組成,其中0表示指揮中心,自然數(shù)表示任務(wù)點(diǎn),兩個(gè)0之間的元素代表了一條UAV訪問路徑的順序. 例如,S=[0,4,1,0,2,5,0,3,0],[0,4,1,0]代表UAV1從指揮中心->任務(wù)點(diǎn)4->任務(wù)點(diǎn)1->指揮中心的路徑,[0,2,5,0]以及[0,3,0]表示UAV2和UAV3的路徑. 如果S中包含兩個(gè)連續(xù)的0即[0,0],則表示該UAV未被使用.
2)初始化
種群數(shù)量popsize、迭代次數(shù)maxiter都與N、K有關(guān)系,通常情況下兩種參數(shù)設(shè)置在50~200之間,此外,還有交叉概率、變異概率也需要根據(jù)實(shí)際調(diào)試結(jié)果進(jìn)行修正.
3)適應(yīng)度函數(shù)
4)選擇
選擇操作以一定概率從舊群體中選擇個(gè)體到新群體. 選擇個(gè)體的概率與適合度值相關(guān). 個(gè)體適應(yīng)度越大,被選中的概率越大.
5)交叉與變異
交叉時(shí)將[S,φ]綁定,同時(shí)進(jìn)行交換. 為了保留父代的優(yōu)秀子路徑,設(shè)計(jì)新的交叉算子,具體步驟如下:
Step1:分別在兩個(gè)父染色體上隨機(jī)選取一段子路徑.如圖2所示.
圖2 隨機(jī)選擇子路徑Fig.2 Randomly select subpath
Step2:前置父代中被選擇的子路徑,如圖3所示.
圖3 前置子路徑Fig.3 Put subpath in front
Step3:將父染色體1中子路徑A保留,然后將父染色體2中子路徑A沒有的自然數(shù)以及最后一位0按照父染色體2的順序添加到子路徑A的后面,同樣方法得到子染色體2. 如圖4所示.
圖4 初步得到子染色體Fig.4 Preliminary chromosome
Step4:對于子染色體1,空缺的0(對應(yīng)的航向角隨機(jī)生成)隨機(jī)插入任何一個(gè)位置,并計(jì)算插入每個(gè)位置時(shí)對應(yīng)的適應(yīng)度函數(shù),選擇最優(yōu)的染色體作為最終得到的子染色體1,同樣的方法得到子染色體2.
變異算子則只改變航向角的值,隨機(jī)選擇幾個(gè)航向角進(jìn)行變異,若得到更優(yōu)的染色體則進(jìn)行替換.
為了衡量UAV數(shù)量、任務(wù)點(diǎn)數(shù)量、種群數(shù)量等參數(shù)對算法的影響,對本節(jié)介紹的改進(jìn)的遺傳算法進(jìn)行簡要的時(shí)間復(fù)雜度分析. 在編碼過程中提到染色體中S、φ都是N+K+1維,為了簡便,記n=N+K+1.求適應(yīng)度階段的時(shí)間復(fù)雜度為O(popsize×n),選擇階段為O(popsize×logpopsize),交叉階段為O(popsize2),變異階段為O(popsize).故對整個(gè)改進(jìn)遺傳算法來說,其時(shí)間復(fù)雜度為:
O(maxiter)×
[O(popsize×n)+O(popsize×logpopsize)+
O(popsize2)+O(popsize)]=
O[maxiter×popsize×(popsize+n)]
因此,可以看出,迭代次數(shù)、種群數(shù)量、任務(wù)點(diǎn)數(shù)量、UAV數(shù)量都是影響改進(jìn)遺傳算法的因素,其中,由于種群數(shù)量是二次項(xiàng),所以為影響整個(gè)算法時(shí)間復(fù)雜度的最重要因素.
為了方便描述,將由兩個(gè)Dubins狀態(tài)得到的Dubins路徑稱為“基本Dubins路徑”,由多個(gè)“基本Dubins路徑”連接得到的稱為“復(fù)合Dubins路徑”. 顯然,每個(gè)UAV的路徑都是復(fù)合Dubins路徑. 所以,要對UAV的路徑進(jìn)行障礙區(qū)域檢測,只需要對每個(gè)基本Dubins路徑進(jìn)行檢測,而每個(gè)基本Dubins路徑都是有線段和弧組成的,所以只需要對每條線段和弧進(jìn)行檢測.
對線段來說,首先判斷線段所在的直線是否與障礙區(qū)域有交點(diǎn),如果有交點(diǎn)則進(jìn)一步判斷交點(diǎn)是否在線段上;對于弧來說,首先補(bǔ)全弧所在的圓,判斷該圓是否與障礙區(qū)域相交,若相交則進(jìn)一步判斷交點(diǎn)是否在弧上. 圖5給出了具體實(shí)例,黃色代表障礙區(qū)域,紅色實(shí)線代表線段和弧,紅色虛線代表輔助的直線和圓,黑色實(shí)心點(diǎn)表示輔助線與障礙區(qū)域的交點(diǎn),藍(lán)色實(shí)心點(diǎn)表示線段和弧與障礙區(qū)域的交點(diǎn).
圖5 對線段和弧的障礙區(qū)域檢測Fig.5 Detection for line and arc
結(jié)合對線段和弧進(jìn)行障礙檢測的方法,就可以對基本Dubins路徑進(jìn)行障礙區(qū)域檢測. 圖6給出了針對兩類基本Dubins路徑檢測的實(shí)例,一類是針對弧-直線-弧(Circle-Straight-Circle, CLC,包含LSL,LSR,RSL,RSR)種類曲線的障礙區(qū)域檢測方法,另一類是針對弧-弧-弧(Circle-Circle-Circle, CCC,包含LRL,RLR)種類曲線的障礙區(qū)域檢測方法.
圖6 對基本Dubins路徑的障礙區(qū)域檢測Fig.6 Detection for basic Dubins path
對得到的UAV路徑中的每一段基本Dubins路徑進(jìn)行障礙區(qū)域檢測,然后對經(jīng)過障礙區(qū)域的基本Dubins路徑進(jìn)行重新規(guī)劃,以得到安全路徑.
RRT算法是一種速度較快的路徑規(guī)劃算法,能快速擴(kuò)展以充分地搜索可行(無障礙)空間,并構(gòu)建一個(gè)從初始點(diǎn)向目標(biāo)點(diǎn)探尋可行路徑的樹T(V;E),其中V代表節(jié)點(diǎn),E代表邊. RRT算法中用于探索空間的并非一定是二維頂點(diǎn),也可以是Dubins狀態(tài),邊也可以是Dubins曲線,該樹用T(Vd;Ed)來表示,在擴(kuò)展過程中Vd和Ed不斷增加. 為此,本文針對Dubins路徑改進(jìn)RRT算法,稱其為“Dubins-RRT”算法. 算法流程如下:
1)初始化樹,T(Vd;Ed),dinit作為樹的根節(jié)點(diǎn),設(shè)定選擇目標(biāo)Dubins狀態(tài)dgoal作為隨機(jī)目標(biāo)點(diǎn)的概率pg;
2)是否到達(dá)目標(biāo)dgoal,否則專向步驟3),是則表明樹已構(gòu)造完成,轉(zhuǎn)向步驟7);
3)生成隨機(jī)數(shù)p∈[0,1],若p≤pg則轉(zhuǎn)向步驟4),否則轉(zhuǎn)向步驟5);
4)選擇目標(biāo)dgoal作為drand,從Vd的所有節(jié)點(diǎn)中,找出離drand最近的節(jié)點(diǎn),稱為dnear;
5)生成一個(gè)隨機(jī)節(jié)點(diǎn)作為drand,從Vd的所有節(jié)點(diǎn)中,找出離drand最近的節(jié)點(diǎn),稱為dnear;
6)判斷從dnear到drand的路徑lnr是否與障礙區(qū)域沖突,若不沖突則將drand,lnr分別作為節(jié)點(diǎn)和邊添加到隨機(jī)樹中,完成一次樹的擴(kuò)展,轉(zhuǎn)向步驟2),若沖突則轉(zhuǎn)向步驟3);
7)從構(gòu)造完成的隨機(jī)樹中,確定一條從dinit到dgoal的路徑.
圖7展示了給定兩個(gè)Dubins狀態(tài)以及障礙區(qū)域(黑色實(shí)心圓),使用Dubins-RRT的擴(kuò)展過程,(a)中隨機(jī)樹只新增了兩個(gè)節(jié)點(diǎn)和兩條邊,(b)中隨機(jī)樹已有近50個(gè)節(jié)點(diǎn)和邊,(c)中隨機(jī)樹有近200個(gè)節(jié)點(diǎn)和邊,(d)是算法結(jié)束時(shí)隨機(jī)樹的結(jié)果,紅色線條表示滿足障礙約束的路徑.
圖7 Dubins-RRT擴(kuò)展過程Fig.7 Dubins-RRT extension process
本章節(jié)通過一個(gè)具體仿真案例驗(yàn)證算法的有效性. 給定指揮中心和25個(gè)任務(wù)點(diǎn),表1給出了其相應(yīng)的坐標(biāo)位置,其中Ti表示第個(gè)任務(wù)點(diǎn),表2給出了任務(wù)的相關(guān)參數(shù)和改進(jìn)遺傳算法的相關(guān)參數(shù).
表1 指揮中心與任務(wù)點(diǎn)的坐標(biāo)Tab.1 Coordinate of center and target points
表2 相關(guān)參數(shù)設(shè)定Tab.2 Related parameters
仿真結(jié)果如圖8~9所示,紅綠藍(lán)三條線分別代表了三個(gè)UAV的路徑,黑色圓表示多個(gè)障礙區(qū)域. 圖8展示了使用改進(jìn)遺傳算法的結(jié)果,可以看出有部分路徑(T2->T14,T3->T1,T9->T24)違反了障礙區(qū)域約束,經(jīng)過局部調(diào)優(yōu)后得到的結(jié)果如圖9所示.
將本文方案結(jié)果與其他兩種方案進(jìn)行比較,兩種方案分別采用未改進(jìn)的遺傳算法(GA)和蟻群算法(ant colony optimization, ACO)求解優(yōu)化問題后進(jìn)行調(diào)優(yōu). 三種方案的結(jié)果如表3所示. 可以看出,本文方案與GA+Dubins-RRT方案相比,收斂速度提升了77%,避障后飛行成本減少了11.3%;與ACO+Dubins-RRT方案相比,收斂速度提升了122%,避障后飛行成本減少了8.9%. 綜上所述,本文提出的方案在收斂速度提升較大的同時(shí)減少了飛行成本.
圖8 求解優(yōu)化問題后路徑Fig.8 Path after solving the optimization problem
圖9 調(diào)優(yōu)后路徑Fig.9 Tuning path
表3 三種方案比較Tab.3 Comparison of three schemes
針對有障礙區(qū)域的多無人機(jī)多目標(biāo)點(diǎn)路徑規(guī)劃問題,本文采用改進(jìn)的遺傳算法求解優(yōu)化問題得到路徑,并針對不滿足障礙約束的路徑,采用Dubins-RRT算法進(jìn)行調(diào)優(yōu)重規(guī)劃,最終得到符合要求的較優(yōu)路徑. 通過與其他幾種算法的比較,證明了算法的有效性.
當(dāng)任務(wù)點(diǎn)規(guī)定了UAV執(zhí)行任務(wù)的時(shí)間段時(shí),還可以在本文的基礎(chǔ)上考慮有時(shí)間窗約束的問題. 在對這種優(yōu)化問題求解時(shí),對于無法滿足障礙區(qū)域約束的路徑需要進(jìn)行調(diào)優(yōu),然而調(diào)優(yōu)后的路徑又可能與時(shí)間窗約束矛盾. 因此,如何在考慮障礙區(qū)域的基礎(chǔ)上考慮時(shí)間窗約束的處理方法,是進(jìn)一步工作的重點(diǎn)和難點(diǎn).