曹學鵬 樊 豪 馮艷麗 王德碩
(①長安大學工程機械學院機電液一體化研究所,陜西 西安 710064;②西安航天時代精密機電有限公司,陜西 西安 710100)
傳統的焊接方法以人工焊接為主,在非標焊件中有一定的優勢,不過也存在成本高、效率低以及對人體有害等缺點。焊接機器人具有效率高、非接觸以及部署靈活等特點,在自動化焊接中起著關鍵作用[1]。
目前,焊縫的識別以及焊接路徑規劃大多依賴于操作人員的經驗[2],在機器人焊接作業中,廣泛采用“示教-再現”的工作方式,但該方法缺乏對環境的感知,無法滿足自動化焊接的要求[3]。某些焊接系統為了提高軌跡規劃精度、減少焊接前準備時間,采用激光傳感器采集焊縫坡口中心點坐標,但仍需要操作機器人示教器使焊縫坡口處于激光傳感器的掃描范圍內[4-6]。因此,采用傳感技術,免除焊接路徑規劃中的示教環節,對于提高焊接系統的效率有著重要的意義。
機器視覺具有非接觸、獲取信息豐富以及結構簡單等優點[7-8],采用視覺識別焊縫是一種較好的自動化焊接方法[9]。在實際應用中,焊接現場存在光學干擾復雜、光照不均衡和坡口灰度值不一致等問題,導致圖像中混雜大量噪聲,增加了焊縫提取的難度。采用特定算法消除圖像中的噪聲并提取完整焊縫圖像,成為采用工業相機進行焊縫識別及特征點提取的重要研究方向。
劉濤等[10]設計了一種基于被動雙目視覺的環形焊縫定位與跟蹤系統,通過霍夫變換提取ROI、運用最小二乘法擬合焊縫直線、利用雙目視覺模型和基于極線的立體匹配方式計算焊點的空間坐標。范明洋等[11]提出一種基于線結構光的曲線焊縫焊接技術,通過中值濾波、ROI 區域提取、圖像二值化、圖像腐蝕和圖像細化等操作得到條紋區域。通過三維重構得到基坐標系下的特征點,并利用B 樣條曲線插值算法擬合曲線。潘海鴻等[12]利用激光視覺系統獲得焊接工件的圖像,利用焊縫特征點模型得到參考點信息,實現了多層多道焊接各焊道的路徑規劃。張國強等[13]搭建了雙目立體視覺系統,解決了焊接過程中發生板件翹曲變形時無法對示教路線進行實時調整的問題。王天琪等[14]通過建立經過初始焊位點的直線方程,求取兩條直線的交點,來確定初始焊位在機器人基坐標系下的三維坐標。
以上方法解決了部分工件的免示教問題,提高了焊接效率。但當現場光照復雜或當工件為復雜焊縫時,不能得到理想的結果。為免除焊接路徑規劃中的示教環節,本文通過圖像處理算法,為機器人提供用戶坐標系下的特征點。本文采用雙邊濾波作為圖像預處理方法。采用Sobel 算子提取邊界并標記完整焊縫。運用閉運算填充細小孔洞并連接間斷的輪廓線。采用輪廓跟蹤濾波消除圖像上的細小噪聲,完成焊縫輪廓的精確提取。運用相機標定的結果將從圖像上提取的特征點轉換到用戶坐標系下。最后通過實驗測試焊縫提取和特征點提取效果,分別驗證焊縫提取算法的有效性以及特征點提取方法的準確性。
針對薄板平面對接焊縫的自動化焊接需求,設計基于視覺檢測的機器人自動焊接系統。該系統包括相機、視覺處理單元、光源、操作臺以及電源等。相機采用??低昅V-CE200-10GC 2000 工業相機,分辨率為5 472×3 648,視覺處理程序基于C#.NET框架,采用C#語言開發并在i7-6700CPU 上運行。焊接機器人采用西安航天精密機電研究所自主研制的20 kg 六關節串聯機器人。該系統組成如圖1 所示。

