朱飛祥,王少博,邢勝偉,那文杰
(大連海事大學(xué) 航海學(xué)院, 遼寧 大連 116026)
近年來(lái),海上水面自主船舶(Maritime Autonomous Surface Ship,MASS)逐漸成為世界各國(guó)和相關(guān)國(guó)際組織關(guān)注的熱點(diǎn)。[1-3]港內(nèi)航行和自動(dòng)靠離泊是MASS航行過(guò)程中的重要階段。[4]如何正確檢測(cè)和識(shí)別泊位碼頭,是MASS在未知港口環(huán)境中自主航行和自動(dòng)靠離泊過(guò)程中面臨的一個(gè)亟待解決的問(wèn)題。傳統(tǒng)的船用雷達(dá)由于在近距離探測(cè)中存在一些盲區(qū),因此適合遠(yuǎn)距離探測(cè)。攝像頭易受光線強(qiáng)度、雨霧環(huán)境等因素的影響。因此,對(duì)于MASS而言,需要一種實(shí)時(shí)性強(qiáng)、精度高的探測(cè)手段感知周圍近距離環(huán)境。目前,三維激光雷達(dá)(Light Detection and Ranging,LiDAR)由于具有精度高、更新頻率快等優(yōu)點(diǎn),通常應(yīng)用于無(wú)人車、移動(dòng)機(jī)器人在運(yùn)動(dòng)環(huán)境中的障礙物檢測(cè)和環(huán)境地圖構(gòu)建中,取得了相關(guān)研究成果。[5]在船舶領(lǐng)域,PASTORE等[6]針對(duì)無(wú)人艇,對(duì)激光雷達(dá)的實(shí)用性和缺陷進(jìn)行分析,并與其他種類的傳感器進(jìn)行效益比較;HALTERMAN等[7]、WESSMAN[8]和STATECZNY等[9]利用激光雷達(dá)在實(shí)驗(yàn)室水池或湖泊環(huán)境中進(jìn)行試驗(yàn),對(duì)船舶障礙物檢測(cè)和避障場(chǎng)景中的感知能力、遇到的問(wèn)題和挑戰(zhàn)進(jìn)行分析;謝磊等[10]采用岸基檢測(cè)法獲取船舶激光點(diǎn)云數(shù)據(jù),提出一種基于輪廓線聚類分析的船舶超吃水檢測(cè)方法;ESPOSITO等[11]針對(duì)湖泊、河流上較小的木質(zhì)碼頭的幾何特征,提出一種基于激光雷達(dá)的碼頭識(shí)別算法;王貴槐等[12]針對(duì)內(nèi)河環(huán)境中主要障礙物的激光數(shù)據(jù)特征,提出一種基于支持向量機(jī)(Support Vector Machine,SVM)的內(nèi)河典型障礙物識(shí)別方法。
總體上看,相比對(duì)激光雷達(dá)在無(wú)人車目標(biāo)檢測(cè)和識(shí)別領(lǐng)域的深入應(yīng)用研究,在船舶領(lǐng)域的研究主要集中在對(duì)激光雷達(dá)的適用性、探測(cè)能力等方面的綜合性探討上。部分學(xué)者基于無(wú)人艇,在內(nèi)河、湖泊環(huán)境中開展感知試驗(yàn)研究,而面向沿海水域特別是基于大型商船的實(shí)船測(cè)試,利用激光雷達(dá)進(jìn)行沿海港內(nèi)典型目標(biāo)識(shí)別的研究尚處于起步階段。本文綜合運(yùn)用點(diǎn)云數(shù)據(jù)裁剪、點(diǎn)云數(shù)據(jù)過(guò)濾、點(diǎn)云數(shù)據(jù)聚類分割和檢測(cè)識(shí)別等方法,提出和實(shí)現(xiàn)基于LiDAR的沿海泊位碼頭檢測(cè)和識(shí)別算法,并在商船進(jìn)出港和靠、離泊的真實(shí)場(chǎng)景中進(jìn)行測(cè)試驗(yàn)證。
本次試驗(yàn)采用旋轉(zhuǎn)式多線LiDAR,其采用脈沖式飛行時(shí)間測(cè)距法,在物體反射率只有20%的情況下,測(cè)量距離可達(dá)200 m。像攝像頭一樣,LiDAR傳感器也有自己的坐標(biāo)系,測(cè)量產(chǎn)生的數(shù)據(jù)都是基于傳感器坐標(biāo)系得到的。在試驗(yàn)所用LiDAR的坐標(biāo)系中,x軸指向設(shè)備輸出電纜的反方向,y軸指向左,z軸指向上見圖1。
由于多線LiDAR的激光線束具有非線性、不均勻分布的特點(diǎn),在相同線束條件下,一個(gè)物標(biāo)越遠(yuǎn),掃描到的點(diǎn)數(shù)越少。根據(jù)試驗(yàn)所用LiDAR的測(cè)距原理,LiDAR設(shè)備應(yīng)放置在船體外部,以保證視線清晰,其最佳位置是艏向或兩舷,保證傳感器在最大限度無(wú)遮擋的情況下探測(cè)到碼頭實(shí)況。
本文對(duì)沿海港口內(nèi)的泊位碼頭進(jìn)行研究。這種碼頭是港區(qū)內(nèi)最常見的水工建筑物,為大型船舶???、貨物裝卸和旅客上下船提供便利。這種碼頭形狀的多樣性使得研究較為復(fù)雜,因此本文對(duì)研究對(duì)象的碼頭特征作以下設(shè)定:
1) 碼頭由陸地延伸到海里,其突出部分呈長(zhǎng)方形,上平面具有顯著的水平性,與水平面夾角小于5°。
2) 碼頭突出部分寬度不小于5 m,長(zhǎng)度不小于50 m(保證至少1艘海船可靠泊)。
符合上述設(shè)定特征的碼頭見圖2。
圖1 LiDAR坐標(biāo)系
根據(jù)LiDAR的工作原理,考慮雷達(dá)安裝位置的限制,點(diǎn)云數(shù)據(jù)會(huì)受船舶振動(dòng)、船頂天線、桅桿和海上大霧等因素的干擾,基于3D LiDAR的泊位碼頭識(shí)別算法包括點(diǎn)云數(shù)據(jù)裁剪、點(diǎn)云數(shù)據(jù)過(guò)濾、點(diǎn)云數(shù)據(jù)聚類分割和檢測(cè)識(shí)別等4部分。
在船舶靠泊試驗(yàn)中,LiDAR設(shè)備不可避免地會(huì)檢測(cè)到附近港口內(nèi)??康拇?、道路、汽車、房屋和廣告牌等岸上物標(biāo)以及本船上的桅桿、天線和欄桿等船舶自身干擾物標(biāo),見圖3。
圖3 船舶??扛劭诖a頭時(shí)的場(chǎng)景
為減輕后續(xù)泊位碼頭檢測(cè)算法的計(jì)算壓力,根據(jù)相對(duì)本船安裝的LiDAR設(shè)備的方位和距離對(duì)掃描得到的點(diǎn)云數(shù)據(jù)進(jìn)行裁剪,剔除本船自身干擾物標(biāo)的信息,提高后續(xù)點(diǎn)云數(shù)據(jù)的處理效率。點(diǎn)云數(shù)據(jù)裁剪算法設(shè)計(jì)為:固定在船舶上的LiDAR在自身坐標(biāo)系下掃描到的桅桿、天線和欄桿等船舶自身干擾物在任意幀中的坐標(biāo)位置是固定的。因此,將某一幀中的所有點(diǎn)投影到LiDAR坐標(biāo)系的Oxy平面上,在Oxy平面內(nèi)估算船舶自身干擾物相對(duì)于LiDAR的距離和方位。在確保船舶自身干擾物不遮擋被測(cè)碼頭的情況下,通過(guò)合理設(shè)置距離和方位閾值,就能裁剪掉船舶自身的干擾物,而保留包含待測(cè)碼頭的點(diǎn)云數(shù)據(jù)。
在3D LiDAR獲取點(diǎn)云數(shù)據(jù)時(shí),由于電磁干擾、船舶振動(dòng)等環(huán)境因素的影響,在測(cè)量所得的點(diǎn)云數(shù)據(jù)中存在不合理的噪聲點(diǎn)。對(duì)原始點(diǎn)云數(shù)據(jù)進(jìn)行裁剪并不能去除這些噪聲點(diǎn),噪聲點(diǎn)可能遠(yuǎn)離被測(cè)物體點(diǎn)云,對(duì)后續(xù)物標(biāo)聚類的影響較大。因此,本文采用統(tǒng)計(jì)濾波器去除噪聲點(diǎn),即對(duì)每個(gè)點(diǎn)計(jì)算其到所有臨近k個(gè)點(diǎn)的平均距離,假設(shè)這些距離構(gòu)成高斯分布,則其形狀由均值和標(biāo)準(zhǔn)差決定。因此,平均距離在標(biāo)準(zhǔn)范圍(給定的均值和標(biāo)準(zhǔn)差)之外的點(diǎn),可將其視為離群點(diǎn)剔除。
如圖3所示,從對(duì)場(chǎng)景掃描得到的點(diǎn)云數(shù)據(jù)看,右下角的燈樁與碼頭連接成為一體。為進(jìn)一步準(zhǔn)確分割碼頭,基于隨機(jī)采樣一致算法(Random Sample Consensus,RANSAC)對(duì)裁剪和濾波后的點(diǎn)云數(shù)據(jù)進(jìn)行聚類分割,提取出碼頭的輪廓邊緣,這是準(zhǔn)確計(jì)算碼頭幾何尺寸的基礎(chǔ)。RANSAC是從一組含有異常數(shù)據(jù)的樣本數(shù)據(jù)集中正確估計(jì)數(shù)學(xué)模型參數(shù)的迭代算法[13],該算法非常適合從雜亂的點(diǎn)云中檢測(cè)出某些具有特殊幾何外形的物體。本文根據(jù)泊位碼頭的特征,基于平面模型對(duì)泊位碼頭進(jìn)行聚類分割。假設(shè)平面模型在空間中的表達(dá)形式為
ax+by+cz+d=0
(1)
根據(jù)評(píng)價(jià)函數(shù)估計(jì)平面是否滿足,即
(2)
(3)
(4)
在得到平面模型參數(shù)[a,b,c,d]之后,判斷其他點(diǎn)到平面的距離是否小于設(shè)置的距離閾值dT,若小于,則屬于內(nèi)點(diǎn),否則為外點(diǎn)。因此,可通過(guò)設(shè)置距離平面的合適高度閾值dT,包容對(duì)泊位碼頭表面點(diǎn)云數(shù)據(jù)的正常波動(dòng),同時(shí)將其上部超過(guò)閾值的燈樁和欄桿等作為異常點(diǎn)剔除,從而分割得到碼頭的水平面。
對(duì)聚類得到的物標(biāo)進(jìn)行幾何特征值計(jì)算。根據(jù)第1.2節(jié)給出的碼頭特征計(jì)算物標(biāo)的輪廓尺寸,可采用主成分分析方法獲取物標(biāo)的有向包圍盒(Oriented Bounding Box,OBB)[14],估算物標(biāo)的長(zhǎng)度和寬度,并利用第1.2節(jié)給定的泊位碼頭的幾何特征進(jìn)行驗(yàn)證,從而實(shí)現(xiàn)對(duì)泊位碼頭的識(shí)別。
在大連長(zhǎng)??h大長(zhǎng)山島鴛鴦港碼頭水域進(jìn)行試驗(yàn)。試驗(yàn)所用LiDAR使用三角支架支撐,安裝在船舶駕駛臺(tái)頂部甲板(羅經(jīng)甲板)右舷,與水平面保持垂直,見圖4。
在LiDAR坐標(biāo)系中,x軸指向船舶右舷外,y軸指向艏方向,z軸指向天空如圖4所示。如果不考慮船舶晃動(dòng)等外界干擾因素,LiDAR坐標(biāo)系中的Oxy平面將與水平面保持平行。
選取該水域的2個(gè)不同碼頭進(jìn)行靠泊試驗(yàn),碼頭情況見圖5。
圖4 LiDAR安裝位置
基于開源的點(diǎn)云庫(kù)(Point Cloud Library, PCL)[15],采用VS2013作為開發(fā)平臺(tái)實(shí)現(xiàn)對(duì)泊位碼頭識(shí)別的所有算法。同時(shí),在整個(gè)試驗(yàn)過(guò)程中對(duì)相關(guān)算法進(jìn)行驗(yàn)證。
受LiDAR實(shí)際安裝條件的限制,船舶在航行過(guò)程中獲得的每幀360°掃描的LiDAR點(diǎn)云都包含船頂天線和桅桿等干擾物標(biāo)。如果在港外海域,當(dāng)船舶航速較快時(shí),獲得的LiDAR點(diǎn)云還會(huì)受到船舶艉跡的干擾。本文選取船舶低速靠泊碼頭1過(guò)程中的一幀LiDAR原始點(diǎn)云數(shù)據(jù)(見圖6)進(jìn)行分析。該幀LiDAR掃描得到的場(chǎng)景中包含艏部、天線、桅桿、船舶右舷和碼頭等物標(biāo)共33 170個(gè)掃描點(diǎn)。
考慮到船舶在靠泊過(guò)程中,LiDAR安裝在船舶右舷(x軸指向船舶右舷,y軸指向艏部),定義在LiDAR坐標(biāo)系Oxy平面上,相對(duì)方位0°為y軸指向,順時(shí)針旋轉(zhuǎn),取值為[0,360°)。采用第2.1節(jié)的點(diǎn)云裁剪算法,對(duì)離坐標(biāo)原點(diǎn)O的距離小于12 m或相對(duì)方位大于180°、小于360°的點(diǎn)進(jìn)行裁剪,得到包含碼頭1的點(diǎn)云數(shù)據(jù)見圖7。與原始點(diǎn)云數(shù)據(jù)相比,裁剪后的點(diǎn)云數(shù)據(jù)共包含8 240個(gè)掃描點(diǎn),大大降低了后續(xù)碼頭聚類算法的運(yùn)算量。
圖6 LiDAR原始點(diǎn)云數(shù)據(jù) 圖7 碼頭1裁剪后的點(diǎn)云圖
由圖7可知:通過(guò)簡(jiǎn)單設(shè)置距離和方位閾值對(duì)點(diǎn)云數(shù)據(jù)進(jìn)行裁剪,不能剔除碼頭上的燈樁和護(hù)欄等物體。因此,嘗試運(yùn)用聚類分割算法得到碼頭物標(biāo)。為提高聚類的效果,首先用統(tǒng)計(jì)濾波器去除裁剪后點(diǎn)云數(shù)據(jù)中的噪聲點(diǎn),過(guò)濾后的點(diǎn)云數(shù)據(jù)包含7 742個(gè)掃描點(diǎn);然后運(yùn)用PCL創(chuàng)建SACSegmentation對(duì)象,選擇基于RANSAC的平面分割模型,獲得碼頭平面。在平面聚類分割算法中,考慮到碼頭上燈樁和護(hù)欄的高度,本文設(shè)置距離閾值dT=0.3 m,得到在LiDAR坐標(biāo)系下碼頭1的平面模型的空間表達(dá)式為
0.035 4x+0.047y+0.998z+7.565=0
(5)
碼頭1對(duì)應(yīng)的平面樣本集中有7 742個(gè)掃描點(diǎn),其中4 800個(gè)掃描點(diǎn)(約為62%)為內(nèi)點(diǎn)。聚類分割出的碼頭1平面效果見圖8,該算法能較好地移除碼頭上的燈樁和護(hù)欄等干擾物標(biāo)。
運(yùn)用兩平面夾角余弦公式反求夾角,得到碼頭1的平面與LiDAR坐標(biāo)系中的Oxy水平面z=0,即水平面之間的夾角約為3.37°,符合第1.2節(jié)給出的碼頭特征1。最后,計(jì)算物標(biāo)的OBB(見圖9),得到OBB的寬為10.67 m,長(zhǎng)為76.94 m,符合第1.2節(jié)給出的碼頭特征2。
圖8 聚類分割出的碼頭1 圖9 碼頭1的外接包圍盒
同樣,在船舶靠泊碼頭2試驗(yàn)過(guò)程中,對(duì)原始LiDAR點(diǎn)云數(shù)據(jù)進(jìn)行裁剪和過(guò)濾操作之后,運(yùn)用第2.3節(jié)的算法聚類分割碼頭平面。在設(shè)置距離閾值dT=0.3 m時(shí),計(jì)算得到碼頭2的平面模型空間表達(dá)式為
-0.059 9x+0.005 55y+0.998z+7.302=0
(6)
碼頭2對(duì)應(yīng)的平面樣本集中包括3 766個(gè)掃描點(diǎn),其中2 614個(gè)掃描點(diǎn)(約69%)是內(nèi)點(diǎn)。該平面與LiDAR坐標(biāo)系中的Oxy水平面的夾角約為3.45°,也具備顯著的水平性。最后,計(jì)算得到OBB的寬為11.02 m,長(zhǎng)為68.06 m,符合第1.2節(jié)給出的碼頭特征。
本文面向MASS港內(nèi)避障、靠離泊等應(yīng)用需求,提出一個(gè)基于3D LiDAR的沿海港口泊位碼頭識(shí)別算法。該算法組合點(diǎn)云數(shù)據(jù)裁剪、點(diǎn)云數(shù)據(jù)濾波和聚類分割等幾部分,運(yùn)用開源的PCL工具,結(jié)合VS2013開發(fā)平臺(tái)實(shí)現(xiàn)對(duì)特定種類碼頭的識(shí)別功能。該算法能有效地克服LiDAR實(shí)際安裝條件的限制,剔除天線、桅桿等物標(biāo)的干擾,同時(shí)可靈活地設(shè)置所檢測(cè)泊位碼頭的幾何尺寸,且不受碼頭的燈樁、護(hù)欄等附屬物的影響,具有一定的魯棒性。最后,對(duì)2個(gè)泊位碼頭進(jìn)行實(shí)船試驗(yàn),證明了該算法的準(zhǔn)確性和有效性。
由于泊位碼頭的多樣性(例如不同碼頭形狀、碼頭上大型裝卸設(shè)備遮擋等情況),下一步需考慮搜集更多的碼頭掃描數(shù)據(jù)對(duì)算法進(jìn)行完善;同時(shí),雖然LiDAR有主動(dòng)探測(cè)、不受光照影響、能獲取較為準(zhǔn)確的物標(biāo)位置和3D信息等優(yōu)點(diǎn),但也有受雨、雪、霧的影響無(wú)法探測(cè)被遮擋物體的缺點(diǎn),因而需加強(qiáng)與其他數(shù)據(jù)源(例如攝像頭、電子海圖數(shù)據(jù))之間的融合,獲取和建立不同類型碼頭的更多特征,進(jìn)一步提高算法的普適性。