張 然, 郭海平, 謝靜遠, 周文鑫
(上海船舶工藝研究所, 上海 200032)
隨著工業機器人的快速發展,在船舶制造業、汽車制造業、鑄造業等重型制造業內,對零部件、工件的打磨處理作業已經由傳統的人工作業模式轉變為以工業機器人為主導、視覺檢測為輔助的智能作業模式。智能打磨裝備在這些領域已經得到廣泛應用[1]。視覺系統作為智能打磨裝備的重要組成部分,承擔著對打磨對象的檢測與識別功能,視覺檢測與識別算法的精度與速度直接影響打磨作業的完成質量與效率。目前,智能打磨裝備的視覺系統主要基于2D圖像進行視覺識別,即利用電荷耦合器件(Charge-coupled Device, CCD)或互補金屬氧化物半導體(Complementary Metal Oxide Semiconductor, CMOS)相機,獲取打磨對象的圖像信息,利用灰度分析或圖像邊緣分析算法,對打磨對象進行特征檢測與識別[2-3]。這類視覺系統的檢測精度主要依賴圖像質量,對相機的分辨率、現場光源環境等都有較高要求。還有一部分智能打磨裝備視覺系統采用線激光型傳感器,對打磨對象進行在線掃描和三維重構,為了保證掃描重構的質量,線激光型傳感器的掃描速度一般較慢,打磨裝備的工作效率被限制[4]。
隨著雙目視覺和結構光技術的發展,深度相機已經成為傳統圖像傳感器、激光類傳感器后的又一種視覺傳感器。深度相機因其較高的檢測精度與快速的數據處理速度,在無人駕駛、定位建圖領域已經受到廣泛應用[5-6]。基于工業深度相機,針對船舶小構件智能打磨裝備,對其視覺系統進行算法設計,并完成視覺系統各算法模塊的功能實現,為整套船舶小構件智能打磨裝備的高效高質量提供可靠的視覺數據支撐。
船舶小構件自由邊智能打磨裝備是針對肘板、補板等小型船舶結構件設計的整套物料搬運、打磨作業的機器人工作站,構成高產能、高精度、高質量的自動化生產單元,以滿足船廠的自動化打磨作業。智能打磨裝置的視覺系統主要承擔工件搬運及打磨前的視覺識別功能,基于深度相機完成對待搬運及待打磨工件的三維掃描、關鍵信息提取等作業,為后續自動搬運與自動打磨提供準確全面的視覺信息。
智能打磨裝備的視覺識別系統按照算法功能主要分為3個算法模塊,分別為位姿估計及坐標變換模塊、工件搬運視覺模塊和工件打磨視覺模塊。視覺識別系統算法模塊框架設計如圖1所示。

圖1 視覺識別系統算法模塊框架
(1) 位姿估計及坐標變換模塊。該算法模塊主要用于實現視覺系統內部的坐標建立及各坐標系間的坐標變換,包括建立標記坐標系,計算傳感器坐標系與標記坐標系間的變換矩陣,儲存運算得出的變換矩陣結果,為后續模塊提供計算依據。
(2) 工件搬運視覺模塊。該算法模塊主要承擔裝備搬運環節的視覺識別工作,包括對上料平臺上的工件進行掃描,獲取點云信息,將工件點云進行分割,對每個工件點云進行質心計算與質心坐標提取,并將質心坐標上傳至上位機,為機器人執行搬運作業提供視覺數據。
(3) 工件打磨視覺模塊。該算法模塊主要承擔裝備打磨環節的視覺識別工作,包括對打磨平臺上的工件進行掃描,獲取點云信息,將工件點云進行分割,對工件點云進行邊緣識別,提取工件邊緣點云,將邊緣點坐標上傳至上位機,為機器人執行打磨作業提供視覺數據。
深度相機通常由普通的RGB彩色攝像頭、雙目紅外攝像頭和脈沖或光線發射、接收器等部件構成,因此深度相機又名RGB-D相機或主動雙目視覺相機,即在獲取普通彩色圖像的同時,可以獲得圖像中每個像素的深度信息,且相對于僅依靠雙目視差(被動雙目視覺)獲取深度信息的普通雙目視覺相機,深度相機依靠紅外結構光(Structured Light, SL)或飛行時間(Time-of-Flight,TOF)法原理,主動進行深度測量。其原理如圖2所示。

圖2 深度相機原理示例
SL型深度相機向探測目標發射一束光線,并根據返回的SL圖案,計算物體與自身之間的距離;TOF深度相機則向目標發射脈沖光,根據發送與返回之間的TOF,確定探測物體的距離。從原理上看,TOF型深度相機與傳統的激光型傳感器相似,但傳統的激光型傳感器通過逐點掃描獲取距離,而TOF型深度相機則可一次性獲取整個圖像中每個像素點的距離信息,大幅縮短掃描時間,提高視覺識別效率。
同時,在測量深度之后,深度相機會按照生產時各攝像頭的擺放位置自動完成深度信息與彩色圖像間的匹配,輸出一一對應的深度圖像與彩色圖像,同時計算像素點的3D坐標,生成3D點云。對深度相機采集的數據,既可在圖像層面進行圖像處理,又可在點云層面進行點云處理,顯著豐富了信息的完整度。
智能打磨設備的視覺識別算法,基于圖漾PM801工業TOF深度相機進行設計,其結構如圖3所示,該深度相機采用主動雙目技術,包括雙目紅外攝像頭、RGB彩色攝像頭和光學增強系統,可輸出RGB彩色圖像、深度圖像、三維點云等多種數據結構。為驗證視覺識別算法,基于新松SR210D機械手,搭建算法試驗平臺,如圖4所示,深度相機安裝于機械手端部,機械手下方放置工件:當放置多塊工件時,模擬上料平臺;當放置單個工件時,模擬打磨平臺。

圖3 圖漾PM801工業TOF深度相機

圖4 算法試驗平臺
智能打磨裝置視覺識別系統的位姿估計與坐標變換主要作用:使用Aruco_marker標記,在上料平臺與打磨平臺上分別設置坐標系,定義為標記坐標系Cmarker,通過Aruco_marker檢測算法進行相機位姿估計,獲取從標記坐標系Cmarker至圖像坐標系Crgb之間的轉換矩陣Tmarker,rgb;深度相機獲取的工件點云位于點云坐標系Cpcl中,從點云坐標系至圖像坐標系之間的轉換矩陣Tpcl,rgb為傳感器參數中的已知信息,結合相機位姿估計所得Tmarker,rgb,可將工件點云從點云坐標系轉換至上料平臺或打磨平臺上的標記坐標系Cmarker,進行下一步點云處理流程。位姿估計與坐標變換示例如圖5所示。

圖5 位姿估計與坐標變換示例
在一般情況下,點云數據在原始傳感器坐標系中處理,由于深度相機安裝于機械手的機械臂上,為了方便進行數據處理,例如點云分割等操作,需要保證深度相機與平臺水平,同時需要估算深度相機距離平臺的高度,算法條件相對苛刻。在進行坐標變換之后,點云數據可在作業區域坐標系內處理,由于Aruco_marker標記貼附于作業區域表面,因此依據標記生成的坐標系xy軸平面與作業區域水平,近似貼合于作業區域表面,z軸垂直于作業區域表面豎直向上,方便后續對點云數據進行處理,同時對機器人及傳感器無特殊位置要求,只需保證重復定位精度即可。
3.2.1 Aruco_marker介紹
Aruco_marker是一種類似二維碼的簡易識別標記,廣泛應用于機器人導航、增強現實場景的相機位姿估計中。相機位姿估計主要任務在于找到點在真實3D環境中的坐標與2D圖像中的真實坐標并求出轉換關系,這一步驟通常比較復雜,而Aruco_marker標記可以被相機快速識別,并提供足夠計算相機位姿的對應信息。同時,標記內部的二進制編碼使標記在錯誤檢查與修正方面保持一定的穩定性。
一個Aruco_marker標記外圍均有一組黑色邊框,同時內部有用于確定標記ID的二維矩陣。黑色邊框可加速標記在圖像中的檢測速度,內部二維編碼能唯一識別該標記,同時進行錯誤檢測和錯誤修復。圖6為該視覺識別系統所用的Aruco_marker標記,ID號為582。Aruco_marker可用C++代碼直接生成,打印后即可用于相機位姿估計。

