Research and Implementation of Global Path Planning for Unmanned Surface Vehicle Based on Electronic Chart (基於電子海圖的水面無人艇全局路徑規划)
該論文已經在ICMIR2017會議上發表,附上springer的文獻地址 Research and Implementation of Global Path Planning for Unmanned Surface Vehicle Based on Electronic Chart,以及arXiv上的 文獻地址。本文接下來主要對論文的實現原理進行分析,在最后給出程序代碼,方便后來者研究和參考。
摘要
水面無人艇(Unmanned Surface Vehicles, USVs)是一種新型的水面智能載具,其中全局路徑規划是USV研究的關鍵技術,它可以反映出USV的智能程度。為了解決USV的全局路徑規划問題,本文基於電子海圖提出航行代價尋優(sailing cost optimization)的改進A*算法。我們使用S-57電子海圖實現八叉樹網格的環境模型建立,並基於航行安全權重、引導量和路徑曲線平滑處理,提出優化的A*算法來實現規划路徑航行安全,減少規划時間,提高路徑平滑度。仿真結果表明,環境建模方法和改進A*算法可以規划出安全合理的全局路徑。
論文實現原理
水面無人艇的全局路徑規划,是指在存在障礙物的復雜環境下,給定起始點和目標點,根據任務要求自主規划出一條能夠安全避開環境中靜態障礙物的最優路徑。
本文提出基於電子海圖的USV全局路徑規划方案,分為電子海圖解析、全局環境模型建立和路徑搜索算法三部分。通過解析電子海圖文件,提取其中的海域地理信息及礙航物等信息,將海圖信息渲染成為自主航路規划系統能夠識別的信息模式,建立由可航行網格和不可航行網格組成的環境模型。在此基礎上,本文綜合考慮航行安全性、航行距離、路徑平滑度等因素,采用基於航行代價尋優的改進A*算法來搜索環境模型中的最優路徑,實現水面無人艇的全局航路自主規划,提高水面無人艇的自主決策能力和智能化水平。
水面無人艇全局路徑規划系統無法直接利用電子海圖進行自主路徑規划,所以需要研究矢量電子海圖S-57數據結構,提取出全局路徑規划需要的海洋環境信息,裁剪無關數據,將電子海圖轉換為全局航路規划系統能夠直接使用的信息。其中,利用開源的TinyXML庫保存到xml文件中,供路徑規划系統的后續分析和處理。
在提取得到電子海圖xml文件后,通過網格化的方法把感興趣區域划分為若干塊大小相等的矩形網格,然后利用Shapely開源地理庫依次判斷網格中是否存在從電子海圖中解析的靜態障礙物(如陸地、海島、淺灘),從而將網格環境地圖划分為可航區域和不可航區域。
在實現環境建模后,全局路徑搜索算法優化的目標是在確保航行安全性的前提下,盡可能使規划的路徑航行代價最小,最大程度地減小與最短路徑、最小航行代價無關的計算量。其中,Hart等使用啟發式函數來評估從初始點到目標點的代價,在Dijkstra算法基礎上,結合啟發式函數形成新的路徑搜索策略--A*算法,通過減少搜索空間來提高搜索效率,所以更適合網格情形下的全局路徑規划。本文對傳統的A*算法進行改進,實現全局路徑的初步搜索。
網格環境下,如果直接把A*算法搜索得到的節點順序連接起來作為水面無人艇的全局規划路徑,通常會出現階梯或者鋸齒狀路徑的情況,很明顯規划的路徑並不是兩點間的期望路徑。所以,本文提出去除多余航點的曲線平滑算法,在保證安全的前提下減少路徑中不必要的航點,使多段折線化為直線,增加路徑的光滑度,規划的路徑會更加符合起止點之間的期望路徑,符合水面無人艇的運動學特性。
實現程序
因為程序是2017年4月份實現的,仍然不夠完善,可能存在bug或者性能優化點,歡迎交流和改善。程序最新代碼請參考本人github wylloong。
電子海圖解析
S-57電子海圖解析中,本文在之前文章中已經進行詳細的分析和講解,並給出源代碼,可以參見 S57-Electronic-Chart-Reading-and-Storing 和 基於8211lib庫對s57電子海圖的解析和存儲。
建立環境模型
該部分代碼可詳見github GlobalEnviStructWithSquare,如有需要請備份,可能后期會刪除掉部分程序。
改進A*算法和路徑平滑處理
該部分代碼可詳見github GlobalPathPlanWithSquare,如有需要請備份,可能后期會刪除掉部分程序。
程序示例
程序示例數據集可在 github下載,對應程序的全局路徑規划示意圖如下所示: