曹小華 侯文晟 韓紅安 武 超
1 武漢理工大學交通與物流工程學院 武漢 430063 2 河南衛華重型機械股份有限公司 新鄉 453499
港口在每個國家的經濟發展中都起著著十分重要的作用,作為海陸聯運的關鍵所在,港口對國際間的貿易起著至關重要的作用[1-3]。目前,散貨港口中常用的裝卸機械主要有橋式抓斗卸船機、斗輪堆取料機、裝船機等,裝卸機械的作業效率將影響整個港口的工作效率[4,5],故追求其高作業效率將極大提高港口的綜合競爭力[6]。為了提高工作效率、改善作業條件、降低人工成本,實現抓取的自動化已成為新的發展方向[7-9],而散貨料堆的三維重建及參數信息的獲取則是抓取自動化過程中必不可少的一環[10-12]。
本文針對港口散貨料堆的三維重建及測量技術進行研究,設計了三維料堆掃描系統,該系統以激光雷達與旋轉云臺搭建的實驗平臺為基礎,結合多傳感器融合技術和點云處理技術對獲取散貨料堆的二維點云數據進行處理實現料堆三維重建,并對散貨料堆的三維點云數據進行測算以獲取最高點、占地面積等信息,為抓取的自動化奠定基礎。
三維料堆掃描系統主要包括點云獲取硬件平臺和點云處理軟件系統2部分,點云獲取硬件平臺主要是獲取料堆的點云數據,以實現后續的三維重建及料堆信息的測算;點云處理軟件系統主要是對獲取的點云數據進行一系列處理,達到所需結果,系統中總體的設計框架圖如圖1所示。

圖1 幾何模型構建流程
本實驗平臺使用2個激光雷達模擬現場多激光雷達的協作問題。考慮到激光雷達在掃描時可能存在掃描不到背面的點云數據的問題,本文在實驗室自有的門式起重機2根主梁各安裝1個激光雷達(見圖2),1個激光雷達往往不能掃描一個完整的料堆,于是本文激光雷達沿主梁方向錯開一定距離安裝,且中間有一段公共掃描部分,如此即可完成完整料堆的三維重建。

圖2 三維重建平臺布置圖
采用LMS511型激光雷達作為二維激光雷達,每一幀點云數據皆為二維點云數據,通過掃描可得到該平面物體的表面點,同時根據掃描過程中距離與角度信息,計算出激光雷達與各物體之間的相對位置。
為了實現激光雷達對周圍環境的三維重建,需選擇一款伺服電動機帶動激光雷達旋轉實現點云數據從二維點云到三維點云的轉換,這就對電動機的實時性和精確性要求較高。因此,綜合各方面因素后,選用BK kinco FD2S的配套伺服電動機和伺服驅動器,其具有精度高、性能好、穩定、及時性等特點,可滿足對實時性和精確性要求。
因對點云的處理要達到一定的實時性要求,并且考慮到使用LMS511-20100 Pro激光雷達獲取的點云數據量很大,要選擇具有較高處理能力的工控機,故在綜合考慮成本、處理能力后選用XH NISE 3800e工控機作為處理設備。該工控機是一款專門為工業應用而設計的無風扇PC,具有高CPU和圖形性能要求,NISE 3800e支持16 G的DDR4內存,在M.2、HDD、mSATA或SSD等存儲設備上有多個選項。圖3為三維重建實驗平臺硬件設備連接方式。

圖3 硬件連接示意圖
三維重建實驗平臺實現散貨料堆的三維重建所使用的是二維激光雷達搭配相應的旋轉云臺,實現從二維點云到三維點云的轉換。LMS511為二維激光雷達,三維重建主要通過伺服電動機帶動激光雷達一起旋轉而形成自動旋轉機構平臺,然后組成完整的一體化三維點云。所建模型與實際物體進行了還原對應,使二維點云變成三維點云。
該實驗平臺的工作原理是以初始雷達位置(激光雷達垂直向下)建立雷達坐標系,垂直于地面方向為Z軸,沿伺服電動機安裝方向為X軸,坐標系滿足右手定則,Y軸方向如圖4所示,實驗平臺沿X軸旋轉。

圖4 三維重建實驗平臺
對于激光雷達在不同角度和不同位置獲取的點云數據,需要找到它們之間的關聯性。因此,在激光雷達旋轉過程中,需要求取當前點云數據與前一刻點云數據的相對關系,即點云的旋轉變換及平移變換[13,14]。此外,使用多個激光雷達完成散貨料堆的三維重建,在處理激光雷達的點云數據時,會對多個點云數據進行處理配準,無論是點云的粗配準還是精配準,各類配準算法的核心都是求出源點云和目標點云的旋轉平移矩陣[15,16]。點云配準的本質就是將不同位置、不同角度的點云數據通過旋轉平移變換轉換到同一坐標系下,所以點云配準的核心就是求解在不同位置、不同角度獲得的2組點云數據之間的位置轉換關系,即求解對應的旋轉平移矩陣[17]。
點云的旋轉變換可以分成分別沿Z、Y、X軸的旋轉,如圖5所示。設α、β、γ分別為坐標系沿Z、Y、X軸旋轉的角度,點云沿Z、Y、X軸的旋轉變換矩陣可以分別由矩陣RZ(α)、RY(β)、RX(γ)表示,旋轉矩陣R可表示為

