高茂源,王好臣,趙錦澤,于躍華,李家鵬
(山東理工大學 機械工程學院,山東 淄博 255000)
隨著工業生產和運輸領域自動化程度的提高,工業機器人得到了廣泛應用,替代了許多重復性,重體力的工作。工業機器人的應用也有效的提高現代生產的效率。在生產和運輸過程中一個最重要的流程就是碼垛,伴隨著工業自動化技術的成熟,國內外的機器人碼垛技術有了跨越式的發展[1]。但如今大多數機器人碼垛采用示教的方式,通過設置抓取點與放置點,然后對機器人程序進行編程實現碼垛,但一旦改變物品的擺放位置,機器人將無法識別從而造成誤抓取,所以這種方式智能化程度低且適應性差。機器視覺技術相當于模擬人眼去識別與判斷,將機器視覺技術與機器人碼垛相結合可實現產品的快速定位,從而提高作業效率,保證其可靠性與穩定性,實現碼垛智能化[2]。嚴亮等人提出一種結合SURF算法和RANSAC算法,通過仿射變換得到目標關鍵點信息完成抓取的定位方法[3]。徐博凡等人提出一種視覺引導的FANUC機器人抓取系統[4]。
本研究提出一種雙目視覺引導機器人碼垛的定位方法,利用視覺處理軟件Halcon完成了攝像機的標定,獲得相機內外參數。通過極線校正獲得共面行對準的兩幅圖像,提出一種手眼標定方法。利用圖像濾波與灰度變換相融合的算法對圖像進行預處理。將灰度級分布與立體匹配方法相結合得到效果更好的視差圖,對其進行區域分割,篩選,形態學等操作獲得產品區域的中心點,通過計算后傳輸給機器人進行定位、碼垛。
機器人碼垛定位系統主要由攝像機、視覺處理軟件、工控機以及碼垛機器人組成,即圖像獲取、圖像處理與執行單元三部分。
在進行碼垛產品定位之前需要對兩個攝像機進行標定,然后完成手眼標定工作。工控機作為中央控制器控制機器人程序運行,當機器人收到開始信號后移動到拍照位置,由固定于機器人末端的兩個攝像機拍攝碼垛產品的圖像并通過以太網傳送至工控機[5]。由工控機的視覺處理軟件執行圖像處理工作,得到產品的中心坐標后轉換為機器人所執行的位姿矩陣,將數據傳送給機器人,機器人控制末端夾具進行定位、碼垛。定位抓取系統示意圖如圖1所示。

圖1 定位抓取系統示意圖
為了準確獲取碼垛產品的位置,需要對攝像機進行標定。通過建立攝像機模型獲得圖像像素坐標與現實中物體空間坐標之間的關系,以此來求解攝像機的內外參數。由針孔成像模型可知世界坐標系(XW,YW,ZW)與像素坐標系(u,v)之間的轉換關系為:
(1)
其中:M1為攝像機內部參數,包括焦距f,每個像元的高dx、寬dy,圖像中心點坐標(u0,v0);M2為攝像機外部參數,包括攝像機坐標系轉換為世界坐標系的平移向量T和旋轉矩陣R。
雙目標定是為了確定兩個攝像機之間的結構參數,即平移向量T1和旋轉矩陣R1,兩個參數可由攝像機的世界坐標與圖像坐標的轉換關系求得[6]。設三維空間中的一點P,在世界坐標系下的坐標點為PW,左右兩個攝像機坐標系下的坐標點分別為Pl,Pr,通過兩個攝像機的結構參數將點Pl,Pr相聯系,如式(2)所示。
Pr=R1(Pl-T1)
(2)
通過對兩個攝像機進行標定已分別求出兩個攝像機的外部參數,設左攝像機的外參矩陣為Rl,Tl,右攝像機的外參矩陣為Rr,Tr,世界坐標系下的坐標點為PW,與左右兩個攝像機坐標系下的坐標點Pl,Pr建立聯系可得矩陣方程:

