黃錦洲,翟敬梅,吳志明
(華南理工大學 機械與汽車工程學院,廣東 廣州 510640)
工業機器人的作業環境中存在各種作業目標或障礙物,為實現工業機器人在非結構環境中自主作業,需要準確實時地檢測出這些目標體或障礙物的外部形狀、尺寸以及位置等信息。通常利用各種傳感器技術對工業機器人作業環境中的工件的進行三維測量,其中較為常用的一種方法是采用雙目視覺技術得到工件輪廓邊緣的三維點云數據,由此進一步獲取工件的形狀、尺寸等信息。目前大多是手動選取點云數據中的關鍵點,再通過他們之間的幾何關系計算出工件的實際尺寸[1-3]。該方法測量的準確性易受人為因素的影響,且難以實現自動測量。為此不同學者提出了不同的方法。文獻[4]采用最小外接矩形法進行尺寸測量,這種方法能實現自動測量且實時性較好,對矩形工件測量效果較好,但對于非矩形工件只能進行尺寸的大概估計。文獻[5]提出了一種利用輪廓數據擬合提取尺寸信息的方法,但只考慮了二維平面下曲線擬合,不適應工業機器人三維的作業空間。針對目前方法存在的問題,提出了一種基于工件邊緣曲率角的工件幾何信息自動提取方法,該方法簡單、實時性好,且尺寸測量誤差較小,可滿足大多工業生產要求。
在工業實際生產中,工件大多具有圓柱體或多面體等較規則形狀,通過其上下表面即可獲取關鍵形狀及尺寸信息,因此在雙目視覺測量中提取工件的上下表面邊緣的三維點云數據。
雙目相機獲取的工件左右圖像先進行立體校正,使左右圖像實現行對準,然后采用Canny邊緣提取算法提取工件的邊緣,此時邊緣點的分布大致存在幾種情況,如圖1所示。

圖1 邊緣點幾種分布情況Fig.1 Several Distribution of Edge Points
不同的邊緣點由于待匹配點數量不同而導致誤匹配的概率不一樣。圖1(a)的邊緣點通常存在多個待匹配點,各個待匹配點間距離相近,此時容易出現誤匹配;圖1(b)、圖1(c)所示邊緣點的待匹配點通常只有一到兩個,此時出現匹配概率較小。針對這一特點,提出一種基于灰度相關的邊緣點分類匹配算法,算法流程,如圖2所示。

圖2 立體匹配算法流程圖Fig.2 The Flow Diagram of Stereo Matching Algorithm
左右圖像經過立體校正后,根據對極幾何可知,對于每一個目標點,只需在該點所在掃描線上尋找對應的匹配點[6]。這使得匹配的搜索范圍從二維降到一維。為進一步減少搜索范圍以便減低誤匹配率,引入視差約束。根據工作距離算出初始視差范圍,以此視差范圍在低分辨率的圖像上進行粗匹配,得到縮小的視差范圍,再根據這一視差范圍進行精匹配。
得到縮小的視差范圍后,仍存在同一掃描線上在該視差范圍內有多個待匹配點的情況,傳統的匹配算法對所有點采取同一匹配策略,難以兼顧效率與精度。為此,將邊緣點進行分類:將邊緣圖二值化,若某邊緣點八鄰域只有水平左側和水平右側存在邊緣點,如圖1(a)所示。將該點定義為橫向點;將其他分布情況的邊緣點定義為一般點。
對于一般點,只需采用較小支持窗口尺寸的SAD相似性測度函數計算灰度相關值,并按WTA(winner-takes-all)原則進行匹配。對于橫向點,計算灰度相似性時同樣采用SAD,為獲取足夠的匹配信息,支持窗口尺寸適當擴大,于此同時引入順序約束和視差梯度約束以降低歧義性,最后采用左右一致性校驗以進一步去除誤匹配。
立體校正得到了重投影矩陣:

式中:cx、cy—左相機主點在左圖像上的x和y坐標;f—左相機焦距;T—左右相機的基線距離。
而得到若干邊緣匹配點對后,假設(x,y)為某點在左圖中像素坐標,由該點的視差d及重投影矩陣Q可得:

則該點的三維坐標為(X/W,Y/W,Z/W),這樣即可得到工件的邊緣三維點云數據。
通常三維點云數據中包含部分噪聲,其中一部分為與整體輪廓偏離較遠的外點;而另一部分則存在于較為連續的邊緣點中,如圖 3(a)所示。
考慮到對邊緣的平滑度比較敏感且效率要求較高,采用均值濾波算法進行降噪處理。濾波效果,如圖3(b)所示。邊緣平滑度滿足后續的信息處理要求。

圖3 三維點云數據濾波前后對比Fig.3 Comparison Before and After Filtering the 3D Point Clouds
要計算邊緣點云中某一點的曲率,需找出該點的左右鄰近點。傳統的方法為通過幾何距離進行尋找,此時計算點云中N個點的曲率則需對整個邊緣點云進行N次遍歷。為提高效率,提出一種邊緣點云數據環形排序算法,將邊緣點云數據按逆時針方向呈環形排列,使相鄰的點儲存到線性表相鄰的位置上,避免了重復耗時的遍歷。
將點云數據投影到XOY平面上,考慮到幾何體的輪廓為閉合曲線,用式(3)和式(4)算出邊緣輪廓在二維平面上的幾何中心點O(xˉ,yˉ),以該點為極點建立極坐標系,算出每個點在極坐標系中的θ角,并按θ角從小到大按逆時針順序進行環形排序,即可得到有序的邊緣點序列。