圖6 視覺系統所用Aruco_marker標記
3.2.2 相機位姿估計算法
Aruco_marker的檢測與位姿估計算法是基于OpenCV庫中的detectMarkers()函數與estimatePoseSingleMarkers()函數進行設計的。
首先,默認深度相機RGB攝像頭的內部參數已知,RGB攝像頭的內部參數一般在出廠時已經計算完成,如果沒有也可利用傳統相機標定方法人工完成RGB攝像頭內部參數標定。確定RGB攝像頭的內部參數后,即可獲得去畸變之后的RGB圖像。以包含Aruco_marker標記的RGB圖像作為輸入,利用detectMarkers()對圖像進行檢測,確定圖像中的Aruco_marker標記、輸出標記角點(corner)及其他參數,后續位姿估計均依賴于檢測輸出的結果。
獲取Aruco_marker的識別結果后,利用estimatePoseSingleMarkers()函數進行相機位姿估計,輸入參數為標記角點(corner)檢測結果、RGB攝像頭內部參數(cameraMatrix)和RGB攝像頭畸變參數(distCoeffs),輸出結果為從標記坐標系至RGB相機坐標系的姿態,該姿態通過1個旋轉向量(rvecs)和1個平移向量(tvecs)描述。
3.2.3 坐標變換計算
該算法所涉及的坐標系共3個,分別為深度相機中的點云坐標系Cpcl、深度相機中的圖像坐標系Crgb和上料平臺與打磨平臺上根據Aruco_marker生成的標記坐標系Cmarker。由深度相機采集到的原始點云位于點云坐標系Cpcl中,為了將原始點云轉換至標記坐標系Cmarker中進行下一步處理,需要計算得出從Cpcl至Cmarker的坐標轉換矩陣Tpcl,marker。假設現實環境中的某個點在點云坐標系、圖像坐標系、標記坐標系下的坐標分別為Ppcl、Prgb、Pmarker,則易知:
Prgb=Tpcl,rgbPpcl
(1)
式中:Tpcl,rgb為從點云坐標系至圖像坐標系的轉換矩陣,該矩陣可以通過查閱深度相機的參數表得到。
通過相機位姿估計算法,可以得到從標記坐標系Cmarker至圖像坐標系Crgb的轉換矩陣Tmarker,rgb,則從圖像坐標系Crgb至標記坐標系Cmarker的轉換矩陣為

(2)
同時可知:
Pmarker=Trgb,markerPrgb
(3)
將式(1)~式(3)整合可得

(4)
則可得出從Cpcl至Cmarker的坐標轉換矩陣為

(5)
C++的Eigen庫是一個開源的線性代數庫,可提供有關矩陣的線性代數運算,因此上述算法可基于Eigen庫進行開發實現。
由深度相機獲取的原始點云數據包含了工件點云、背景點云及無關點點云,為了對工件點云進行進一步的數據處理,需要將工件點云從原始點云中分割出來。原始點云數據的背景主要為上料平臺或打磨平臺,無關點主要為視場內的少量輔助設備形成的干擾點。因此,工件點云分割工作分為背景點云分割與無關點濾除。
3.3.1 背景點云分割
背景點云由上料平臺或打磨平臺點云構成,這類背景點云為大面積平面類點云,且由于地面及打磨平臺都較為平整,幾乎沒有高度變化。工件放置于上料平臺或者打磨平臺上,同時在坐標變換時,已經在上料平臺或打磨平臺上設置了標記坐標系,且原始點云已經轉換至標記坐標系下,標記坐標系與平臺近乎貼合,z軸豎直向上。針對這類背景點云的特點及標記坐標系的特點,可以以工件厚度作為辨別工件與背景的判別條件,在z軸方向上設定合適的閾值,濾除大面積的背景點云。
3.3.2 工件點云提取
對于抓取環節的視覺識別,由于上料平臺上會放置多塊待抓取工件,僅對背景點云進行去除,已經無法對每塊工件點云進行單獨處理。同時,由于上料平臺的尺寸較大,相機位姿估計的誤差會隨著尺寸增加而放大,導致背景無法完全過濾,殘余部分平面背景點云,這類點云也無法用離群點濾除進行過濾。由于工件點云亦為平面點云,因此可對去除背景后的點云數據采用隨機抽樣一致性(RANdom SAmple Consensus, RANSAC)算法進行工件點云的提取。
RANSAC算法是從1組含有“外點”的數據中正確估計出數學模型參數的迭代算法。該算法假設所有數據均由“內點”與“外點”構成,“內點”即組成模型參數的數據,“外點”即模型以外不適合模型的數據。該算法通過反復選擇數據進行模型估計,一直迭代直至估計出較好的模型。該算法大多應用于直線特征提取,而RANSAC平面擬合提取的原理與直線擬合類似:首先在原始點云數據中隨機選出3點,按照平面方程構建平面模型,擬合出初始平面;然后將原始點云中所有點代入這個模型,計算出“內點”數目(累加在一定誤差范圍內的適合當前平面模型的數據),比較當前模型與之前擬合出的最好的模型的“內點”數量,記錄包含最多“內點”的模型參數;最終直至迭代結束或達到設置的“內點”上限,即完成平面擬合與提取。
RANSAC在點云中進行平面提取的算法可用點云庫中的SACSegmentation類進行實現,算法的輸入為進行背景過濾后的點云數據,并選擇RANSAC算法模型進行分割。SACSegmentation類中控制迭代次數的參數為segDistanceThreshold,即點至擬合平面的距離,若數據點至當前擬合平面的距離超過該閾值,則判斷該數據點不在平面模型內。RANSAC算法是一種不穩定算法,其擬合精度主要依靠迭代次數,迭代次數越多,擬合越精準,但耗時也越多。應用于智能打磨裝備視覺識別系統中點云分割模塊內的segDistanceThreshold參數設置為0.1 mm,其迭代次數即可保證工件平面可被準確分割,同時也兼顧算法實時性。
3.3.3 無關點濾除
對于打磨環節的視覺識別,由于打磨平臺尺寸較小,且每次只有1個工件放置于打磨平臺上,因此僅依靠設置閾值即可將絕大部分由打磨平臺構成的背景點云濾除。但由于打磨平臺周圍存在較多的輔助設備,例如點激光開關閥等,這些設備的一部分可能被深度相機捕捉到,形成無關點。這類無關點一般與工件點云距離較大,可按照離群點處理。離群點處理算法可基于K鄰近點(K-Nearest Neighbor, KNN)原理實現,即設定鄰近點個數K與標準方差閾值Threshold,先求出某點附近K個鄰近點之間距離的標準方差dev,再計算該點到這些點的距離d,如果距離d大于該點附近K個鄰近點之間距離的標準方差與標準方差閾值的乘積,則該點判斷為離群點并進行濾除。無關點濾除算法基于C++與點云庫實現。
3.3.4 點云分割算法結果
如圖7所示,原始點云包含工件點云、背景點云及干擾點,經過背景分割、工作點云提取及無關點濾除,可得到清晰的工件點云。

