朱飛祥,王少博,邢勝偉,那文杰
(大連海事大學 航海學院, 遼寧 大連 116026)
近年來,海上水面自主船舶(Maritime Autonomous Surface Ship,MASS)逐漸成為世界各國和相關國際組織關注的熱點。[1-3]港內航行和自動靠離泊是MASS航行過程中的重要階段。[4]如何正確檢測和識別泊位碼頭,是MASS在未知港口環境中自主航行和自動靠離泊過程中面臨的一個亟待解決的問題。傳統的船用雷達由于在近距離探測中存在一些盲區,因此適合遠距離探測。攝像頭易受光線強度、雨霧環境等因素的影響。因此,對于MASS而言,需要一種實時性強、精度高的探測手段感知周圍近距離環境。目前,三維激光雷達(Light Detection and Ranging,LiDAR)由于具有精度高、更新頻率快等優點,通常應用于無人車、移動機器人在運動環境中的障礙物檢測和環境地圖構建中,取得了相關研究成果。[5]在船舶領域,PASTORE等[6]針對無人艇,對激光雷達的實用性和缺陷進行分析,并與其他種類的傳感器進行效益比較;HALTERMAN等[7]、WESSMAN[8]和STATECZNY等[9]利用激光雷達在實驗室水池或湖泊環境中進行試驗,對船舶障礙物檢測和避障場景中的感知能力、遇到的問題和挑戰進行分析;謝磊等[10]采用岸基檢測法獲取船舶激光點云數據,提出一種基于輪廓線聚類分析的船舶超吃水檢測方法;ESPOSITO等[11]針對湖泊、河流上較小的木質碼頭的幾何特征,提出一種基于激光雷達的碼頭識別算法;王貴槐等[12]針對內河環境中主要障礙物的激光數據特征,提出一種基于支持向量機(Support Vector Machine,SVM)的內河典型障礙物識別方法。
總體上看,相比對激光雷達在無人車目標檢測和識別領域的深入應用研究,在船舶領域的研究主要集中在對激光雷達的適用性、探測能力等方面的綜合性探討上。部分學者基于無人艇,在內河、湖泊環境中開展感知試驗研究,而面向沿海水域特別是基于大型商船的實船測試,利用激光雷達進行沿海港內典型目標識別的研究尚處于起步階段。本文綜合運用點云數據裁剪、點云數據過濾、點云數據聚類分割和檢測識別等方法,提出和實現基于LiDAR的沿海泊位碼頭檢測和識別算法,并在商船進出港和靠、離泊的真實場景中進行測試驗證。
本次試驗采用旋轉式多線LiDAR,其采用脈沖式飛行時間測距法,在物體反射率只有20%的情況下,測量距離可達200 m。像攝像頭一樣,LiDAR傳感器也有自己的坐標系,測量產生的數據都是基于傳感器坐標系得到的。在試驗所用LiDAR的坐標系中,x軸指向設備輸出電纜的反方向,y軸指向左,z軸指向上見圖1。
由于多線LiDAR的激光線束具有非線性、不均勻分布的特點,在相同線束條件下,一個物標越遠,掃描到的點數越少。根據試驗所用LiDAR的測距原理,LiDAR設備應放置在船體外部,以保證視線清晰,其最佳位置是艏向或兩舷,保證傳感器在最大限度無遮擋的情況下探測到碼頭實況。
本文對沿海港口內的泊位碼頭進行研究。這種碼頭是港區內最常見的水工建筑物,為大型船舶停靠、貨物裝卸和旅客上下船提供便利。這種碼頭形狀的多樣性使得研究較為復雜,因此本文對研究對象的碼頭特征作以下設定:
1) 碼頭由陸地延伸到海里,其突出部分呈長方形,上平面具有顯著的水平性,與水平面夾角小于5°。
2) 碼頭突出部分寬度不小于5 m,長度不小于50 m(保證至少1艘海船可靠泊)。
符合上述設定特征的碼頭見圖2。

圖1 LiDAR坐標系
根據LiDAR的工作原理,考慮雷達安裝位置的限制,點云數據會受船舶振動、船頂天線、桅桿和海上大霧等因素的干擾,基于3D LiDAR的泊位碼頭識別算法包括點云數據裁剪、點云數據過濾、點云數據聚類分割和檢測識別等4部分。
在船舶靠泊試驗中,LiDAR設備不可避免地會檢測到附近港口內停靠的船舶、道路、汽車、房屋和廣告牌等岸上物標以及本船上的桅桿、天線和欄桿等船舶自身干擾物標,見圖3。

