李 可,宋志斌,劉驍鋒,翟子正,李相杰,徐培鴻
(哈爾濱工程大學(xué)水下機(jī)器人技術(shù)重點實驗室,哈爾濱 150001)
近年來,隨著無人水面航行器技術(shù)不斷向自主化、智能化、大范圍、長續(xù)航的方向發(fā)展,常規(guī)無人水面航行器由于自身能源不足,續(xù)航力有限的問題日益凸顯,而海洋中蘊含著大量的能源,包括海洋自身的潮汐能、波浪能、溫差能和鹽差能等,還包括海洋上空的風(fēng)能、太陽能以及海水中的生物質(zhì)能。如何利用海洋中的能源來增加無人水面航行器的續(xù)航力已經(jīng)成為無人水面航行器研究中的熱點問題。
目前,無人水面航行器對海洋能源的利用方式主要有兩種:一種是通過安裝驅(qū)動裝置,如波浪翼板、風(fēng)帆等,將海洋清潔能源直接作為推力使用;另一種是通過安裝海洋能源捕獲設(shè)備,如風(fēng)力發(fā)電機(jī)、太陽能電池板,將海洋中的海洋能源轉(zhuǎn)換為其他形式的能源并儲存起來,待需要時再提供給動力系統(tǒng),這兩種無人水面航行器可以統(tǒng)稱為海洋能驅(qū)動航行器。
海洋能驅(qū)動航行器在執(zhí)行任務(wù)時選擇的航行路徑直接影響著其能源消耗量和海洋能捕獲量,路徑的優(yōu)劣也直接決定了海洋能驅(qū)動航行器續(xù)航力的高低。
2011年,莊佳園等[1]為解決無人水面航行器全局航跡規(guī)劃問題,提出一種基于電子海圖的距離尋優(yōu)Dijkstra 算法。該算法使用動態(tài)網(wǎng)格模型,克服了傳統(tǒng)Dijkstra 算法占用內(nèi)存大的問題,可以減少規(guī)劃時間,提高規(guī)劃精度。2016年,Niu等[2]為了提高無人水面航行器的續(xù)航能力,開發(fā)了一種全局節(jié)能航跡規(guī)劃算法。該算法集成了Voronoi 圖、可見性算法和Dijkstra 搜索算法,并且考慮了海流數(shù)據(jù),通過仿真試驗分析了無人水面航行器在不同任務(wù)場景下的節(jié)能效果。2019年,賈知浩[3]為解決無人水面航行器在海流影響下的續(xù)航問題,提出一種考慮海流影響的節(jié)能航跡規(guī)劃算法C-A*(A* Algorithm Considering Current Consumption,C-A*)。2019年,姚鵬等[4]為解決海洋環(huán)境下水下機(jī)器人的路徑規(guī)劃問題,提出一種基于最小一致性的路徑規(guī)劃算法。該算法能夠有效減少水下機(jī)器人的能源消耗并提高路徑平滑度。2019年,為解決人工勢場路徑規(guī)劃問題中的局部最小值和目標(biāo)不可到達(dá)問題,成昌巍等[5]提出一種基于動態(tài)窗口法的改進(jìn)策略,改進(jìn)后的人工勢場法能夠有效地使機(jī)器人逃離局部極小點并到達(dá)目標(biāo)點。2020年,為解決無人機(jī)路徑規(guī)劃算法無法兼顧路徑質(zhì)量和計算效率的問題,王延祥等[6]提出一種基于擾動流場和深度神經(jīng)網(wǎng)絡(luò)的無人機(jī)自適應(yīng)路徑規(guī)劃算法,該算法在保證路徑質(zhì)量的同時,有效減少了計算開銷。
上述算法均為經(jīng)典的無人航行器航跡規(guī)劃算法。近年來,PSO 算法和GA 算法等仿生智能算法也被廣泛地應(yīng)用于無人航行器的航跡規(guī)劃[7-9]。2018年6月,馮輝等[10]為達(dá)到在實際水流環(huán)境中減小無人水面航行器的能耗和保證無人水面航行器安全的目標(biāo),提出一種自適應(yīng)混合粒子群(AHPSO)算法用于無人水面航行器的全局航跡規(guī)劃。該方法根據(jù)海流中無人水面航行器航跡能耗等因素,建立多目標(biāo)優(yōu)化方程。針對粒子群算法早熟收斂等問題,采用自適應(yīng)原理改變慣性權(quán)重和加速系數(shù),有效提高了算法的尋優(yōu)速度和精度。
可以看出,全局路徑規(guī)劃研究取得了較多進(jìn)展,并且其逐漸由以路徑最短為標(biāo)準(zhǔn)轉(zhuǎn)變成以能耗最小為標(biāo)準(zhǔn),由恒定不變的海洋因素條件轉(zhuǎn)變?yōu)殡S時空變化的海洋因素。海洋能驅(qū)動航行器的能源最優(yōu)航跡規(guī)劃應(yīng)當(dāng)考慮的問題包含以下內(nèi)容。
(1)對海洋能的捕獲問題。伴隨無人水面航行器技術(shù)研究的深入,為提高續(xù)航力,部分無人水面航行器逐漸由常規(guī)動力向海洋能驅(qū)動轉(zhuǎn)變。目前的全局路徑規(guī)劃問題研究重點放在控制和規(guī)劃層面,這就意味著很有必要考慮海洋能能量捕獲問題。
(2)阻力導(dǎo)致的航行能耗問題。當(dāng)下,大部分全局路徑規(guī)劃方法都把路徑最短視為標(biāo)準(zhǔn),較少涉及能耗問題,這就引起無人水面航行器路徑搜尋時不可避免地加大能量消耗,特別是海洋能驅(qū)動航行器將會損耗更多的能量在航行過程中,而這直接關(guān)聯(lián)到其續(xù)航能力。
本文基于A*算法,研究海洋能驅(qū)動航行器的能源最優(yōu)航跡規(guī)劃問題,通過分析海洋能驅(qū)動航行器航行過程中能源消耗的主要因素,建立海流能源消耗模型;通過分析海洋能驅(qū)動航行器航行過程中能夠利用的海洋資源,建立風(fēng)能捕獲模型;改進(jìn)A*算法,力求保證海洋能驅(qū)動航行器在到達(dá)目標(biāo)點的同時,盡量少地消耗能源,盡量多地捕獲海洋能源,提高海洋能驅(qū)動航行器的續(xù)航能力。
A*算法的實現(xiàn)需要首先建立柵格地圖模型。本文選取我國南海部分地區(qū)的實際海域作為研究對象構(gòu)建地圖,采用柵格法構(gòu)建柵格地圖模型,如圖1所示。
圖1 柵格地圖模型Fig.1 Grid map model
為了使仿真試驗的對比效果更顯著,將海流的流向設(shè)置為以地圖中線做分割,左側(cè)流向90°方向(正北方向),右側(cè)流向–90°方向(正南方向);將風(fēng)場的流向設(shè)置為以地圖中線做分割,上側(cè)流向180°方向(正西方向),下側(cè)流向0°方向(正東方向)。風(fēng)速設(shè)置為14 m/s。
柵格地圖的尺寸為100×100(相鄰網(wǎng)格之間單位距離取為1 km),透明方格表示無人水面航行器可以航行的海域,黑色方格表示陸地、島嶼或者其他障礙物范圍。起點位置為(4,4),終點節(jié)點位置(96,20),相鄰網(wǎng)格之間單位距離取為1 km。
A*算法是一種經(jīng)典的路徑規(guī)劃方法,它主要結(jié)合了Dijkstra 搜索算法[11]與BFS 算法[12]的優(yōu)點,回避了Dijkstra 搜索算法擴(kuò)展節(jié)點過多、運行速度過慢和BFS 算法無法得到最優(yōu)路徑的缺點,能夠在較短的運行時間內(nèi)得到最優(yōu)的路徑[13]。A*算法主要引入了尋優(yōu)函數(shù)、消耗函數(shù)和啟發(fā)函數(shù),可以根據(jù)用戶的需要對尋優(yōu)函數(shù)、消耗函數(shù)、啟發(fā)函數(shù)進(jìn)行調(diào)整,從而得到不同的目標(biāo)路徑。
不同的A*算法有著不同的尋優(yōu)函數(shù)、消耗函數(shù)和啟發(fā)函數(shù)。本文引入曼哈頓距離與對角線距離研究A*算法的尋優(yōu)函數(shù)。曼哈頓距離[14]即直線距離,在本文中是指從當(dāng)前節(jié)點移到目標(biāo)節(jié)點的水平距離和豎直距離之和。
對角線距離[15]是指在曼哈頓距離的基礎(chǔ)上,將對角線節(jié)點加入了A*算法的節(jié)點集合,即海洋能驅(qū)動航行器除了沿水平和豎直方向運動外,也可以沿東北、西北、東南、西南方向運動,基于對角線距離設(shè)計的尋優(yōu)函數(shù):
式中,c表示從一個節(jié)點移動到某一個相鄰節(jié)點的消耗,可以是距離消耗,也可以是能源消耗等;Diagonal(p1,p2)表示從節(jié)點p1移動到節(jié)點p2的對角線距離,具體計算方法為:
式中,Manhattan_x(,x y)表示節(jié)點x到節(jié)點y之間沿X軸方向的曼哈頓距離,Manhattan_y(x,y)表示節(jié)點x到節(jié)點y之間沿Y軸方向的曼哈頓距離。對角線距離的引入,使A*算法在進(jìn)行路徑規(guī)劃時可沿對角線的方向進(jìn)行搜索。
本文選取某型號海洋能驅(qū)動航行器作為研究平臺,如圖2所示。本章的研究內(nèi)容集中于海洋能驅(qū)動航行器能源消耗模型和能源捕獲模型的建立??紤]海流對海洋能驅(qū)動航行器航行過程中能源消耗的影響,建立海洋能驅(qū)動航行器在海流影響下的能源消耗模型[16-17],如式(4)所示;在海洋能驅(qū)動航行器的海洋能源利用方面,考慮風(fēng)的影響,建立風(fēng)能捕獲模型,如式(6)所示。
圖2 海洋能驅(qū)動航行器Fig.2 Oceanic energy-driven vehicle
在網(wǎng)格地圖的航行過程中,假設(shè)海洋能驅(qū)動航行器從節(jié)點n移動到節(jié)點n’,海流相對于大地的速度矢量用vc2e表示,海洋能驅(qū)動航行器相對于大地的速度矢量用vu2e表示,海洋能驅(qū)動航行器相對于海流的速度矢量用vu2c表示,三者的速度矢量用下式表示:
根據(jù)計算流體力學(xué)的相關(guān)原理和公式[18],海洋能驅(qū)動航行器的能源消耗量E可以通過下式計算:
當(dāng)已知海洋能驅(qū)動航行器的航行路徑,海洋能驅(qū)動航行器與海流之間的相對速度vu2c和海流流速vc2e時,可根據(jù)式(3)和式(4)計算出該路徑的能量消耗量。
考慮海洋能驅(qū)動航行器在航行過程中捕獲的海洋能問題,本文建立風(fēng)能捕獲模型,其中,vw2e表示風(fēng)相對地球的速度矢量,海洋能驅(qū)動航行器相對于風(fēng)的速度矢量用vu2w表示,二者的速度矢量用下式表示:
計算風(fēng)的能量需要用到風(fēng)能密度公式[19]:
式中,E2表示為風(fēng)能密度;S表示風(fēng)所流經(jīng)的橫截面面積,一般表示風(fēng)力發(fā)電機(jī)風(fēng)輪所掠過的面積;vu2w表示海洋能驅(qū)動航行器相對于風(fēng)的速度;ρ表示空氣密度;t表示風(fēng)流經(jīng)海洋能驅(qū)動航行器上風(fēng)力發(fā)電機(jī)風(fēng)輪的時間。
當(dāng)已知海洋能驅(qū)動航行器的航行路徑,海洋能驅(qū)動航行器與地球之間的相對速度vu2e和風(fēng)速vw2e時,可根據(jù)上述公式計算出該路徑的風(fēng)能捕獲量。
基于第3 節(jié)介紹的海流消耗模型和風(fēng)能捕獲模型,改進(jìn)A*算法,設(shè)計考慮海流消耗和海洋能捕獲的能源最優(yōu)A*算法(N-A*),N-A*的尋優(yōu)函數(shù)表示為Estar_fun 2。海洋能驅(qū)動航行器航行過程中產(chǎn)生的能源消耗:
式中:Estar_cost 2(pstart,pcur)表示海洋能驅(qū)動航行器從起點航行到當(dāng)前節(jié)點的過程中,海流引起的能源消耗減去風(fēng)能的捕獲量后的總的能源消耗值;Estar_heuristic2(pcur,paim)表示海洋能驅(qū)動航行器從當(dāng)前節(jié)點航行到目標(biāo)點中,海流引起的能源消耗減去捕獲的風(fēng)能后的總的啟發(fā)值;μ和ν分別為它們的調(diào)節(jié)參數(shù),其中μ≥0,ν≥0,μ+ν=1。
本文引入速度堆(以下簡寫為U_stack 和U_stack2)的概念,U_stack 為海洋能驅(qū)動航行器相對大地的速度堆,U_stack2 為海洋能驅(qū)動航行器相對風(fēng)的速度堆,其結(jié)構(gòu)均如圖3所示。
圖3 海洋能驅(qū)動航行器速度堆Fig.3 Unmanned surface vehicle speed stack
以U_stack 為例,從最上層到最下層依次代表在n×n的網(wǎng)格地圖上的每個節(jié)點海洋能驅(qū)動航行器在海流作用下向東北、西北、西南、東南、北、南、西和東8 個方向行駛時相對于大地的速度,以此實現(xiàn)全局地圖中海洋能驅(qū)動航行器不同時速下對能量消耗的估算。
根據(jù)上文所述U_stack、U_stack2 對網(wǎng)格中各個節(jié)點的可能出現(xiàn)的運動方向設(shè)計能源消耗函數(shù),依次對海洋能驅(qū)動航行器當(dāng)前所在節(jié)點周圍的8 個節(jié)點,其中i?[1,8],進(jìn)行訪問,并在U_stack、U_stack2 中選擇對應(yīng)行、列和層的,利用以下公式分別計算8 個節(jié)點的能源消耗,取其中的最小值作為下一步的能量消耗,其中變量d用來表示網(wǎng)格中兩個相鄰節(jié)點之間的單步代價,變量floor則表示或所在的層數(shù)。
為了使啟發(fā)函數(shù)計算的能源消耗量盡可能地接近從當(dāng)前節(jié)點到目標(biāo)點的實際能源消耗量,啟發(fā)函數(shù)需要計算啟發(fā)路徑長度:Lheu=Dheu+Sheu和任一節(jié)點(xi,yi)與目標(biāo)點(xgoal,ygoal)之間的相對位置角度Arp。
Dheu和Sheu分別表示從當(dāng)前節(jié)點pcur(x,y)周圍的8 個節(jié)點(xi,yi)(其中i?[1,8])到目標(biāo)點(xgoal,ygoal)的斜線的距離和直線的距離,計算公式(10)如下:
計算任一節(jié)點(xi,yi)與目標(biāo)點(xgoal,ygoal)之間的相對位置角度Arp,并根據(jù)Arp的范圍來確定U_stack、U_stack2 中的層數(shù),具體規(guī)則見表1。
表1 能源消耗啟發(fā)函數(shù)算法規(guī)則表Table 1 Rule table of energy consumption heuristic function algorithm
根據(jù)(xi,yi)、Dheu、Sheu和Arp選擇對應(yīng)的啟發(fā)路徑上速度堆U_stack、U_stack2 中的所有海洋能驅(qū)動航行器相對于大地的速度{vu2e}、海洋能驅(qū)動航行器相對于風(fēng)的速度{vu2w}。接著利用式(11)依次計算從當(dāng)前節(jié)點pcur(x,y)的周圍8 個節(jié)點(xi,yi)到目標(biāo)點(xgoal,ygoal)的啟發(fā)能源消耗量,并取最小值作為下一步預(yù)估的能源消耗eheuristic2(x,y)。
將Estar_fun2 帶入A*算法,得到考慮海流消耗和風(fēng)能捕獲的能源最優(yōu)A*全局規(guī)劃算法。
通過在相同海況與相同風(fēng)場環(huán)境下傳統(tǒng)A*算法,C-A*,N-A*的能源消耗情況進(jìn)行對比,開展仿真實驗,對所提算法的可行性和有效性進(jìn)行驗證。
對于現(xiàn)實海況,海洋環(huán)境并非恒定,具有不規(guī)律不確定的特征。本文研究海洋環(huán)境的影響時采用簡化模型,假設(shè)海流是均定流,海風(fēng)為勻速風(fēng),從而討論海流和海風(fēng)對海洋能驅(qū)動航行器的能耗作用以及對全局路徑規(guī)劃的影響。
由于現(xiàn)有海洋能驅(qū)動航行器研究較少,經(jīng)驗公式還不完善,通過經(jīng)驗公式方法計算海浪干擾力,不僅方法繁瑣復(fù)雜,同時計算的干擾力誤差大,不滿足實驗要求,借助流體力學(xué)軟件(CFD)估算也會有較大誤差。并且根據(jù)文獻(xiàn)[20]可以得知若波浪波長超出船長1.5 倍及以上后,波浪干擾力會很小。故本文暫不考慮波浪產(chǎn)生的阻力影響。
仿真環(huán)境1:靜水狀態(tài)風(fēng)速為0
傳統(tǒng)A*算法的結(jié)果路徑如圖4所示,C-A*、N-A*的結(jié)果路徑如圖5 和圖6所示。
圖4 傳統(tǒng)A*算法結(jié)果Fig.4 Traditional A* algorithm results
圖5 C-A*算法結(jié)果Fig.5 C-A* algorithm results
圖6 N-A*算法結(jié)果Fig.6 N-A* algorithm results
算法對比結(jié)果見表2,可以看出,在靜水情況下 N-A*的能源消耗要少于傳統(tǒng) A*算法和C-A*算法。由于傳統(tǒng)A*算法在靜水中能夠得到最短路徑,所以傳統(tǒng)A*算法消耗的能量也比較少。另外,對比C-A*與N-A*的結(jié)果可以發(fā)現(xiàn),N-A*的能源消耗較少。綜上所述,在靜水環(huán)境下N-A*是能源最優(yōu)的算法,傳統(tǒng)A*算法次之,C-A*最差。
表2 靜水中的算法對比結(jié)果Table 2 Algorithm comparison results in still water
仿真環(huán)境2:低流速0.6m/s,低風(fēng)速6m/s
傳統(tǒng)A*算法的結(jié)果路徑同上,C-A*、N-A*的結(jié)果路徑如圖7、圖8所示,算法對比結(jié)果見表3。
圖7 海流流速0.6 m/s 中的C-A*算法結(jié)果Fig.7 C-A* algorithm result in sea current flow rate 0.6 m/s
從算法對比結(jié)果可以看出,在海流0.6 m/s的作用下,N-A*是能源最優(yōu)的算法,C-A*次之,傳統(tǒng)A*算法最差。C-A*相較傳統(tǒng)A*算法所規(guī)劃出的路徑節(jié)約了25%的能源消耗;N-A*相較傳統(tǒng)A*所規(guī)劃出的路徑節(jié)約了30%的能源消耗。
仿真環(huán)境3:高流速1.2 m/s,高風(fēng)速14m/s
傳統(tǒng)A*算法的結(jié)果路徑同上,C-A*、N-A*的結(jié)果路徑如圖9、圖10所示,算法對比結(jié)果見表4。
表4 海流流速1.2 m/s 中的算法對比結(jié)果Table 4 Comparison results of algorithms in ocean current velocity 1.2 m/s
圖9 海流流速1.2 m/s 中的C-A*算法結(jié)果Fig.9 C-A* algorithm result in sea current flow rate 1.2 m/s
圖10 海流流速1.2 m/s 中的N-A*算法結(jié)果Fig.10 N-A* algorithm result in sea current flow rate 1.2 m/s
從算法對比結(jié)果可以看出,在海流1.2m/s 的作用下,N-A*是能源最優(yōu)的算法,C-A*次之,傳統(tǒng)A*算法最差。C-A*相較傳統(tǒng)A*算法所規(guī)劃出的路徑節(jié)約了33%的能源消耗;N-A*相較傳統(tǒng)A*所規(guī)劃出的路徑節(jié)約了37%的能源消耗。
綜合以上結(jié)果可知,在海流流速不為0 的情況下,C-A*、N-A*所規(guī)劃出的路徑都要比傳統(tǒng)A*算法所規(guī)劃出的路徑要節(jié)約更多的能源,N-A*是能源最優(yōu)的算法,C-A*次之。而且C-A*和N-A*的節(jié)能效果會隨著海流的增大而增加。此外,就C-A*而言,雖然其能源消耗情況比N-A*差,但隨著海流的增加,其能源消耗情況在不斷地接近N-A*,所以在實際應(yīng)用過程中,可以根據(jù)具體情況進(jìn)行算法的選擇。
針對于海洋能驅(qū)動航行器的能源最優(yōu)航跡規(guī)劃問題,在傳統(tǒng)距離尋優(yōu)的A*算法基礎(chǔ)上,考慮海洋能驅(qū)動航行器航行過程中的能源消耗問題和海洋能利用問題,建立考慮海流影響的能源消耗模型和風(fēng)能捕獲模型,對傳統(tǒng)A*算法的消耗函數(shù)、啟發(fā)函數(shù)和尋優(yōu)函數(shù)進(jìn)行改進(jìn),完成能源最優(yōu)A*算法的研究,并對該算法進(jìn)行仿真對比驗證。主要結(jié)論如下。
(1)針對海洋能驅(qū)動航行器的全局路徑規(guī)劃問題,選取我國南海部分海域作為研究對象,采用柵格法,建立柵格地圖環(huán)境模型。
(2)利用A*算法進(jìn)行路徑規(guī)劃研究。建立考慮海流影響的能源消耗模型和風(fēng)能捕獲模型。根據(jù)上述模型,改進(jìn)A*算法的消耗函數(shù)、啟發(fā)函數(shù)和尋優(yōu)函數(shù),完成海洋能驅(qū)動航行器的能源最優(yōu)航跡規(guī)劃研究。
(3)在不同的環(huán)境狀況下,對傳統(tǒng)A*算法、C-A*、N-A*進(jìn)行仿真試驗,對比其能源消耗情況,分析表明,N-A*是能源最優(yōu)的算法,C-A*次之,傳統(tǒng)A*算法最差。隨著流速的增加,C-A*和N-A*的節(jié)能效果在不斷增加。