圖5 繞Z、Y、X軸旋轉
假設點Q初始的坐標為(X,Y,Z),旋轉過后點Q的坐標為(X′,Y′,Z′),點Q變換前后的對應關系為
繞Z軸旋轉的變換為
旋轉矩陣RZ(α)為
繞Y軸旋轉的變換為
旋轉矩陣RY(β)為
繞X軸旋轉的變換為
旋轉矩陣RX(γ)為
綜合上式,旋轉變換表達式為
其中,a11、a12、a13、a21、a22、a23、a31、a32、a33的結果為
實驗選取聚丙烯樹脂來模擬港口料堆的各種形狀,聚丙烯樹脂是白色顆粒狀材料,密度為0.9 g/cm3。因港口散貨料堆是一大尺度的場景,故整個實驗平臺通過搭載2個激光雷達來實現完整散貨料堆的三維重建。通過合理布置料堆的放置位置,使2個激光雷達都獲得部分料堆的數據,并且它們掃描得到的數據有公共部分,可實現后續的點云配準處理。
本文選擇的激光雷達為XK的二維激光雷達,每一幀的數據為二維點云數據,實現點云數據與旋轉角度的信息融合后,即可完成從二維點云到三維點云的轉換,即三維重建。
實驗考慮輪船船艙中料堆和港口散貨堆場料堆環境下的情況,以此分別模擬2種情況的數據。考慮到輪船的船艙情況,本文運用泡沫板搭建了一個無蓋的長方體盒子來模擬船艙的情況,輪船船艙的散貨料堆如圖6所示。左激光雷達實現的局部散貨料堆三維重建結果如圖7a所示,右激光雷達實現的局部散貨料堆三維重建結果如圖7b所示。散貨堆場的散貨料堆如圖8所示,左激光雷達實現的局部散貨料堆三維重建結果如圖9a所示,右激光雷達實現的局部散貨料堆三維重建結果如圖9b所示。

圖6 輪船船艙料堆模擬圖

圖7 輪船船艙料堆點云圖

圖8 散貨堆場料堆模擬圖

圖9 散貨堆場料堆點云圖
通過實際圖與點云圖的對比可以看出,通過2個實驗平臺獲取船艙料堆的2組數據和堆場料堆的2組數據都有公共部分,可實現后面多幅三維點云數據之間的配準。從點云圖中可以看出,由于掃描原因,點云數據存在離散點、噪聲點、障礙物點,且點云數據量很大,故需要對點云數據預處理。由于激光雷達是范圍掃描,點云圖中除了料堆的點云數據還包含地面、船艙的點云數據,也需進一步處理。
激光雷達在掃描時會獲得掃描范圍內所有物體表面的點云數據,但是在實際中只需要某一個物體或幾個物體的點云數據,其他如地面、墻面的點云數據不需要,故點云分割應運而生[18]。點云分割原理是將一幀點云數據根據各種特性分割成若干單元,每個單元可看作為一個物體,然后根據需求提取需要的物體點云數據。在港口堆場獲取散貨料堆的輪廓時,激光雷達掃描時就可能會掃描到地面與一些障礙物等點云數據信息。在獲取輪船貨艙中的散貨料堆時,激光雷達掃描時也會掃描到船艙等點云數據信息,應將這些非目標點云分割出去,從而減少非相關數據的影響。
目前,點云分割算法在工程領域中應用廣泛,使用最廣泛的主要有點云聚類分割方法和基于Ransac分割算法。考慮本文應用港口料堆的背景,港口中點云數據在進行濾波后,無效的點云點主要為地面和船艙(即平面),使用基于Ransac分割算法即可實現,故選用該算法來實現對點云平面的分割。
Ransac算法進行點云分割的原理是利用給定的三維點云數據反向求解出包含點最多的平面方程,Ransac點云分割算法的流程為:1)隨機選擇3個不共線的點;2)計算1)中選取的點的平面方程aX+bY+cZ+d=0;3)計算所有點到這個平面的距離l;4)找到所有距離l小于預設閾值的點;5)然后重復1)~4),直到達到設定的迭代次數后,選出包含最多點的平面作為要求的平面。
運用點云分割算法完成對三維點云的分割后,可獲得僅包含料堆的三維點云數據,再通過相應的算法對料堆三維點云計算求解,獲取料堆的一些參數信息,如最高點、長寬高、占地面積、體積、質量等。
點云分割前的點云數據中總會包含一些非目標點,這些點的存在會對料堆參數信息的獲取造成影響,故需將非目標點分割去除,僅保留料堆點云數據。其中圖10為船艙料堆分割后提取的料堆點云,圖11為堆場料堆分割后提取的料堆點云。