(3)
聯立式(4)~(5)可得:
(4)
通過與式(5)進行比較可知兩個攝像機的結構參數可由以下公式計算:
(5)
其中:變量Rl,Tl,Rr,Rl均為已知。
手眼標定的目的是建立機器人末端坐標系與攝像機坐標系之間的轉換關系,從而推導出攝像機相對于機器人末端的相對位姿關系[7]。傳統的手眼標定模型一般都是通過攝像機獲得標定物在多個不同位置的外部參數,然后得到機器人末端在不同位置的姿態,將其與攝像機標定所得的外部參數相結合,進而求出攝像機與機器人末端工具的相對位姿[8]。此過程計算量大,轉換關系較多,而機器人末端工具進行抓取操作是基于機器人基礎坐標系進行的,因此本研究將世界坐標系建立在機器人基礎坐標系上,這樣只要求出機器人基礎坐標系與攝像機坐標系之間的轉換關系,機器人就可以控制機器人末端夾具實現碼垛作業。
假設空間中一點P在坐標系O1-xyz和O2-uvw下的坐標為(O1x,O1y,O1z)、(O1u,O1v,O1w),則坐標系O1-xyz到O2-uvw的變換矩陣可表示為:
(6)
其中:R表示兩個坐標系之間的旋轉投影,T表示平移投影。
定義一個與標定物相聯系的參考坐標系,分別建立其攝像機坐標系和機器人基礎坐標系與參考坐標系之間的轉換關系,通過消除參考坐標系,實現攝像機坐標系到機器人基礎坐標系的轉換。通過攝像機標定可得攝像機與參考坐標系之間的轉換關系為Tcam-tran,然后控制機器人末端工具獲得參考坐標系的x,y,z軸在機器人基礎坐標系下的單位投影,驅動機器人獲得x軸上一點、y軸上一點以及參考坐標系原點在機器人基礎坐標系下的坐標,結合式(8)可以得到參考坐標系與機器人坐標系之間的轉換關系Trob-tran,綜上由坐標系的轉換順序可得:
Trob-cam=Trob-tran·Ttran-cam
(7)
在采集與傳輸圖像的過程中會受到噪聲的干擾,使圖像中的重要細節丟失,不利于圖像分析與識別[9]。為了消除圖像噪聲與增強對比度,需要對其進行圖像去噪和灰度變換。針對圖像的中存在的多種噪聲,提出一種圖像平滑與圖像增強相融合的方法。設原始圖像像素灰度為N(u,v),中值濾波后的圖像像素灰度為M(u,v),高斯濾波后的圖像像素灰度為G(u,v),處理后輸出的圖像像素灰度為T(u,v),處理過程可表示為:
T(u,v)=N(u,v)+
[(2N(u,v)-M(u,v)-G(u,v))·s]
(8)
其中:s為動態因子,通過取不同的值來改變中值濾波和高斯濾波后的圖像像素灰度值與原始圖像的像素灰度值的差值。此方法通過消除椒鹽噪聲與高斯噪聲之后對圖像進行灰度變換,可以更好地平滑圖像,增加對比度。
為了減少圖像處理的搜索范圍,需要確保匹配點在極線上搜索,這樣就需要兩個攝像機的光軸平行且成像平面在一個水平面上,這樣在所拍攝的兩幅圖像中,尋找圖像點在另一成像平面中的匹配點,只要在等高像素行尋找即可[10]。但在實際使用中,由于安裝誤差等因素使得兩個相機的空間位置存在旋轉和平移,成像平面不共面且光軸不平行,因此為使其符合理想雙目立體視覺模型,需要對左右攝像機所拍攝的圖片進行極線校正。本研究使用Bouguet算法[11]來進行極線校正,該算法的原理是對左右攝像機所拍攝圖像進行平行重投影,使兩幅圖像落到其像素行對準的同一個前向平行平面上。
通過攝像機標定所得數據,利用視覺處理軟件對攝像機拍攝的左右圖像進行畸變消除和極線校正后可得左右攝像機的主點坐標行坐標相等,即外極線水平,兩個攝像機的相對位姿可由一個平移向量T=[10,0,0]來表示,這樣就確保了左右兩幅圖像成像平面共面且光軸平行。如圖2為攝像機拍攝初始的左右圖像。

圖2 初始圖像
如圖3所示為極線校正后的結果,通過極線校正后的兩個圖像的相對位置發生了變化,左右兩個圖像的對應點可以在等高像素找到,但圖像邊緣不規則,可通過裁剪等后處理來提取有效的圖像部分。