圖1 自動焊接平臺
相機固定在工件上方,與操作臺的位置保持不變。圖2 所示為相機所拍攝的放置在工作臺上的工件照片,本文的方法為通過特定算法,從相機拍攝的原圖中識別并定位焊縫,提取機器人用戶坐標系下的特征點,并完成路徑規劃。

圖2 相機拍攝原圖
具體流程:通過預處理獲得平滑圖像,并盡可能地抑制噪聲;采用梯度算子標記圖像上梯度高于特定值的像素;運用閉運算填充細小孔洞,增強算法的魯棒性;最后借助輪廓跟蹤濾波消除圖像上微小的噪聲,獲得僅存在焊縫輪廓的二值圖像;采用相機標定結果,將特征點轉換到用戶坐標系下;運用平滑樣條插值法完成路徑規劃。
圖像中包含的紋理和細節會對邊緣檢測造成困難,因此在檢測邊緣前應先平滑圖像。常用的圖像平滑方法有均值濾波、高斯濾波、中值濾波和雙邊濾波等[15]。雙邊濾波不僅包含像素在空間距離上的關系,同時也考慮像素間灰度值的相似性,能在消除圖像上噪聲的同時,較好地保存邊緣。雙邊濾波模板中的權重系數可表示為
式中:f(i,j)、f(k,l)為像素的灰度值;σd為坐標空間標準方差;σr為灰度空間標準方差。
圖像的邊緣是圖像最基本的特征,是灰度不連續的表現。梯度算子可以檢測出圖像中各像素的梯度,對梯度圖像二值化即可檢測出有效的邊緣。
常用的梯度算子有Robert 算子、Sobel 算子和Laplace 算子等。四方向Sobel 算子計算量小、運行速度快,對噪聲的抑制效果較好[16],因此本文采用四方向Soble 算子計算梯度圖像。
圖像二值化時,閾值選擇過高,將造成焊縫部分缺失。本文的閾值采取經雙邊濾波后圖像的平均灰度值,該值由計算機程序計算得到。使用該值作為閾值,可以在消除大量噪聲的同時,標記出完整的焊縫。圖3 所示為不同光照條件下,工件圖像的二值化處理結果,由計算機程序得到的閾值分別為:34、15 和5。

圖3 不同光照條件下的二值化結果
從圖3 可見,雖然圖像已經過平滑處理,但在二值圖像上,仍存在許多噪聲。
傳統的濾波方法很難在消除所有噪聲的同時,標記出完整的焊縫。改進Canny 算子是一種較好的邊緣檢測算法[17]。使用改進Canny 算子處理圖2 得到的結果如圖4 所示。觀察A 區域,焊縫周圍出現假邊緣,且焊縫不連續;觀察B 區域,圖像上仍存在較多噪聲。

圖4 改進Canny 算子結果
采取閉運算處理圖像,以填充細小孔洞,消除細小毛刺,連接間斷的輪廓線。閉運算可看作對圖像先進行膨脹運算,再對圖像完成腐蝕運算,其定義為
式中:X為圖像;S為結構元素;⊕為膨脹運算;⊕為腐蝕運算。本文先采用3×3 的矩形算子進行膨脹運算,后采用1×3 的矩形算子進行腐蝕運算。
輪廓跟蹤是在二值圖像上按逆時針或順時針方向進行邊界跟蹤提取的過程。通常采用通用性更高的8 方向碼進行輪廓跟蹤。
對二值圖像上的像素按以下規則分類:
(1)若某像素為黑色像素,記為0 型像素。
(2)若為白色像素,且其上、下、左、右4個像素均為白色像素,則記為0 型像素。
(3)若為白色像素,其上、下、左、右4 個像素中存在至少1 個黑色像素,則記為I 型像素。
圖5a 所示為一個有孔洞的噪聲,圖中◆像素為當前點,★為下一邊界點,○為已跟蹤輪廓點。