A、B、C 三點對應極角大小排列順序為∠θB<∠θA<∠θC,于是排序結果為B→A→C,如圖4所示。

圖4 排序示意圖Fig.4 Diagrammatic Sketch of Sorting
點云數據環形排序部分需對輸入數據進行反復遍歷與比較,隨著輸入規模的增加,排序算法所需運算量將呈非線性增長,因此必須對排序環節進行優化。將n個元素從小到大排列,傳統的冒泡排序算法完成整個序列排序平均共需要n(n+1)/2次比較與移動操作。這里采用快速排序法[7],完成整個序列排序平均僅需要nlog2n次比較。若輸入序列包含1000個元素,則性能開銷僅為冒泡排序的1.99%。
檢測形狀和尺寸的關鍵是首先要識別邊緣點屬于直線簇還是曲線簇。通常是求出某點的曲率,并按曲率大小進行分類。在一段連續的曲線中,可以通過微積分的方法求出任何一處的曲率。但這里我們獲取的是離散點,必須先對整組邊緣點云進行曲線擬合,這種方法運算量較大。為保證算法實時性,提出了邊緣曲率角的概念,代替邊緣曲率作為邊緣點云數據分類的標準。
對于邊緣點云數據中任一點P,若M、N分別為其左右相鄰點,將矢量M—→P和P—→N的夾角定義為邊緣曲率角;α即為點P的邊緣曲率角,如圖5所示。

圖5 邊緣曲率角示意圖Fig.5 Diagrammatic Sketch of Edge Curvature Angle
某點的曲率越大,其對應的邊緣曲率角也越大。假設分類直線點與曲線點的邊緣曲率角閾值為h,則分類條件可以近似轉化為:若α>h,則P為曲線點;若α≤h,則P為直線點。
基于點的分類,將其進行分段擬合,將連續一系列的直線點歸類成一個直線段,將連續一系列的曲線點歸類成一個曲線段,并根據線段分類結果對各段曲線進行空間三維點的曲線擬合[8-10]。
不考慮直線與曲線組合的情況,對于由各段直線組成的輪廓形狀,根據各段擬合直線的交點即可得到多邊形的各個頂點的三維坐標,從而獲取工件的空間位置信息,同時算出頂點之間的距離則可得到多邊形各邊的長度,由此可以判斷出等腰三角形、等邊三角形以及一般三角形;正方形、菱形、矩形以及一般四邊形;或者是正n邊形及一般n邊形。
對于由各段曲線組成的輪廓形狀,先將所有曲線段視為圓弧段,并進行空間圓的曲線擬合,得到圓心坐標和半徑r。若曲線段有n個點,求出曲線段上各點到圓心坐標的距離d(ii=1,2,…,n),同時設定曲線長度閾值H1,若對任意<Hl均成立,則該曲線段為圓弧段,擬合結果有效,否則該曲線段為非圓弧段。
采用雙目視覺技術對工件1和工件2進行三維測量,如圖6(a)、圖(b)所示。這兩個工件上下表面一致,因此只需得到其上表面的邊緣點云數據,如圖6(c)、圖6(d)所示。其高度可由上表面與平臺的距離差得到。工件1為立方體,由游標卡尺測量其上表面四條邊長分別為57.32mm、51.24mm、57.56mm、51.12mm,高度為40.56mm;工件2為圓柱體,測量得到其上表面圓的半徑為29.74mm,高度為12.12mm。用C#編寫程序對本方法進行實現,兩個工件的邊緣幾何信息提取結果,如圖6(e)、圖6(f)所示。

圖6 實驗所用工件及結果Fig.6 The Workpieces for Experiment and the Result
對同樣的點云數據采用手動取點法進行尺寸測量結果,如表1、表2所示。由實驗結果可以看出,用本方法檢測得到的形狀與工件形狀一致,程序運行時間在20ms以內,能夠滿足實時性要求,而得到的尺寸測量值與真實值的誤差均在2%以內,且與手動取點法的測量結果相比更接近真實值,可以比較好地排除人為因素對測量結果的影響。因此使用本方法可以實現自動實時、準確地提取出被測工件的尺寸及形狀等幾何信息的目的。

表1 工件1尺寸測量結果Tab.1 The Dimensional Measurement Result of Workpiece 1
提出一種新的工件三維輪廓信息提取方法?;诨叶认嚓P的邊緣點分類匹配算法同時滿足了立體匹配的效率和精度要求,利用點云數據環形排列算法和邊緣曲率角對點云數據分類提高了算法整體效率,最后由曲線擬合提取出被測工件的三維輪廓信息。通過實驗對該方法進行了驗證,實驗結果表明,該方法可準確提取出具有較規則形狀工件的形狀、尺寸等信息,適用于工業機器人自主作業環境三維信息檢測以及工件尺寸自動測量等場合。