圖3 極線校正后的圖像
視差圖獲取的最重要的一步就是立體匹配。基于特征的立體匹配算法是通過提取特征點獲得視差圖,但所提取的特征點稀疏,導致視差圖不連續,不利于后續處理。而基于區域的SAD與SSD算法受光照影響很大,所獲得的視差圖效果不佳。為了獲得密集且效果好的視差圖,將兩幅圖像的灰度級分布與NCC立體匹配算法相結合[12]。灰度直方圖是關于灰度級分布的函數,首先得到兩幅圖像原始的灰度直方圖,使其中一幅圖像的灰度直方圖與另一圖像的近似,這樣就達到兩幅圖像的灰度級分布相同的目的。如圖4為左圖圖像的灰度直方圖,圖5為右圖圖像的灰度直方圖,通過比較可以看出,兩幅圖像的灰度級分布大致相同。

圖4 左圖圖像的灰度直方圖

圖5 右圖圖像的灰度直方圖
然后利用NCC方法完成立體匹配,匹配函數表示為:
S(r,c,d)=
(9)
其中:r,c為輸入圖像對應像素的行和列坐標,g1,g2為輸入圖像的灰度值,d為左右圖像上的對應點的視差。在立體匹配前對左右圖像的灰度級分布進行近似可以明顯提高匹配精度,獲得更好的視差圖像。對匹配點的搜索添加約束區間,通過圖像金字塔的方法來提高NCC算法匹配的速度,從而降低其計算量[13]。將灰度級分布與NCC匹配函數相結合獲得的視差圖如圖6所示。

圖6 碼垛產品的視差圖
從獲取的視差圖中可以很明顯看出碼垛產品的輪廓區域,為了更加準確定位到產品區域,對視差圖進行圖像處理。利用圖像處理軟件Halcon中的get_region算子將視差圖像由圖像變量轉換為區域變量,對轉換后的區域變量進行形態學運算、連通域的選擇等操作從而精確地定位到產品的區域,將從視差圖中提取的產品區域分別映射到左右圖像中,得到區域中心點分別在左右圖像的坐標為pL=(xL,yL),pR=(xR,yR),然后利用Halcon中image_points_to_world_plane算子將中心點在圖像中的坐標轉換為攝像機坐標系下的坐標。如圖7所示為極線校正后的雙目視覺系統,設碼垛產品的區域中心點P在攝像機下的坐標為(XC,YC,ZC),兩個攝像機中心間的距離為B,由兩攝像機的成像平面共面可得yL=yR=y。

圖7 平行雙目系統
由圖7可得幾何關系:
(10)
因此計算出點P的三維坐標為:
(11)
結合手眼標定模型即可得到攝像機坐標系到機器人基礎坐標系的轉換關系,機器人就可以控制其末端夾具進行碼垛作業。碼垛定位的過程如圖8所示。

圖8 碼垛定位的過程
搭建雙目視覺系統與機器人系統來進行碼垛定位實驗。通過攝像機拍照將碼垛產品的信息傳輸給工控機,進行圖像處理后獲得產品區域中心坐標,將計算結果傳輸給機器人,引導機器人定位,抓取。碼垛定位結果如表1所示。

表1 視覺定位結果與實際坐標比較 mm
通過對3個碼垛產品進行定位可得x,y,z方向坐標的誤差,所產生的誤差主要來源于手眼標定時坐標系的建立、雙目相機的標定和攝像機的畸變以及立體匹配的精度,這都會影響視覺定位的結果。通過比較表1可知在x,y,z方向中實際坐標與視覺定位的最大誤差為0.526 mm,滿足其定位精度。
本文研究了雙目視覺引導機器人碼垛定位的方法,通過雙目標定和手眼標定得到了機器人基礎坐標系與攝像機坐標系的轉換關系,為了提高圖像質量,利用一種融合算法對圖像進行預處理。將灰度級分布與立體匹配相結合得到視差圖,并對其進行處理后得到了產品區域的中心點,通過計算傳輸給機器人進行定位、碼垛。實驗表明:本方法可快速準確的定位到目標位置,識別精度高,具有很好的應用前景。