圖5 對有孔洞噪聲輪廓跟蹤的過程
從左到右逐行掃描圖像,尋找輪廓跟蹤起始點,如圖5a 中◆像素所示。從起始點的左下位置開始,逆時針方向搜索,第一個I 型點,就是下一個邊界點。
圖5b 為輪廓跟蹤中間步示意,圖中◆像素為當前像素。以當前像素為中心,從上一個邊界點開始逆時針方向搜索到的第一個I 型點即為下一個邊界點,如圖5d 中★像素所示。
孔洞邊界的跟蹤如圖5c 所示,通過對像素點的重新定義,可使用相同的方法跟蹤孔洞邊界。跟蹤結果如圖5d 所示,至此,噪聲的內外邊界均得到標記。
對圖5 某一特征而言,從其某一邊界點(x,y)出發,沿著邊界搜索前進,經過一定的步數,總能回到起始點(x,y),稱該步數為搜索步數。經過閉運算后,焊縫的搜索步數遠大于噪聲的搜索步數,可利用該特點區分焊縫與噪聲。
經過輪廓跟蹤濾波后,可獲得無噪聲干擾的焊縫圖像,此時可采取平均法在像素坐標系下提取特征點,其原理如圖6 所示。

圖6 平均法示意圖
平均法可表示為
在提取特征點時,每取一個新點,即計算該點與上一點間的市區距離。若兩相鄰點間的市區距離大于設定值L,說明兩點間的焊縫斜率的絕對值較大,需要在這兩點間繼續取點,直到任意相鄰兩點間的市區距離小于L/3。L的計算方法如式(4)所示。
式中:Pv表示圖像在v方向的像素個數;N表示提取特征點的總數。
像素坐標系下,兩點P(x,y)和Q(u,v)間的市區距離定義為
4.1 節提取的特征點是像素坐標系下的二維坐標,需要經過相機標定,將其轉換到基坐標系或用戶坐標系下。
相機的成像模型如圖7 所示,圖中一共有4 個坐標系:

圖7 相機成像模型
(xc,yc,zc,Oc)為相機坐標系,原點Oc為相機的光心;(xi,yi,Oi)為圖像坐標系,原點Oi在攝像機光軸與圖像平面的交點,一般位于圖像中心處;(xp,yp,Op)為像素坐標系,原點在圖像左上方角點的像素上;(x,y,z,O)是用戶坐標系,原點由用戶定義,本系統中,用戶坐標系原點在操作臺的右下角。
平面矩形W與用戶坐標系的xOy面重合,是相機在xOy平面內的掃描范圍。
用戶坐標系和像素坐標系的轉換關系可以表示為
式中:Zc為目標點距離相機光心的距離;(u,v)為像素坐標系下某點坐標;dx、dx為單位像素的長度;(u0,v0)為像素坐標系中主點的坐標;f為相機焦距;R為相機旋轉矩陣;t相機平移向量;(X,Y,Z)為用戶坐標系下某點坐標;M1為相機內參矩陣;M2為相機外參矩陣。
本文采用MATLAB 進行相機標定,以獲得相機的內參數矩陣M1、外參數矩陣M2與畸變矩陣。
確定相機坐標系和用戶坐標系后,通過測量可得到相機旋轉矩陣R與相機平移向量t。
可將式(6)表示如下:
式中:M為3×4 矩陣,稱為投影矩陣。對平面焊縫,特征點在用戶坐標系下的Z軸坐標均相等,此時可將M矩陣的第三列刪除,并記為Ad。將式(7)等式右邊的列向量的第三個元素Z刪除,可得:
選取混合型、直線型和曲線型等3 種典型平面焊縫工件為研究對象,如圖8 所示。

圖8 3 種典型焊縫工件
采用本文的算法,處理圖8 中的4 張圖片,獲得的輪廓邊界識別結果如圖9 所示。由圖可見,該算法可以在提取出完整焊縫的同時,消除圖像上的噪聲。每張圖像的分辨率均為5 472×3 648,鑒于圖片分辨率較高,算法運行時間會稍長。雙邊濾波、計算梯度圖像、二值化、閉運算采取OpenCV 庫函數,運行時間在180 ms 左右;輪廓跟蹤濾波采用C#語言編寫代碼進行運算,運行時長在1.3 s 左右。

圖9 不同工件識別結果
實驗中,由于采用平面焊縫,在恢復特征點的三維坐標時可將特征點在用戶坐標系下的Z軸坐標統一設置為工件的高度。
為了檢驗特征點的準確性,如圖10 所示,利用安裝在機器人末端的激光傳感器掃描焊縫坡口,獲得焊縫坡口中心點在用戶坐標系下的坐標值。

