劉 凱,秦 鋒,徐 浩,袁志祥
(1.安徽工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽 馬鞍山 243032; 2.安徽工業(yè)大學(xué) 數(shù)理科學(xué)與工程學(xué)院,安徽 馬鞍山 243032)
工業(yè)輸氣管道作為輸送工業(yè)氣體的主要途徑,在其工作期間由于自然環(huán)境或者氣體壓力等各種因素,會(huì)出現(xiàn)管體破損、管道接口脫離而導(dǎo)致氣體泄漏事故,極易引發(fā)環(huán)境污染、大規(guī)?;馂?zāi)、人員集體中毒等重大問題,因此輸氣管道的安全巡檢工作變得尤為重要。傳統(tǒng)的管道巡檢工作主要是由人工來完成,但是依靠人工無法滿足管道巡檢的需求,一方面不僅工作量大而且效率較低,另一方面工業(yè)輸氣管道一般處于室外,相對位置較高并且比較密集,工作難度大且危險(xiǎn)系數(shù)高。隨著無人機(jī)技術(shù)的發(fā)展,多旋翼無人機(jī)的遠(yuǎn)程遙控性、高機(jī)動(dòng)性以及空中可達(dá)性已經(jīng)能夠彌補(bǔ)常規(guī)輸氣管道巡檢方法的不足,使巡檢工作變得高效便捷[1]。
多旋翼無人機(jī)在實(shí)際工程應(yīng)用中,對于長距離的飛行任務(wù),通常采用全局靜態(tài)規(guī)劃生成航跡點(diǎn)來構(gòu)建一條完整的航跡,當(dāng)無人機(jī)在執(zhí)行巡檢任務(wù)過程中遇到障礙物時(shí),以當(dāng)前位置的上一個(gè)航跡點(diǎn)為起點(diǎn),下一個(gè)航跡點(diǎn)為目標(biāo)點(diǎn),進(jìn)行局部航跡重規(guī)劃來避開威脅[2-3]。對于無人機(jī)航跡重規(guī)劃問題,國內(nèi)外研究者提出多種解決方案,包括蟻群算法[4]、遺傳算法[5]、粒子群算法[6-7]、A-star算法[8-9]、RRT算法[10]等。文獻(xiàn)[4]指出蟻群算法易與其他方法相結(jié)合、魯棒性強(qiáng),但是存在搜索效率低且易于停滯的問題。遺傳算法通過模擬自然進(jìn)化過程搜索最優(yōu)解,文獻(xiàn)[5]指出其搜索性能較好,但是路徑規(guī)劃所需時(shí)間較長,難以滿足動(dòng)態(tài)復(fù)雜環(huán)境下算法的實(shí)時(shí)性。粒子群算法具有顯著的特點(diǎn),處理一些優(yōu)化問題時(shí)能夠取得較優(yōu)結(jié)果,但是后期收斂速度慢,容易陷入局部最優(yōu)解[11]。A-star算法是靜態(tài)路網(wǎng)中求解最短路徑最有效的搜索方法,但是在執(zhí)行路徑規(guī)劃任務(wù)時(shí)需要建立數(shù)學(xué)模型,內(nèi)存需求較大,算法的實(shí)時(shí)性較低[12]。RRT算法通過隨機(jī)采樣在空間尋求路徑,不需要建立任務(wù)空間信息模型,相對于上述算法,具有實(shí)時(shí)性強(qiáng)和運(yùn)算速度快的特點(diǎn),適合在多維動(dòng)態(tài)環(huán)境下快速開拓路徑[13]。
綜合上述算法分析和工業(yè)輸氣管道空間環(huán)境的特點(diǎn),RRT算法更適用于輸氣管道的巡檢工作。盡管RRT算法能夠滿足復(fù)雜環(huán)境下的路徑規(guī)劃需求,但是由于其隨機(jī)采樣機(jī)制,無法得到較優(yōu)的結(jié)果。近些年來, 國內(nèi)外學(xué)者提出多種改進(jìn)RRT算法,雖然都能提高RRT算法的性能,但是未能結(jié)合空間環(huán)境的特點(diǎn)進(jìn)行研究,缺乏一定的應(yīng)用性。
根據(jù)RRT算法路徑規(guī)劃效率的影響因素和空間環(huán)境特點(diǎn),在隨機(jī)點(diǎn)采樣方式、路徑曲折度兩方面做出了優(yōu)化并進(jìn)行了仿真實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,改進(jìn)后的RRT算法在路徑規(guī)劃時(shí)間消耗上以及路徑代價(jià)上都有了比較明顯改善。
RRT算法是一種以樹形結(jié)構(gòu)存儲(chǔ)數(shù)據(jù)的方法,通過不斷在空間中隨機(jī)采樣來增加樹的節(jié)點(diǎn),當(dāng)樹的節(jié)點(diǎn)到達(dá)目標(biāo)點(diǎn)或者在目標(biāo)點(diǎn)規(guī)定的范圍內(nèi)時(shí)停止采樣,從目標(biāo)點(diǎn)反向搜索便可得到一條從起點(diǎn)到目標(biāo)點(diǎn)的完整路徑。RRT構(gòu)建隨機(jī)樹的具體過程如圖1所示。
圖1 RRT算法
假設(shè)圖1中Tree表示當(dāng)前空間S中的隨機(jī)樹,Pstart為無人機(jī)的航行起點(diǎn),Pgoal為目標(biāo)點(diǎn),r為目標(biāo)點(diǎn)一定范圍的半徑,Lstep為擴(kuò)展步長。以起點(diǎn)Pstart為樹的根節(jié)點(diǎn),開始在空間S中隨機(jī)選取采樣點(diǎn)Prand作為樹的擴(kuò)展方向,Prand∈S。通過遍歷隨機(jī)樹總節(jié)點(diǎn)數(shù),計(jì)算出離采樣點(diǎn)Prand最近的節(jié)點(diǎn)Pnear。在擴(kuò)展方向上選取一個(gè)距離Pnear為Lstep的Pnew節(jié)點(diǎn),Pnew∈S,將Pnear和Pnew兩節(jié)點(diǎn)之間進(jìn)行碰撞檢測,若路徑上沒有障礙物,則保留新的樹節(jié)點(diǎn)Pnew,否則刪除Pnew節(jié)點(diǎn),重新選取擴(kuò)展方向Prand。直到新產(chǎn)生的節(jié)點(diǎn)Pnew在目標(biāo)點(diǎn)Pgoal范圍內(nèi)且Pnew和Pgoal的連線上沒有障礙物或者Pnew=Pgoal時(shí)停止生長。從Pgoal反向搜索,形成從起點(diǎn)到目標(biāo)點(diǎn)的可行路徑,則完成RRT算法路徑規(guī)劃。
基于RRT算法路徑規(guī)劃的無人機(jī)不光要考慮障礙物因素,還要將周圍空間環(huán)境特點(diǎn)、無人機(jī)自身的約束條件以及RRT算法擴(kuò)展方式結(jié)合起來,通過一些特殊的改進(jìn),降低算法本身缺陷的影響后,將優(yōu)化后的RRT算法引入到特定的環(huán)境中去[14]。
多旋翼無人機(jī)路徑規(guī)劃目的是搜索一條從起點(diǎn)到目標(biāo)點(diǎn)的最優(yōu)或者近似最優(yōu)的無障礙物路徑[15],其將要執(zhí)行的飛行任務(wù)必須能夠滿足約束條件,否則無人機(jī)無法執(zhí)行該任務(wù)。
無人機(jī)能夠擁有一個(gè)完美的飛行軌跡,最重要的是擁有較強(qiáng)的避障能力,而無人機(jī)與障礙物之間的安全距離則是避障能力的保證。假設(shè)A代表無人機(jī),obs代表障礙物,無人機(jī)與障礙物的安全距離為D,則安全飛行距離可以如下:
Dis(A,obs)≥D
(1)
工業(yè)輸氣管道具有錯(cuò)綜復(fù)雜、輸送距離長的特點(diǎn),利用無人機(jī)巡檢時(shí)可能需要穿越局限性較大的區(qū)域,此時(shí)無人機(jī)的尺寸將會(huì)是影響路徑規(guī)劃的重要因素。圖2代表水平方向輸氣管道與橋梁的YOZ截面圖,管道和橋梁之間構(gòu)成一個(gè)限制空間,假設(shè)H為限制空間的高,W為限制空間的寬,圖3中T為無人機(jī)的高,L為無人機(jī)對角線最大的寬度。結(jié)合安全飛行距離,則無人機(jī)的機(jī)身尺寸約束可以表示為
圖2 橋梁與管道
圖3 無人機(jī)
H=Z2-Z1
T≤H-2D
(2)
W=Y2-Y1
L≤W-2D
(3)
當(dāng)條件滿足式(2)、式(3)則表示無人機(jī)可以通過,否則將限制空間視為障礙物。
多旋翼無人機(jī)在執(zhí)行管道巡檢任務(wù)時(shí),由于任務(wù)的特殊性,距離管道的位置必須控制在一定的范圍內(nèi),距離較遠(yuǎn)會(huì)導(dǎo)致巡檢結(jié)果出現(xiàn)誤差,距離較近會(huì)與管道碰撞發(fā)生安全事故。圖4代表水平方向的管道YOZ截面圖,圖5代表垂直方向的管道XOY截面圖,則飛行范圍如下:
圖4 水平方向
圖5 垂直方向
Z1≤HA≤Z2
Y1≤WA≤Y2
(4)
(5)
傳統(tǒng)RRT算法通過不斷地在空間中選取隨機(jī)點(diǎn)Prand來達(dá)到擴(kuò)展隨機(jī)樹的目的,并以此找到一條從起點(diǎn)Pstart到目標(biāo)點(diǎn)Pgoal的可行路徑。雖然這種擴(kuò)展方式能夠充分探索空間,保證了算法的成功性,但是由于算法的隨機(jī)性較高,導(dǎo)致生成的路徑較曲折,并且產(chǎn)生許多冗余節(jié)點(diǎn),在一定程度上會(huì)增加算法的運(yùn)算量,降低算法的實(shí)時(shí)性。
針對算法的隨機(jī)采樣機(jī)制,引入了目標(biāo)偏向采樣策略[13,16],設(shè)定一個(gè)固定值α(0≤α≤1),算法通過函數(shù)隨機(jī)產(chǎn)生一個(gè)θ(0<θ<1)。當(dāng)0<θ<α?xí)r,隨機(jī)點(diǎn)Prand為空間的任意一點(diǎn),當(dāng)α≤θ<1時(shí),隨機(jī)點(diǎn)Prand=Pgoal,朝著目標(biāo)點(diǎn)方向擴(kuò)展隨機(jī)樹。若遇到障礙物,則將固定值α設(shè)為1,提高避開障礙物的概率,當(dāng)在α=1下產(chǎn)生一個(gè)新的樹節(jié)點(diǎn)Pnew時(shí),重新將固定值設(shè)定為原來的α,重復(fù)上述操作。這種優(yōu)化思想使傳統(tǒng)RRT算法在工業(yè)輸氣管道的場景中更加具有目標(biāo)性,降低算法的運(yùn)算時(shí)間,提高算法的實(shí)時(shí)性和收斂速度,也可降低隨機(jī)樹的節(jié)點(diǎn)數(shù)。
對于輸氣管道巡檢任務(wù),為了保證巡檢結(jié)果的正確率,無人機(jī)的飛行路徑在不碰撞障礙物的前提下,必須盡可能貼近管道,則隨機(jī)點(diǎn)的取值必然有一個(gè)范圍,如式(6)、式(7)所示。假設(shè)隨機(jī)點(diǎn)Prand在三維空間中坐標(biāo)為(xrand,yrand,zrand),當(dāng)管道處于水平方向時(shí),則根據(jù)飛行范圍約束可知:
Prand=(xrand,WA,HA)
(6)
當(dāng)管道處于垂直方向時(shí),則根據(jù)飛行范圍約束可知:
Prand=(WA,HA,zrand)
(7)
隨機(jī)樹Tree的擴(kuò)展方式是從總節(jié)點(diǎn)數(shù)中找出距離隨機(jī)點(diǎn)Prand最近的Pnear節(jié)點(diǎn),再以擴(kuò)展步長Lstep在Prand方向上生成一個(gè)新的節(jié)點(diǎn)Pnew,最近點(diǎn)的計(jì)算公式和新節(jié)點(diǎn)坐標(biāo)的計(jì)算公式如式(8)、式(9)所示:
Dis(Pnear,Prand)≤Dis(Pi,Prand)
(8)
(9)
其中,Pi表示Tree的第i個(gè)樹節(jié)點(diǎn),可知隨機(jī)樹Tree={Pi|i=1,2,3,…,M},M為總節(jié)點(diǎn)數(shù),Lstep為擴(kuò)展步長,Dis(Prand,Pnear)為Prand和Pnear的歐氏距離。若節(jié)點(diǎn)Pnew滿足約束條件并且Pnear和Pnew連線上沒有障礙物,則將節(jié)點(diǎn)Pnew添加到隨機(jī)樹Tree中。
無人機(jī)的飛行軌跡無論是基于全局靜態(tài)規(guī)劃還是局部重規(guī)劃,都是通過航跡點(diǎn)構(gòu)成的,因此真正規(guī)劃的是這些航跡點(diǎn)[17]。對于傳統(tǒng)RRT算法,雖然在其隨機(jī)點(diǎn)選取上引入了目標(biāo)偏向采樣策略,但是最后生成的路徑從無人機(jī)飛行效率方面考慮,仍然存在節(jié)點(diǎn)多、曲折度大的問題。
文獻(xiàn)[18]中提出了一種帶路徑修正的啟發(fā)式RRT,由終節(jié)點(diǎn)開始,通過逐步迭代的方式對啟發(fā)式RRT生成的路徑進(jìn)行優(yōu)化,更新各節(jié)點(diǎn)的父節(jié)點(diǎn),直到父節(jié)點(diǎn)無法迭代時(shí)結(jié)束[18]。受到文獻(xiàn)[18]的啟發(fā),針對工業(yè)輸氣管道巡檢工作的特點(diǎn),提出一種迭代試探的優(yōu)化方法,主要思想是通過對路徑裁剪和平滑處理,降低飛行路徑代價(jià),提高飛行效率。
假設(shè)圖6中有4個(gè)連續(xù)的航跡點(diǎn),按順序分別為P1、P2、P3、P4,其中Bn為△P1P2P3底邊P1P3的中點(diǎn),P2Bn為△P1P2P3的中線,Bj為中線P2Bn上的點(diǎn),B1=P2。路徑優(yōu)化步驟如下:
圖6 路徑優(yōu)化
Step1:首先以P1為起點(diǎn)與P2、P3組成△P1P2P3,在其中線P2Bn上取n個(gè)均勻點(diǎn),n的取值與步長Lstep的大小有關(guān),兩者為正比關(guān)系。
Step2:選取均勻點(diǎn)中的任意點(diǎn)Bj依次分別與P1、P3連接,其中j的取值順序?yàn)閧n,n-1,n-2,…,1}。
Step3:對連接線P1Bj和BjP3分別進(jìn)行碰撞檢測和約束條件檢查,若有任何一條線不滿足條件,則j-1,直到第一次兩條線同時(shí)滿足條件時(shí)結(jié)束,此時(shí)j的取值可分為:
(1)當(dāng)j=n時(shí),刪除P2,航跡點(diǎn)順序更新為P1、P3、P4,起點(diǎn)P1不變,與P3、P4組成△P1P3P4,進(jìn)行下一段的優(yōu)化操作。
(2)當(dāng)j≠n時(shí),則將P2替換成Bj,航跡點(diǎn)順序更新為P1、Bj、P3、P4,接著以Bj為起點(diǎn)與P3、P4組成△BjP3P4,進(jìn)行下一段的優(yōu)化操作。
在上述步驟中,步驟1、步驟2的作用是建立優(yōu)化模型,步驟3主要是對路徑的裁剪和平滑處理,當(dāng)裁剪條件不充分時(shí),通過角度的變化近似達(dá)到路徑平滑的效果。從路徑的第一個(gè)節(jié)點(diǎn)開始,不斷地重復(fù)執(zhí)行上述操作,刪除多余路徑,增加拐角度數(shù),直到路徑的終點(diǎn),則優(yōu)化處理完成。
仿真實(shí)驗(yàn)環(huán)境:操作系統(tǒng)Windows 10,處理器AMD Ryzen 3 1200,主頻3.10 GHz,內(nèi)存8 GB,編譯工具M(jìn)atlab R2015b。
為了讓實(shí)驗(yàn)結(jié)果更準(zhǔn)確,基于工業(yè)輸氣管道環(huán)境特點(diǎn)進(jìn)行地圖建模,如圖7、圖8所示。
在圖7中,圓柱體表示水平方向的工業(yè)輸氣管道,obs1和obs3表示固定障礙物,obs2表示突發(fā)威脅,bridge代表需要經(jīng)過的橋梁,start和goal分別為起點(diǎn)和目標(biāo)點(diǎn),同時(shí)也是兩個(gè)相鄰的航跡點(diǎn),此時(shí)該空間S={(x,y,z)│0≤x≤300,-10≤y≤160,-10≤z≤80},起點(diǎn)和目標(biāo)點(diǎn)的坐標(biāo)分別為(10,80,13)和(290,80,13)。
圖7 水平地圖模型
在圖8中,圓柱體表示垂直方向的工業(yè)輸氣管道,obs表示突發(fā)威脅,start和goal分別起點(diǎn)和目標(biāo)點(diǎn),同時(shí)也是兩個(gè)相鄰的航跡點(diǎn),此時(shí)空間S={(x,y,z)│0≤x≤250,-10≤y≤160,-10≤z≤160},起點(diǎn)和目標(biāo)點(diǎn)的坐標(biāo)分別為(105,80,13)和(105,80,160)。
圖8 垂直地圖模型
為了驗(yàn)證改進(jìn)RRT算法的性能,按照表1中的參數(shù)設(shè)置與傳統(tǒng)RRT算法、帶路徑修正的啟發(fā)式RRT算法[18]分別在圖7、圖8所示的地圖模型中進(jìn)行了仿真實(shí)驗(yàn),其中圖7分為橋梁可通過和不可通過兩種實(shí)驗(yàn)場景。
表1 參數(shù)設(shè)置
在圖9—圖11中,各分圖分別為傳統(tǒng)RRT算法、啟發(fā)式RRT算法和改進(jìn)RRT算法路徑規(guī)劃結(jié)果圖,表2—表4是路徑規(guī)劃500次后得到的規(guī)劃時(shí)間、路徑節(jié)點(diǎn)數(shù)和路徑長度的平均值和方差,其中表4中為了更好地展示改進(jìn)RRT和啟發(fā)式RRT規(guī)劃時(shí)間的方差,將值擴(kuò)大了1 000倍。
表2 橋梁可通過數(shù)據(jù)
表3 橋梁不可通過數(shù)據(jù)
表4 垂直管道數(shù)據(jù)
(a)傳統(tǒng)RRT算法
(a)傳統(tǒng)RRT算法
(a)傳統(tǒng)RRT算法
如圖9—圖11所示,雖然3種算法都能找到一條從起點(diǎn)到達(dá)目標(biāo)點(diǎn)的無障礙路徑,但是傳統(tǒng)RRT算法的路徑曲折度和長度都要遠(yuǎn)遠(yuǎn)的大于啟發(fā)式RRT算法和改進(jìn)RRT算法,并且啟發(fā)式RRT算法和改進(jìn)RRT算法相比較,啟發(fā)式RRT算法的路徑存在局部曲折度高的現(xiàn)象。
再結(jié)合表2—表4中的實(shí)驗(yàn)數(shù)據(jù)可知,改進(jìn)RRT算法和啟發(fā)式RRT算法在時(shí)間消耗、節(jié)點(diǎn)數(shù)和路徑長度上的平均值和方差都要遠(yuǎn)遠(yuǎn)小于傳統(tǒng)RRT算法;改進(jìn)RRT算法和啟發(fā)式RRT算法相比,時(shí)間消耗、路徑長度平均值和方差在總體上前者要小于后者,但是在表3中路徑長度的方差前者相對較大,并且在節(jié)點(diǎn)數(shù)上平均值和方差前者也要大于后者。
構(gòu)成這種數(shù)據(jù)現(xiàn)象的原因一方面是改進(jìn)RRT算法和啟發(fā)式RRT算法針對傳統(tǒng)RRT算法的不足都做出了改進(jìn),前者以一定的概率將目標(biāo)點(diǎn)goal選為采樣點(diǎn),引導(dǎo)隨機(jī)樹向目標(biāo)點(diǎn)goal方向擴(kuò)展,同時(shí)在遇到障礙物時(shí)修改α的值,提高了算法搜索能力,可以快速地找到目標(biāo)點(diǎn)goal;后者利用結(jié)合目標(biāo)信息的啟發(fā)式方法,通過在候選節(jié)點(diǎn)中尋找距離目標(biāo)點(diǎn)goal最近的節(jié)點(diǎn)作為隨機(jī)樹的采樣點(diǎn),雖然能夠避免算法隨機(jī)性大的問題,但是在候選節(jié)點(diǎn)選取上花費(fèi)了大量的時(shí)間且也有一定的隨機(jī)性。另一方面,改進(jìn)RRT算法和啟發(fā)式RRT算法都加入了路徑優(yōu)化處理,前者通過裁剪和增大角度的方式來優(yōu)化路徑,相比較于后者利用更新父節(jié)點(diǎn)的方式優(yōu)化路徑,通過局部角度的變化可以更好地繞開障礙物,雖然節(jié)點(diǎn)數(shù)較多且受障礙物的大小影響較大,但是路徑長度短而平滑。
綜上可得,在非特殊空間環(huán)境中,改進(jìn)RRT算法和傳統(tǒng)RRT算法及帶路徑修正的啟發(fā)式RRT算法相比,能夠快速地規(guī)劃出一條路徑短且平滑的路徑。
為了多旋翼無人機(jī)在執(zhí)行工業(yè)輸氣管道巡檢任務(wù)時(shí),能夠快速地規(guī)劃出一條較優(yōu)的避障路徑,針對傳統(tǒng)RRT算法存在的問題,提出一種結(jié)合了目標(biāo)偏向采樣策略和路徑優(yōu)化的改進(jìn)RRT算法,并在不同的管道地圖模型中和傳統(tǒng)RRT算法、帶路徑修正的啟發(fā)式RRT算法進(jìn)行了仿真實(shí)驗(yàn)對比。實(shí)驗(yàn)結(jié)果表明:改進(jìn)后的算法既降低了傳統(tǒng)RRT算法隨機(jī)性,又保留了算法的搜索能力,加快了算法的收斂速度;同時(shí)優(yōu)化了路徑,使得路徑更短且平滑,能夠滿足工業(yè)輸氣管道巡檢工作的需求。
重慶工商大學(xué)學(xué)報(bào)(自然科學(xué)版)2021年6期