曹小華 侯文晟 韓紅安 武 超
1 武漢理工大學(xué)交通與物流工程學(xué)院 武漢 430063 2 河南衛(wèi)華重型機(jī)械股份有限公司 新鄉(xiāng) 453499
港口在每個國家的經(jīng)濟(jì)發(fā)展中都起著著十分重要的作用,作為海陸聯(lián)運(yùn)的關(guān)鍵所在,港口對國際間的貿(mào)易起著至關(guān)重要的作用[1-3]。目前,散貨港口中常用的裝卸機(jī)械主要有橋式抓斗卸船機(jī)、斗輪堆取料機(jī)、裝船機(jī)等,裝卸機(jī)械的作業(yè)效率將影響整個港口的工作效率[4,5],故追求其高作業(yè)效率將極大提高港口的綜合競爭力[6]。為了提高工作效率、改善作業(yè)條件、降低人工成本,實現(xiàn)抓取的自動化已成為新的發(fā)展方向[7-9],而散貨料堆的三維重建及參數(shù)信息的獲取則是抓取自動化過程中必不可少的一環(huán)[10-12]。
本文針對港口散貨料堆的三維重建及測量技術(shù)進(jìn)行研究,設(shè)計了三維料堆掃描系統(tǒng),該系統(tǒng)以激光雷達(dá)與旋轉(zhuǎn)云臺搭建的實驗平臺為基礎(chǔ),結(jié)合多傳感器融合技術(shù)和點云處理技術(shù)對獲取散貨料堆的二維點云數(shù)據(jù)進(jìn)行處理實現(xiàn)料堆三維重建,并對散貨料堆的三維點云數(shù)據(jù)進(jìn)行測算以獲取最高點、占地面積等信息,為抓取的自動化奠定基礎(chǔ)。
三維料堆掃描系統(tǒng)主要包括點云獲取硬件平臺和點云處理軟件系統(tǒng)2部分,點云獲取硬件平臺主要是獲取料堆的點云數(shù)據(jù),以實現(xiàn)后續(xù)的三維重建及料堆信息的測算;點云處理軟件系統(tǒng)主要是對獲取的點云數(shù)據(jù)進(jìn)行一系列處理,達(dá)到所需結(jié)果,系統(tǒng)中總體的設(shè)計框架圖如圖1所示。
圖1 幾何模型構(gòu)建流程
本實驗平臺使用2個激光雷達(dá)模擬現(xiàn)場多激光雷達(dá)的協(xié)作問題。考慮到激光雷達(dá)在掃描時可能存在掃描不到背面的點云數(shù)據(jù)的問題,本文在實驗室自有的門式起重機(jī)2根主梁各安裝1個激光雷達(dá)(見圖2),1個激光雷達(dá)往往不能掃描一個完整的料堆,于是本文激光雷達(dá)沿主梁方向錯開一定距離安裝,且中間有一段公共掃描部分,如此即可完成完整料堆的三維重建。
圖2 三維重建平臺布置圖
采用LMS511型激光雷達(dá)作為二維激光雷達(dá),每一幀點云數(shù)據(jù)皆為二維點云數(shù)據(jù),通過掃描可得到該平面物體的表面點,同時根據(jù)掃描過程中距離與角度信息,計算出激光雷達(dá)與各物體之間的相對位置。
為了實現(xiàn)激光雷達(dá)對周圍環(huán)境的三維重建,需選擇一款伺服電動機(jī)帶動激光雷達(dá)旋轉(zhuǎn)實現(xiàn)點云數(shù)據(jù)從二維點云到三維點云的轉(zhuǎn)換,這就對電動機(jī)的實時性和精確性要求較高。因此,綜合各方面因素后,選用BK kinco FD2S的配套伺服電動機(jī)和伺服驅(qū)動器,其具有精度高、性能好、穩(wěn)定、及時性等特點,可滿足對實時性和精確性要求。
因?qū)c云的處理要達(dá)到一定的實時性要求,并且考慮到使用LMS511-20100 Pro激光雷達(dá)獲取的點云數(shù)據(jù)量很大,要選擇具有較高處理能力的工控機(jī),故在綜合考慮成本、處理能力后選用XH NISE 3800e工控機(jī)作為處理設(shè)備。該工控機(jī)是一款專門為工業(yè)應(yīng)用而設(shè)計的無風(fēng)扇PC,具有高CPU和圖形性能要求,NISE 3800e支持16 G的DDR4內(nèi)存,在M.2、HDD、mSATA或SSD等存儲設(shè)備上有多個選項。圖3為三維重建實驗平臺硬件設(shè)備連接方式。
圖3 硬件連接示意圖
三維重建實驗平臺實現(xiàn)散貨料堆的三維重建所使用的是二維激光雷達(dá)搭配相應(yīng)的旋轉(zhuǎn)云臺,實現(xiàn)從二維點云到三維點云的轉(zhuǎn)換。LMS511為二維激光雷達(dá),三維重建主要通過伺服電動機(jī)帶動激光雷達(dá)一起旋轉(zhuǎn)而形成自動旋轉(zhuǎn)機(jī)構(gòu)平臺,然后組成完整的一體化三維點云。所建模型與實際物體進(jìn)行了還原對應(yīng),使二維點云變成三維點云。
該實驗平臺的工作原理是以初始雷達(dá)位置(激光雷達(dá)垂直向下)建立雷達(dá)坐標(biāo)系,垂直于地面方向為Z軸,沿伺服電動機(jī)安裝方向為X軸,坐標(biāo)系滿足右手定則,Y軸方向如圖4所示,實驗平臺沿X軸旋轉(zhuǎn)。
圖4 三維重建實驗平臺
對于激光雷達(dá)在不同角度和不同位置獲取的點云數(shù)據(jù),需要找到它們之間的關(guān)聯(lián)性。因此,在激光雷達(dá)旋轉(zhuǎn)過程中,需要求取當(dāng)前點云數(shù)據(jù)與前一刻點云數(shù)據(jù)的相對關(guān)系,即點云的旋轉(zhuǎn)變換及平移變換[13,14]。此外,使用多個激光雷達(dá)完成散貨料堆的三維重建,在處理激光雷達(dá)的點云數(shù)據(jù)時,會對多個點云數(shù)據(jù)進(jìn)行處理配準(zhǔn),無論是點云的粗配準(zhǔn)還是精配準(zhǔn),各類配準(zhǔn)算法的核心都是求出源點云和目標(biāo)點云的旋轉(zhuǎn)平移矩陣[15,16]。點云配準(zhǔn)的本質(zhì)就是將不同位置、不同角度的點云數(shù)據(jù)通過旋轉(zhuǎn)平移變換轉(zhuǎn)換到同一坐標(biāo)系下,所以點云配準(zhǔn)的核心就是求解在不同位置、不同角度獲得的2組點云數(shù)據(jù)之間的位置轉(zhuǎn)換關(guān)系,即求解對應(yīng)的旋轉(zhuǎn)平移矩陣[17]。
點云的旋轉(zhuǎn)變換可以分成分別沿Z、Y、X軸的旋轉(zhuǎn),如圖5所示。設(shè)α、β、γ分別為坐標(biāo)系沿Z、Y、X軸旋轉(zhuǎn)的角度,點云沿Z、Y、X軸的旋轉(zhuǎn)變換矩陣可以分別由矩陣RZ(α)、RY(β)、RX(γ)表示,旋轉(zhuǎn)矩陣R可表示為
圖5 繞Z、Y、X軸旋轉(zhuǎn)
假設(shè)點Q初始的坐標(biāo)為(X,Y,Z),旋轉(zhuǎn)過后點Q的坐標(biāo)為(X′,Y′,Z′),點Q變換前后的對應(yīng)關(guān)系為
繞Z軸旋轉(zhuǎn)的變換為
旋轉(zhuǎn)矩陣RZ(α)為
繞Y軸旋轉(zhuǎn)的變換為
旋轉(zhuǎn)矩陣RY(β)為
繞X軸旋轉(zhuǎn)的變換為
旋轉(zhuǎn)矩陣RX(γ)為
綜合上式,旋轉(zhuǎn)變換表達(dá)式為
其中,a11、a12、a13、a21、a22、a23、a31、a32、a33的結(jié)果為
實驗選取聚丙烯樹脂來模擬港口料堆的各種形狀,聚丙烯樹脂是白色顆粒狀材料,密度為0.9 g/cm3。因港口散貨料堆是一大尺度的場景,故整個實驗平臺通過搭載2個激光雷達(dá)來實現(xiàn)完整散貨料堆的三維重建。通過合理布置料堆的放置位置,使2個激光雷達(dá)都獲得部分料堆的數(shù)據(jù),并且它們掃描得到的數(shù)據(jù)有公共部分,可實現(xiàn)后續(xù)的點云配準(zhǔn)處理。
本文選擇的激光雷達(dá)為XK的二維激光雷達(dá),每一幀的數(shù)據(jù)為二維點云數(shù)據(jù),實現(xiàn)點云數(shù)據(jù)與旋轉(zhuǎn)角度的信息融合后,即可完成從二維點云到三維點云的轉(zhuǎn)換,即三維重建。
實驗考慮輪船船艙中料堆和港口散貨堆場料堆環(huán)境下的情況,以此分別模擬2種情況的數(shù)據(jù)??紤]到輪船的船艙情況,本文運(yùn)用泡沫板搭建了一個無蓋的長方體盒子來模擬船艙的情況,輪船船艙的散貨料堆如圖6所示。左激光雷達(dá)實現(xiàn)的局部散貨料堆三維重建結(jié)果如圖7a所示,右激光雷達(dá)實現(xiàn)的局部散貨料堆三維重建結(jié)果如圖7b所示。散貨堆場的散貨料堆如圖8所示,左激光雷達(dá)實現(xiàn)的局部散貨料堆三維重建結(jié)果如圖9a所示,右激光雷達(dá)實現(xiàn)的局部散貨料堆三維重建結(jié)果如圖9b所示。
圖6 輪船船艙料堆模擬圖
圖7 輪船船艙料堆點云圖
圖8 散貨堆場料堆模擬圖
圖9 散貨堆場料堆點云圖
通過實際圖與點云圖的對比可以看出,通過2個實驗平臺獲取船艙料堆的2組數(shù)據(jù)和堆場料堆的2組數(shù)據(jù)都有公共部分,可實現(xiàn)后面多幅三維點云數(shù)據(jù)之間的配準(zhǔn)。從點云圖中可以看出,由于掃描原因,點云數(shù)據(jù)存在離散點、噪聲點、障礙物點,且點云數(shù)據(jù)量很大,故需要對點云數(shù)據(jù)預(yù)處理。由于激光雷達(dá)是范圍掃描,點云圖中除了料堆的點云數(shù)據(jù)還包含地面、船艙的點云數(shù)據(jù),也需進(jìn)一步處理。
激光雷達(dá)在掃描時會獲得掃描范圍內(nèi)所有物體表面的點云數(shù)據(jù),但是在實際中只需要某一個物體或幾個物體的點云數(shù)據(jù),其他如地面、墻面的點云數(shù)據(jù)不需要,故點云分割應(yīng)運(yùn)而生[18]。點云分割原理是將一幀點云數(shù)據(jù)根據(jù)各種特性分割成若干單元,每個單元可看作為一個物體,然后根據(jù)需求提取需要的物體點云數(shù)據(jù)。在港口堆場獲取散貨料堆的輪廓時,激光雷達(dá)掃描時就可能會掃描到地面與一些障礙物等點云數(shù)據(jù)信息。在獲取輪船貨艙中的散貨料堆時,激光雷達(dá)掃描時也會掃描到船艙等點云數(shù)據(jù)信息,應(yīng)將這些非目標(biāo)點云分割出去,從而減少非相關(guān)數(shù)據(jù)的影響。
目前,點云分割算法在工程領(lǐng)域中應(yīng)用廣泛,使用最廣泛的主要有點云聚類分割方法和基于Ransac分割算法??紤]本文應(yīng)用港口料堆的背景,港口中點云數(shù)據(jù)在進(jìn)行濾波后,無效的點云點主要為地面和船艙(即平面),使用基于Ransac分割算法即可實現(xiàn),故選用該算法來實現(xiàn)對點云平面的分割。
Ransac算法進(jìn)行點云分割的原理是利用給定的三維點云數(shù)據(jù)反向求解出包含點最多的平面方程,Ransac點云分割算法的流程為:1)隨機(jī)選擇3個不共線的點;2)計算1)中選取的點的平面方程aX+bY+cZ+d=0;3)計算所有點到這個平面的距離l;4)找到所有距離l小于預(yù)設(shè)閾值的點;5)然后重復(fù)1)~4),直到達(dá)到設(shè)定的迭代次數(shù)后,選出包含最多點的平面作為要求的平面。
運(yùn)用點云分割算法完成對三維點云的分割后,可獲得僅包含料堆的三維點云數(shù)據(jù),再通過相應(yīng)的算法對料堆三維點云計算求解,獲取料堆的一些參數(shù)信息,如最高點、長寬高、占地面積、體積、質(zhì)量等。
點云分割前的點云數(shù)據(jù)中總會包含一些非目標(biāo)點,這些點的存在會對料堆參數(shù)信息的獲取造成影響,故需將非目標(biāo)點分割去除,僅保留料堆點云數(shù)據(jù)。其中圖10為船艙料堆分割后提取的料堆點云,圖11為堆場料堆分割后提取的料堆點云。
圖10 分割后的船艙料堆點云
圖11 分割后堆場料堆點云
1)最高點參數(shù)獲取
運(yùn)用pcl::getMinMaX3D函數(shù)求出Z的極大值,然后通過該Z對應(yīng)的索引找出對應(yīng)的X與Y的坐標(biāo),由此獲得最高點的信息,再根據(jù)需要可以將坐標(biāo)信息傳輸給上位機(jī),詳細(xì)的流程為:①求取Z的極大值;②獲取Z極大值對應(yīng)的行列索引值;③將Z極大值列索引值減一即為對應(yīng)Y的索引值,再減一即為對應(yīng)X的索引值;④獲取最高點的坐標(biāo)(X,Y,Z)。
首先完成對船艙料堆和堆場料堆的極值提取,求取的Z軸極值結(jié)果分別為0.237 m和0.171 m,然后通過基于點云極值索引的最高點獲取方法進(jìn)行最高點的求取,可視化界面在顯示料堆輪廓的同時也將料堆的最高點信息在顯示出來。
輪船船艙料堆的最高點坐標(biāo)為(0.684 m,0.253 m,0.237 m),如圖12所示;散貨堆場料堆的最高點坐標(biāo)為(0.946 m,0.364 m,0.171 m),如圖13所示。通過人工測量輪船船艙料堆的最高點坐標(biāo)為(0.703 m,0.261 m,0.225 m),散貨堆場料堆的最高點坐標(biāo)為(0.945 m,0.355 m,0.175 m)。
圖12 船艙料堆最高點
圖13 堆場料堆最高點
通過對比發(fā)現(xiàn)測量的X、Y、Z軸的誤差都在5%以內(nèi),如表1、表2所示。由于實驗室條件有限,考慮到人工測量也存在誤差,故誤差范圍基本符合要求。
表1 船艙料堆最高點數(shù)據(jù)對比
表2 堆場料堆最高點數(shù)據(jù)對比
2)長寬高及占地面積參數(shù)獲取
包圍體是指包含復(fù)雜形狀物體的一個簡單空間幾何體,包圍體根據(jù)類型不同可分為凸殼、軸對齊包圍盒(AABB)、有向包圍盒(OBB)、8-DOP[19]以及球體。通過包圍盒可以求出規(guī)則物體的長寬高等信息,本文通過該方法來獲取散貨料堆的長寬高等信息,以此求出散貨料堆的占地面積。
AABB包圍盒原理是構(gòu)建一個長方體盒子,使被測物體包含在盒子里,AABB與OBB的不同在于AABB包圍盒的每條邊都與世界坐標(biāo)系中的坐標(biāo)軸平行,而OBB不需要[20]。散貨料堆長寬高皆與世界坐標(biāo)系的X、Y、Z軸平行,以料堆的左下角建立世界坐標(biāo)系,使用AABB包圍盒來求取料堆的長寬高信息。實際物體上所有的點都必須滿足以下條件
由此,可以求出料堆的長寬高信息,即
因為建立的世界坐標(biāo)系的XOY平面與地面重合,故料堆的占地面積為
為了驗證上述方法求取的準(zhǔn)確性,選取長為4塊泡沫板寬為2塊泡沫板堆放物料作為船艙的料堆,每塊泡沫板的邊長為0.30 m,測出船艙料堆的長和寬分別為1.20 m和0.60 m;選擇長為3塊瓷磚寬為1塊瓷磚的地方堆放物料作為堆場艙的料堆,每塊瓷磚為邊長0.60 m的正方形,測出堆場的料堆的長和寬分別為1.80 m和0.60 m。在運(yùn)用AABB包圍盒后,根據(jù)每個坐標(biāo)軸上的最值求出船艙料堆的長和寬分別為1.189 m和0.585 m,堆場的料堆的長和寬分別為1.798 m和0.598 m,同時料堆的高為上文所求的最高點中Z的坐標(biāo),故船艙料堆的高為0.237 m,堆場料堆的高為0.171 m。
從表3中可以看出,通過運(yùn)用AABB算法后求得的長寬與實際的誤差保持在1%以內(nèi),能夠達(dá)到實際的要求。除此之外,為了方便查看料堆的長寬高信息,本文通過可視化界面顯示料堆輪廓信息的同時,將當(dāng)前料堆的長寬高信息輸出在可視化界面上,如圖14、圖15所示。其中,long、width、high分別為長、寬、高,在求取長寬高后,可通過求取的長和寬計算出料堆的占地面積,船艙料堆和堆場料堆的占地面積分別為0.696 m2和1.075 m2。
表3 船艙料堆最高點數(shù)據(jù)對比
圖14 船艙料堆長寬高
圖15 堆場料堆長寬高
本文分析了三維重建系統(tǒng)應(yīng)用到散貨料堆自動化抓取的可行性與可靠性,并根據(jù)實際需求選擇了合適的硬件和軟件環(huán)境,在此基礎(chǔ)上搭建了散貨料堆三維重建實驗平臺。為降低成本,選取了二維激光雷達(dá)作為點云獲取設(shè)備,實驗平臺通過旋轉(zhuǎn)云臺搭載一個二維激光雷達(dá),通過伺服電動機(jī)帶動激光雷達(dá)旋轉(zhuǎn)實現(xiàn)對局部散貨料堆的三維重建。針對自動化抓取以及庫存盤點所需的料堆參數(shù)信息,分別完成了對料堆最高點、長寬高等信息的測算,并利用求取的長寬來計算出料堆的占地面積,證明該重建方法與參數(shù)獲取方法的有效性和較高精度。