圖10 分割后的船艙料堆點云

圖11 分割后堆場料堆點云
1)最高點參數獲取
運用pcl::getMinMaX3D函數求出Z的極大值,然后通過該Z對應的索引找出對應的X與Y的坐標,由此獲得最高點的信息,再根據需要可以將坐標信息傳輸給上位機,詳細的流程為:①求取Z的極大值;②獲取Z極大值對應的行列索引值;③將Z極大值列索引值減一即為對應Y的索引值,再減一即為對應X的索引值;④獲取最高點的坐標(X,Y,Z)。
首先完成對船艙料堆和堆場料堆的極值提取,求取的Z軸極值結果分別為0.237 m和0.171 m,然后通過基于點云極值索引的最高點獲取方法進行最高點的求取,可視化界面在顯示料堆輪廓的同時也將料堆的最高點信息在顯示出來。
輪船船艙料堆的最高點坐標為(0.684 m,0.253 m,0.237 m),如圖12所示;散貨堆場料堆的最高點坐標為(0.946 m,0.364 m,0.171 m),如圖13所示。通過人工測量輪船船艙料堆的最高點坐標為(0.703 m,0.261 m,0.225 m),散貨堆場料堆的最高點坐標為(0.945 m,0.355 m,0.175 m)。

圖12 船艙料堆最高點

圖13 堆場料堆最高點
通過對比發現測量的X、Y、Z軸的誤差都在5%以內,如表1、表2所示。由于實驗室條件有限,考慮到人工測量也存在誤差,故誤差范圍基本符合要求。

表1 船艙料堆最高點數據對比

表2 堆場料堆最高點數據對比
2)長寬高及占地面積參數獲取
包圍體是指包含復雜形狀物體的一個簡單空間幾何體,包圍體根據類型不同可分為凸殼、軸對齊包圍盒(AABB)、有向包圍盒(OBB)、8-DOP[19]以及球體。通過包圍盒可以求出規則物體的長寬高等信息,本文通過該方法來獲取散貨料堆的長寬高等信息,以此求出散貨料堆的占地面積。
AABB包圍盒原理是構建一個長方體盒子,使被測物體包含在盒子里,AABB與OBB的不同在于AABB包圍盒的每條邊都與世界坐標系中的坐標軸平行,而OBB不需要[20]。散貨料堆長寬高皆與世界坐標系的X、Y、Z軸平行,以料堆的左下角建立世界坐標系,使用AABB包圍盒來求取料堆的長寬高信息。實際物體上所有的點都必須滿足以下條件
由此,可以求出料堆的長寬高信息,即
因為建立的世界坐標系的XOY平面與地面重合,故料堆的占地面積為
為了驗證上述方法求取的準確性,選取長為4塊泡沫板寬為2塊泡沫板堆放物料作為船艙的料堆,每塊泡沫板的邊長為0.30 m,測出船艙料堆的長和寬分別為1.20 m和0.60 m;選擇長為3塊瓷磚寬為1塊瓷磚的地方堆放物料作為堆場艙的料堆,每塊瓷磚為邊長0.60 m的正方形,測出堆場的料堆的長和寬分別為1.80 m和0.60 m。在運用AABB包圍盒后,根據每個坐標軸上的最值求出船艙料堆的長和寬分別為1.189 m和0.585 m,堆場的料堆的長和寬分別為1.798 m和0.598 m,同時料堆的高為上文所求的最高點中Z的坐標,故船艙料堆的高為0.237 m,堆場料堆的高為0.171 m。
從表3中可以看出,通過運用AABB算法后求得的長寬與實際的誤差保持在1%以內,能夠達到實際的要求。除此之外,為了方便查看料堆的長寬高信息,本文通過可視化界面顯示料堆輪廓信息的同時,將當前料堆的長寬高信息輸出在可視化界面上,如圖14、圖15所示。其中,long、width、high分別為長、寬、高,在求取長寬高后,可通過求取的長和寬計算出料堆的占地面積,船艙料堆和堆場料堆的占地面積分別為0.696 m2和1.075 m2。

表3 船艙料堆最高點數據對比

圖14 船艙料堆長寬高

圖15 堆場料堆長寬高
本文分析了三維重建系統應用到散貨料堆自動化抓取的可行性與可靠性,并根據實際需求選擇了合適的硬件和軟件環境,在此基礎上搭建了散貨料堆三維重建實驗平臺。為降低成本,選取了二維激光雷達作為點云獲取設備,實驗平臺通過旋轉云臺搭載一個二維激光雷達,通過伺服電動機帶動激光雷達旋轉實現對局部散貨料堆的三維重建。針對自動化抓取以及庫存盤點所需的料堆參數信息,分別完成了對料堆最高點、長寬高等信息的測算,并利用求取的長寬來計算出料堆的占地面積,證明該重建方法與參數獲取方法的有效性和較高精度。