圖3 船舶停靠港口碼頭時的場景
為減輕后續泊位碼頭檢測算法的計算壓力,根據相對本船安裝的LiDAR設備的方位和距離對掃描得到的點云數據進行裁剪,剔除本船自身干擾物標的信息,提高后續點云數據的處理效率。點云數據裁剪算法設計為:固定在船舶上的LiDAR在自身坐標系下掃描到的桅桿、天線和欄桿等船舶自身干擾物在任意幀中的坐標位置是固定的。因此,將某一幀中的所有點投影到LiDAR坐標系的Oxy平面上,在Oxy平面內估算船舶自身干擾物相對于LiDAR的距離和方位。在確保船舶自身干擾物不遮擋被測碼頭的情況下,通過合理設置距離和方位閾值,就能裁剪掉船舶自身的干擾物,而保留包含待測碼頭的點云數據。
在3D LiDAR獲取點云數據時,由于電磁干擾、船舶振動等環境因素的影響,在測量所得的點云數據中存在不合理的噪聲點。對原始點云數據進行裁剪并不能去除這些噪聲點,噪聲點可能遠離被測物體點云,對后續物標聚類的影響較大。因此,本文采用統計濾波器去除噪聲點,即對每個點計算其到所有臨近k個點的平均距離,假設這些距離構成高斯分布,則其形狀由均值和標準差決定。因此,平均距離在標準范圍(給定的均值和標準差)之外的點,可將其視為離群點剔除。
如圖3所示,從對場景掃描得到的點云數據看,右下角的燈樁與碼頭連接成為一體。為進一步準確分割碼頭,基于隨機采樣一致算法(Random Sample Consensus,RANSAC)對裁剪和濾波后的點云數據進行聚類分割,提取出碼頭的輪廓邊緣,這是準確計算碼頭幾何尺寸的基礎。RANSAC是從一組含有異常數據的樣本數據集中正確估計數學模型參數的迭代算法[13],該算法非常適合從雜亂的點云中檢測出某些具有特殊幾何外形的物體。本文根據泊位碼頭的特征,基于平面模型對泊位碼頭進行聚類分割。假設平面模型在空間中的表達形式為
ax+by+cz+d=0
(1)
根據評價函數估計平面是否滿足,即
(2)

(3)
(4)
在得到平面模型參數[a,b,c,d]之后,判斷其他點到平面的距離是否小于設置的距離閾值dT,若小于,則屬于內點,否則為外點。因此,可通過設置距離平面的合適高度閾值dT,包容對泊位碼頭表面點云數據的正常波動,同時將其上部超過閾值的燈樁和欄桿等作為異常點剔除,從而分割得到碼頭的水平面。
對聚類得到的物標進行幾何特征值計算。根據第1.2節給出的碼頭特征計算物標的輪廓尺寸,可采用主成分分析方法獲取物標的有向包圍盒(Oriented Bounding Box,OBB)[14],估算物標的長度和寬度,并利用第1.2節給定的泊位碼頭的幾何特征進行驗證,從而實現對泊位碼頭的識別。
在大連長海縣大長山島鴛鴦港碼頭水域進行試驗。試驗所用LiDAR使用三角支架支撐,安裝在船舶駕駛臺頂部甲板(羅經甲板)右舷,與水平面保持垂直,見圖4。
在LiDAR坐標系中,x軸指向船舶右舷外,y軸指向艏方向,z軸指向天空如圖4所示。如果不考慮船舶晃動等外界干擾因素,LiDAR坐標系中的Oxy平面將與水平面保持平行。
選取該水域的2個不同碼頭進行靠泊試驗,碼頭情況見圖5。