圖10 激光傳感器掃描焊縫坡口
具體為:
(1)利用七點法在傳感器坐標系Z軸建立工具坐標系,并在機器人控制器中加載該坐標系。
(2)將特征點的Z軸坐標加上0.85SZ,稱之為定位點,使機器人末端工具坐標系依次移動到各定位點。其中,SZ表示激光傳感器Z軸的最大量程。
(3)激光傳感器通過掃描焊縫坡口得到坡口中心點的坐標。圖11 為使用傳感器廠家提供的軟件,在圖10 處激光傳感器掃描到的結果。通過左右坡口點的坐標值可以求得激光傳感器坐標系下坡口中心點的坐標值,并借助傳感器標定結果[18],得到用戶坐標系下坡口中心點的坐標值。

圖11 激光傳感器掃描結果
將由單目相機獲得的用戶坐標系下特征點稱為提取點,將由激光傳感器在該位置測出的焊縫坡口中心點稱為實測點,比較兩組點在y向的誤差。
針對3 種典型的工件,獲得的特征點誤差如表1 所示。可知,直線型焊縫的平均誤差最小,為0.23 mm;曲線型焊縫和混合型焊縫的誤差分別為0.42 mm 以及0.45 mm,均較大。

表1 不同焊縫在用戶坐標系下的誤差
將提取點與實測點稱為定位點,繪制圖12、圖13 及圖14,實測點在空心圓圓心處。

圖12 混合型焊縫定位點對比圖

圖14 曲線型焊縫定位點對比圖
通過分析圖12、圖14 可知,誤差主要出現在斜率較大的曲線處。圖12 中斜率的絕對值最大的3 個特征點,誤差分別達到1.66 mm、1.44 mm、1.74 mm;圖13 中斜率的絕對值最大的3 個特征點,誤差分別達到1.45 mm、1.54 mm、1.12 mm。這是因為當焊縫的斜率較大時,x值的微小變化,將引起較大的y值變化,導致這部分的特征點的定位誤差相對較大。另外,由圖12 可見,在直線焊縫與曲線焊縫交點附近的特征點,也會出現較大的誤差,這是因為此處的斜率較大,同時加工誤差也較大。
在實際應用中,單目相機可彌補激光傳感器掃描范圍不足,需要人工示教的缺陷,提高焊接系統路徑規劃的自動化水平。并且當工件為平面焊縫且平行于相機成相面時,可直接采用單目相機的識別結果。
將特征點作為路徑中間點即可進行路徑規劃,因此,路徑規劃的結果,主要取決于特征點坐標值的準確性。
針對5.2 節實驗中的曲線型焊縫,使用得到的焊接路徑中間點,采用平滑樣條插值、多項式擬合、高斯擬合規劃路徑,得到的結果如圖15 所示。

圖15 曲線焊縫路徑規劃結果
從圖15 中可見,多項式擬合對于離散點的擬合效果不佳;高斯擬合法不會經過每一個特征點,在混合型焊縫的路徑規劃中,因無法保證路徑經過曲線與直線的交點,會導致較大的誤差;平滑樣條插值法規劃出的路徑,會經過幾乎所有特征點,并且可以調整曲線的曲度以及點的重合度,是一種更為優秀的路徑規劃方法。
(1)運用雙邊濾波、二值化和閉運算等一系列方法處理工件圖像后,通過判斷跟蹤輪廓時一定步數內能否回到起點,區分出噪聲與焊縫,獲得了無干擾的完整焊縫圖像。
(2)根據單目相機成像原理,得到像素坐標系和用戶坐標系的關系。通過標定相機得到了相機的內外參數矩陣和畸變系數。實現了特征點從像素坐標系到用戶坐標系的轉換。
(3)開展了特征點提取實驗,在用戶坐標系下對比了特征點與實測點。結果表明,對于不同的薄板平面對接焊件,特征點平均定位誤差均小于0.5 mm,達到了自動化焊接的要求。