圖7 點云分割算法結果
工件質心提取是搬運環節的主要算法功能。對分割出的工件點云進行質心提取,得到質心的三維坐標,并發送給上位機。機械臂移動至質心坐標處,利用電磁鐵完成工件抓取。
通常物體的質心計算公式為

(6)
式中:ri=(xi,yi,zi),i=1,2,…,n,為各質點的坐標;mi為質點的對應質量。
利用C++進行工件質心提取算法設計時,令式(6)中mi=1,質心提取算法的公式為

(7)
利用C++程序與式(7)即可完成工件點云的質心坐標計算,當質心提取完成后,將質心坐標保存,并發送至上位機,為機器人執行搬運作業提供數據支撐。工件質心提取結果如圖8所示。

圖8 工件質心提取結果
工件點云的邊緣提取是打磨環節的核心算法。對打磨平臺上的待打磨工件進行分割之后,需要提取工件的邊緣點云,由于船舶小構件的幾何形狀存在非規則形狀,例如弧形邊緣等,僅提取少量邊緣特征點無法滿足打磨機器人的工作需求,需要對工件的邊緣進行完整的點云提取,并發送給機器人上位機,為機器人執行打磨程序提供數據支撐。為了在三維點云中準確提取邊緣點云,選擇基于點云法線進行邊緣提取,即首先從原始點云上計算出法線,然后由法線結合數據估計出邊界,最后提取出邊緣點云。
平面的法線是與其垂直的單位向量。在點云表面,法線定義為垂直于與點云表面相切的平面向量,可提供關于平面的曲率信息。對于點云數據集的每個點的法線估計,可看做對表面法線的近似推斷,因此確定表面一點法線的問題可近似于估計表面的一個相切面法線的問題,轉換之后就成為最小二乘法平面擬合估計問題。 通過計算推導可將求解最佳擬合平面問題轉換為求解矩陣特征值與特征向量問題,所求得的最小特征值對應的特征向量即為最佳擬合平面的法向量。
完成工件點云中每個點的法線估計后,再利用各個法線方向之間的夾角即可判斷出工件點云的邊緣點,最終生成工件點云的邊緣點云信息。整個工件點云邊緣提取算法可基于C++與點云庫完成算法設計,算法輸入為完成點云分割后的單個工件點云和算法的約束參數,參數reform用于法線估計算法中設定擬合平面的擬合半徑,一般設定為點云分辨率的10倍,而參數re用于邊緣判別算法中的法線夾角閾值,一般設置為π/2或π/4。算法輸出為識別提取出的工件邊緣點云。
完成工件邊緣點云提取后,將邊緣點的坐標保存,上傳至上位機,為機器人執行打磨作業提供數據支撐。工件邊緣點云提取結果如圖9所示。

圖9 工件邊緣點云提取結果
針對船舶小構件打磨裝備,提出利用深度相機進行視覺識別系統算法設計,確定視覺識別系統的模塊框架與模塊功能。同時搭建算法試驗平臺,基于OpenCV庫與點云庫,利用C++程序語言完成各模塊的算法實現。與使用圖像傳感器和線激光型傳感器相比,基于深度相機設計的船舶小構件智能打磨裝備視覺識別算法在保證精度的同時,不再依賴現場光源和圖像分辨率,不需要移動傳感器進行在線掃描,提高了視覺識別的效率,為智能打磨裝備提供了準確全面的視覺數據,保證了船舶小構件智能打磨裝備高質量、高效率運行。