圖4 LiDAR安裝位置
基于開源的點云庫(Point Cloud Library, PCL)[15],采用VS2013作為開發平臺實現對泊位碼頭識別的所有算法。同時,在整個試驗過程中對相關算法進行驗證。
受LiDAR實際安裝條件的限制,船舶在航行過程中獲得的每幀360°掃描的LiDAR點云都包含船頂天線和桅桿等干擾物標。如果在港外海域,當船舶航速較快時,獲得的LiDAR點云還會受到船舶艉跡的干擾。本文選取船舶低速靠泊碼頭1過程中的一幀LiDAR原始點云數據(見圖6)進行分析。該幀LiDAR掃描得到的場景中包含艏部、天線、桅桿、船舶右舷和碼頭等物標共33 170個掃描點。
考慮到船舶在靠泊過程中,LiDAR安裝在船舶右舷(x軸指向船舶右舷,y軸指向艏部),定義在LiDAR坐標系Oxy平面上,相對方位0°為y軸指向,順時針旋轉,取值為[0,360°)。采用第2.1節的點云裁剪算法,對離坐標原點O的距離小于12 m或相對方位大于180°、小于360°的點進行裁剪,得到包含碼頭1的點云數據見圖7。與原始點云數據相比,裁剪后的點云數據共包含8 240個掃描點,大大降低了后續碼頭聚類算法的運算量。

圖6 LiDAR原始點云數據 圖7 碼頭1裁剪后的點云圖
由圖7可知:通過簡單設置距離和方位閾值對點云數據進行裁剪,不能剔除碼頭上的燈樁和護欄等物體。因此,嘗試運用聚類分割算法得到碼頭物標。為提高聚類的效果,首先用統計濾波器去除裁剪后點云數據中的噪聲點,過濾后的點云數據包含7 742個掃描點;然后運用PCL創建SACSegmentation對象,選擇基于RANSAC的平面分割模型,獲得碼頭平面。在平面聚類分割算法中,考慮到碼頭上燈樁和護欄的高度,本文設置距離閾值dT=0.3 m,得到在LiDAR坐標系下碼頭1的平面模型的空間表達式為
0.035 4x+0.047y+0.998z+7.565=0
(5)
碼頭1對應的平面樣本集中有7 742個掃描點,其中4 800個掃描點(約為62%)為內點。聚類分割出的碼頭1平面效果見圖8,該算法能較好地移除碼頭上的燈樁和護欄等干擾物標。
運用兩平面夾角余弦公式反求夾角,得到碼頭1的平面與LiDAR坐標系中的Oxy水平面z=0,即水平面之間的夾角約為3.37°,符合第1.2節給出的碼頭特征1。最后,計算物標的OBB(見圖9),得到OBB的寬為10.67 m,長為76.94 m,符合第1.2節給出的碼頭特征2。

圖8 聚類分割出的碼頭1 圖9 碼頭1的外接包圍盒
同樣,在船舶靠泊碼頭2試驗過程中,對原始LiDAR點云數據進行裁剪和過濾操作之后,運用第2.3節的算法聚類分割碼頭平面。在設置距離閾值dT=0.3 m時,計算得到碼頭2的平面模型空間表達式為
-0.059 9x+0.005 55y+0.998z+7.302=0
(6)
碼頭2對應的平面樣本集中包括3 766個掃描點,其中2 614個掃描點(約69%)是內點。該平面與LiDAR坐標系中的Oxy水平面的夾角約為3.45°,也具備顯著的水平性。最后,計算得到OBB的寬為11.02 m,長為68.06 m,符合第1.2節給出的碼頭特征。
本文面向MASS港內避障、靠離泊等應用需求,提出一個基于3D LiDAR的沿海港口泊位碼頭識別算法。該算法組合點云數據裁剪、點云數據濾波和聚類分割等幾部分,運用開源的PCL工具,結合VS2013開發平臺實現對特定種類碼頭的識別功能。該算法能有效地克服LiDAR實際安裝條件的限制,剔除天線、桅桿等物標的干擾,同時可靈活地設置所檢測泊位碼頭的幾何尺寸,且不受碼頭的燈樁、護欄等附屬物的影響,具有一定的魯棒性。最后,對2個泊位碼頭進行實船試驗,證明了該算法的準確性和有效性。
由于泊位碼頭的多樣性(例如不同碼頭形狀、碼頭上大型裝卸設備遮擋等情況),下一步需考慮搜集更多的碼頭掃描數據對算法進行完善;同時,雖然LiDAR有主動探測、不受光照影響、能獲取較為準確的物標位置和3D信息等優點,但也有受雨、雪、霧的影響無法探測被遮擋物體的缺點,因而需加強與其他數據源(例如攝像頭、電子海圖數據)之間的融合,獲取和建立不同類型碼頭的更多特征,進一步提高算法的普適性。