王少鋒,夏廣遠,吉春生,王海嶺
(1.內(nèi)蒙古科技大學(xué) 機械工程學(xué)院,內(nèi)蒙古 包頭 014010;2.包頭市特種設(shè)備檢驗所,內(nèi)蒙古 包頭 014030;3.內(nèi)蒙古北方重工業(yè)集團有限公司,內(nèi)蒙古 包頭 014033)
工業(yè)機器人技術(shù)已經(jīng)廣泛應(yīng)用于生產(chǎn)和生活的各個方面,工件抓取和搬運是其中一項重要的應(yīng)用[1-2]。現(xiàn)有生產(chǎn)線上工作的工業(yè)機器人主要通過示教或離線編程的方式并結(jié)合生產(chǎn)線上的機械定位結(jié)構(gòu)完成目標(biāo)抓?。?]。通過示教或離線編程方式完全可以勝任自動化程度高、工件位姿固定的生產(chǎn)線工作[4],但是該方式需要工業(yè)機器人與工件傳送系統(tǒng)精準(zhǔn)配合,這在很大程度上限制了工業(yè)機器人的靈活性,并且自動化程度低的工廠需要搭建配套的生產(chǎn)線才能使用,增加了前期投資,提高了使用門檻[5]。許多學(xué)者將機器視覺技術(shù)引入了工業(yè)機器人領(lǐng)域。機器視覺技術(shù)作為計算機科學(xué)的一個重要研究方向,是指用攝像機對目標(biāo)進行圖像采樣,并將圖像傳入計算機進行處理,得到目標(biāo)信息的技術(shù),具有非接觸、速度快和精度適中等特點[6]。應(yīng)用機器視覺技術(shù)可以有效對生產(chǎn)線傳送位置不固定的工件進行定位,協(xié)助工業(yè)機器人完成抓取和搬運等作業(yè)[7]。
目前,視覺引導(dǎo)的工業(yè)機器人定位抓取主要有單目視覺定位和雙目或多目視覺定位兩種方式。徐凱[8]將安川MA1440工業(yè)機械手和德國BasleracA1300-30gm工業(yè)攝像機相結(jié)合,提出一種雙目視覺機械手定位抓取系統(tǒng)設(shè)計方案,通過雙攝像機圖像視差計算目標(biāo)物體的三維空間信息,實現(xiàn)引導(dǎo)機械手抓取目標(biāo)工件。該雙目視覺系統(tǒng)應(yīng)用于工件三維重建實驗效果較好,但對于工業(yè)機械手抓取問題,基于雙目視覺的系統(tǒng)計算量較大,需要高性能計算機支持,影響抓取的實時性;張馳等[9]將單目視覺技術(shù)應(yīng)用于工業(yè)機器人智能抓取系統(tǒng)中,通過計算輪廓質(zhì)心獲取工件坐標(biāo),建立SOCKET通信,將求取的位姿發(fā)送給機械臂控制系統(tǒng)引導(dǎo)機械臂抓取,并實驗驗證了該系統(tǒng)的可行性。單目視覺定位技術(shù)在工程上有許多成熟的應(yīng)用,但目前大多數(shù)系統(tǒng)的圖像處理部分主要由PC終端完成,集成性低且成本較高。針對上述問題,本文提出一種集成度高、速度快、成本低的單目視覺引導(dǎo)機械臂定位抓取技術(shù)方案。
單目視覺工業(yè)機器人定位系統(tǒng)主要由工業(yè)機器人、攝像頭模組和圖像數(shù)據(jù)處理模塊組成。
如圖1所示,選用KUKA KR20 R1810型工業(yè)機器人,最大負載20 kg,工作空間范圍可達1 813 mm,重復(fù)定位精度±0.04 mm,通信接口豐富,滿足工件抓取的實驗要求[10]。
圖1 KUKA KR20 R1810型工業(yè)機器人Fig.1 KUKA KR20 R1810 industrial robot
攝像頭模組中,圖像傳感器為安森美半導(dǎo)體公司生產(chǎn)的MT9V034全局快門CMOS圖像傳感器,該芯片最高分辨率為752像素(H)×480像素(V),能以每秒60幀(Fps)的速度輸出,支持調(diào)節(jié)曝光時間、曝光增益、白平衡等參數(shù)。為應(yīng)對鏡頭畸變帶來的定位誤差,光學(xué)鏡頭采用定焦(焦距3.6 mm)無畸變鏡頭。圖像傳感器和光學(xué)鏡頭共同構(gòu)成攝像頭模組,如圖2(a)所示。
圖像數(shù)據(jù)處理模塊選用Xilinx ZYNQ系列開發(fā)板,ZYNQ是Xilinx公司推出的行業(yè)內(nèi)第一個可擴展處理平臺系列,集成FPGA可編程邏輯器件與雙核ARM Cortex-A9處理器,主頻767 MHz,為高端嵌入式應(yīng)用提供所需的處理與計算性能,如圖2(b)所示。針對嵌入式機器視覺應(yīng)用,該開發(fā)板提供多種圖像傳感器接口標(biāo)準(zhǔn),支持基于FPGA硬件加速的視頻預(yù)處理和高速圖像處理,可顯著提高系統(tǒng)性能。搭載可移植的OpenCV計算機視覺庫,可以跨平臺使用現(xiàn)有的視覺算法。針對與機器人通訊問題,提供多種工業(yè)以太網(wǎng)標(biāo)準(zhǔn)進行連接[11]。
圖2 圖像采集及處理模塊Fig.2 Image acquisition and processing module
對于單目視覺定位的嵌入式軟件開發(fā),使用支持Xilinx ZYNQ開發(fā)板的PYNQ開源軟件框架,PYNQ全稱為Python Productivity for ZYNQ,即在原有ZYNQ架構(gòu)基礎(chǔ)上,添加了對Python的支持,可在ZYNQ平臺直接導(dǎo)入Python豐富的擴展庫進行開發(fā),無需設(shè)計可編程邏輯電路,即可通過Python編程調(diào)用FPGA模塊,降低了ZYNQ嵌入式系統(tǒng)開發(fā)難度[12],并且可以將OpenCV計算機視覺庫移植到PYNQ開發(fā)框架中,方便高效處理圖像。
單目視覺工業(yè)機器人定位系統(tǒng)如圖3所示。在本系統(tǒng)中,工業(yè)機器人安裝在可移動滑軌上,負責(zé)對目標(biāo)進行抓取操作,攝像頭模組水平固定,安裝在傳送帶正上方,負責(zé)獲取目標(biāo)區(qū)域的圖像并傳輸至圖像數(shù)據(jù)處理模塊,數(shù)據(jù)處理模塊則對采集的圖像進行處理,實現(xiàn)目標(biāo)定位。
圖3 單目視覺工業(yè)機器人定位系統(tǒng)Fig.3 Positioning and grasping system of monocular vision industrial robot
首先,工作時工件由傳送帶運輸?shù)綀D像采集區(qū)域,兩側(cè)光電開關(guān)接收到工件到位信號后,攝像頭獲取圖像,圖像數(shù)據(jù)處理模塊對圖像進行處理,計算出工件的中心坐標(biāo),然后經(jīng)過通訊接口發(fā)送給工業(yè)機器人控制柜,控制柜根據(jù)坐標(biāo)控制機器人運動,從而實現(xiàn)機器人抓取搬運操作。
機器人抓取需要目標(biāo)的三維空間坐標(biāo),通過相機拍攝處理得到的工件坐標(biāo)僅能表達二維坐標(biāo)信息。因此,為了從二維圖像反推得到三維信息,必須構(gòu)建相機成像的幾何模型,建立坐標(biāo)系間轉(zhuǎn)換關(guān)系,進而得到相機成像的內(nèi)部和外部參數(shù),確定三維空間中某點與其在圖像中對應(yīng)點之間的相互關(guān)系。
相機成像遵循小孔成像原理,由于采用無畸變鏡頭,因而符合線性成像模型[13]。相機成像幾何模型如圖4所示,由像素坐標(biāo)系oiuv、圖像坐標(biāo)系oxy、相機坐標(biāo)系OcXcYcZc、世界坐標(biāo)系OwXwYwZw構(gòu)成。位于世界坐標(biāo)系的目標(biāo)點P在成像平面對稱面的像點為p,Pp延長線上的點Oc為相機的光心,3點共線。Oc到成像平面對稱面的距離為焦距f,光心到目標(biāo)點距離為Zc。
圖4 相機成像幾何模型Fig.4 Camera imaging geometry model
在小孔成像模型中,目標(biāo)物體的三維空間坐標(biāo)和二維圖像坐標(biāo)之間的關(guān)系是線性的,坐標(biāo)之間轉(zhuǎn)換關(guān)系包含剛體變換和投影變換。
2.1.1 像素坐標(biāo)系與圖像坐標(biāo)系轉(zhuǎn)換關(guān)系
像素坐標(biāo)系與圖像坐標(biāo)系都位于成像平面上,只是原點位置和單位不同。假設(shè)圖像坐標(biāo)系原點位于像素坐標(biāo)系中坐標(biāo)點(u0,v0),u0,v0分別表示所在圖像像素的u0行與v0列,d x和d y分別表示單個像素點物理尺寸,因此轉(zhuǎn)換關(guān)系式為
2.1.2 圖像坐標(biāo)系與相機坐標(biāo)系轉(zhuǎn)換關(guān)系
相機成像幾何模型如圖4所示,三維坐標(biāo)系向二維坐標(biāo)系轉(zhuǎn)換涉及投影變換,相機坐標(biāo)系中目標(biāo)點P坐標(biāo)(Xc,Yc,Zc)投影到圖像坐標(biāo)系中的點p坐標(biāo)為(x,y)。根據(jù)三角形相似原理可知:△ABOc~△oCOc,△PBOc~△pCOc。由此可得
式(2)化為矩陣
2.1.3 相機坐標(biāo)系與世界坐標(biāo)系轉(zhuǎn)換關(guān)系
相機坐標(biāo)系與世界坐標(biāo)系之間符合剛體變換關(guān)系,可用旋轉(zhuǎn)矩陣R和平移矢量T描述,轉(zhuǎn)換關(guān)系如式(4)所示。矩陣R和T統(tǒng)稱為相機的外參矩陣,可以通過測量工業(yè)機器人原點坐標(biāo)與相機坐標(biāo)獲得。
聯(lián)立式(1)、式(3)和式(4),可以得到世界坐標(biāo)系中任一點與像素坐標(biāo)系對應(yīng)點之間的轉(zhuǎn)換關(guān)系,即
Zc為相機鏡頭光心到目標(biāo)的距離,由于單目相機無法通過單個圖像直接獲得Zc值,對于本系統(tǒng)相機位置固定情況,可以直接手動測量Zc值,代入式(5)即可。
相機成像幾何模型構(gòu)建完成后,獲得式(5)所示坐標(biāo)系間的轉(zhuǎn)換關(guān)系,其中等號右邊第一項為相機內(nèi)參矩陣,參數(shù)與相機型號和制造誤差有關(guān),因此,需要通過相機標(biāo)定試驗求解參數(shù)。
相機標(biāo)定采用張正友標(biāo)定法[14],標(biāo)定板選擇棋盤格標(biāo)定板,格子數(shù)為7×9,黑白方格,方格尺寸為26.5 mm×26.5 mm,如圖5所示。相機標(biāo)定時,待標(biāo)定相機以不同角度拍攝固定地面上的標(biāo)定板,拍攝距離為300~500 mm,拍攝15幅不同角度的標(biāo)定板照片,照片保存后加載到MATLAB中的Camera Calibrator程序中求解標(biāo)定參數(shù)。
圖5 標(biāo)定板Fig.5 Calibration board
經(jīng)過程序計算后,得到圖6所示的相機與標(biāo)定板位置關(guān)系和圖7所示的標(biāo)定重投影誤差,可以看到15次拍攝方位分布均勻,標(biāo)定板角點坐標(biāo)重投影的平均誤差為0.1像素,小于程序規(guī)定的0.5像素,本次標(biāo)定符合試驗要求,相機標(biāo)定結(jié)果即相機的內(nèi)參數(shù)如表1所示。
圖6 相機與標(biāo)定板位置關(guān)系Fig.6 Position relationship between camera and calibration board
表1 相機的內(nèi)參數(shù)Tab.1 Internal parameters of the camera
圖7 相機標(biāo)定重投影誤差Fig.7 Reprojection errors of camera calibration
本文根據(jù)實際需求將液化氣罐作為待定位工件,如圖8(a)所示,對液化氣罐閥門中心進行定位研究,提出以下圖像處理算法的流程:(1)圖像預(yù)處理;(2)輪廓提取與識別;(3)圖像坐標(biāo)提取。
圖8 預(yù)處理效果圖Fig.8 Preprocessing effect picture
圖像預(yù)處理可消除圖像中的無關(guān)信息,增強有用信息,簡化圖像數(shù)據(jù),從而提高后續(xù)識別算法效率和可靠性。本系統(tǒng)圖像預(yù)處理流程主要包括灰度及高斯濾波、Otsu二值化、閉運算和開運算。
3.1.1 灰度及高斯濾波處理
MT9V034圖像傳感器采集的是RGB三通道彩色圖像,后續(xù)輪廓識別不涉及目標(biāo)顏色,因此對彩色圖像進行灰度處理,轉(zhuǎn)化為只包含亮度信息的灰度圖像,減小后期算法運算量。
歸根結(jié)底,是老師和家長雙方對班級群的作用和意義沒有一個正確而統(tǒng)一的認知。正如本文標(biāo)題中所指出的,班級群是一個被放大的“生物群落”,當(dāng)我們將太多目的投注到班級群中時,這個群落無法承受超負荷的重擔(dān),平衡被打破,群落便失去了生命力。那么,我們?nèi)绾蝸頌檫@個被放大的“生物群落”減負呢?
圖像采集傳輸過程中不可避免會引入噪聲,而輪廓邊緣提取對噪聲比較敏感,因此灰度處理后,需要對圖像進行降噪。經(jīng)過對比測試,采用高斯濾波對后期輪廓邊緣提取的完整度有明顯改善?;叶忍幚砑案咚篂V波效果如圖8(b)所示。
3.1.2 Otsu二值化
圖像二值化是將圖像中目標(biāo)與背景分開,使圖像變得簡單清晰,減少后續(xù)數(shù)據(jù)處理量的同時突出感興趣區(qū)域。圖像二值化常選取固定灰度值將圖像分為目標(biāo)和背景兩部分。但在光照變化的真實應(yīng)用場景,固定閾值分割效果不理想。因此,采用日本學(xué)者大津提出的基于最大類間方差法的自適應(yīng)閾值確定方法,即Otsu二值化方法[15],統(tǒng)計前景區(qū)域和背景區(qū)域之間灰度值的類間方差,類間方差最大時,構(gòu)成圖像的這兩部分區(qū)域差別也最大,表明當(dāng)前閾值最優(yōu),效果如圖8(c)所示。
3.1.3 閉運算和開運算
閉運算和開運算同屬于形態(tài)學(xué)操作,閉運算是對圖像先膨脹后腐蝕處理的過程,開運算則相反。針對Otsu二值化處理后出現(xiàn)的圖像前景內(nèi)部小空洞和背景噪點,先閉運算處理掉前景內(nèi)部小空洞,再開運算消除背景噪點和前景毛刺,效果如圖8(d)所示。
經(jīng)過圖像預(yù)處理后,二值圖像可清晰顯示出目標(biāo)輪廓。采用Suzuki S的圖像邊界提取算法[16]提取二值圖像中的輪廓,在OpenCV中使用基于此算法的FindContours()函數(shù)獲取圖像的輪廓邊緣信息,如圖9(a)所示,從而識別目標(biāo)輪廓。
圖9 輪廓提取與識別Fig.9 Contour extraction and target recognition
輪廓面積即輪廓包圍區(qū)域的像素個數(shù)。對于相機與待識別工件相對位置變化不大的場景,目標(biāo)輪廓面積在一定范圍內(nèi)。經(jīng)過試驗可知,相機在1 200 mm高度下液化氣罐閥門外輪廓面積為3 000~3 200像素,閥門內(nèi)圓面積為400~500像素,設(shè)置安全系數(shù)1.2以保證不同拍攝角度目標(biāo)輪廓不被剔除。最小外接矩形長寬比是為了識別閥門的不規(guī)則外輪廓,每個輪廓對應(yīng)唯一的最小外接矩形,由圖9(a)可知,閥門外輪廓最小外接矩形近似為正方形,因此長寬比限制為0.9~1.1。對于閥門的圓形內(nèi)輪廓識別,由于拍攝角度不同,在照片中可能表現(xiàn)為橢圓。由式(6)可知,無論處于什么拍攝角度,輪廓面積與最小外接矩形面積比都為π/4,因此將輪廓面積與最小外接矩形面積比作為閥門內(nèi)圓的識別條件。
基于以上特征參數(shù)識別方法,設(shè)計如下閥門輪廓識別算法:首先,使用輪廓面積條件對輪廓集合進行初步篩選,取得輪廓面積3 000~3 200像素和400~500像素的輪廓集合;其次,將輪廓面積3 000~3 200像素的輪廓集通過輪廓最小外接矩形長寬比條件進行過濾,獲取閥門外輪廓,同時將面積400~500像素的輪廓集通過輪廓面積與最小外接矩形面積比條件進行過濾,獲取閥門內(nèi)圓輪廓,識別出閥門內(nèi)外輪廓,如圖9(b)所示;最后,實際應(yīng)用中可能出現(xiàn)不能同時獲取到內(nèi)外輪廓的情況,為此設(shè)置判斷條件,當(dāng)?shù)玫絻?nèi)外輪廓時,同時計算兩個輪廓中心坐標(biāo)取平均值提高精度,當(dāng)識別出一種輪廓時,即只輸出當(dāng)前輪廓的中心坐標(biāo),當(dāng)未取得閥門輪廓時,程序重新采集圖像進行處理。
規(guī)則工件中心點與質(zhì)心坐標(biāo)相同,可以通過求取工件輪廓質(zhì)心的方式獲得中心像素坐標(biāo)。首先計算工件的輪廓矩,尺寸為M×N的數(shù)字圖像f i,()j,其p+q階幾何矩mpq的計算公式為
對于二值圖像,p=q=0時,m00為零階矩,代表輪廓內(nèi)白色區(qū)域像素的總和,即該輪廓的像素面積。p=1,q=0時,m10為一階矩,代表白色像素的x坐標(biāo)值和。p=0,q=1時,m01為一階矩代表白色像素的y坐標(biāo)值和。由此可以獲得圖像質(zhì)心( i,j)坐標(biāo)為
通過上述計算,獲得工件輪廓的質(zhì)心,得到工件中心點坐標(biāo),將坐標(biāo)代入式(5)即可求出世界坐標(biāo)。
為驗證系統(tǒng)有效性,在實驗室進行測試。以液化氣罐為目標(biāo)工件,閥門中心為定位目標(biāo),相機通過水平儀測量,水平安裝在坐標(biāo)(1 350,0,1200)位置采集圖像,液化氣罐在相機視場內(nèi)(600 mm×600 mm)任意放置,如圖10所示。
首先將液化氣罐放置在指定區(qū)域后,手動控制機械臂夾持標(biāo)定針移動到液化氣罐的閥門中心,在示教器上讀取當(dāng)前坐標(biāo),作為閥門中心的實際坐標(biāo)。隨后,驅(qū)動機械臂回至初始位置,切換為機器視覺模式,使用相機獲取圖像后,對圖像進行處理獲取閥門中心的二維坐標(biāo),利用前文方法建立參數(shù)模型和標(biāo)定參數(shù)進行坐標(biāo)轉(zhuǎn)換,得到工件在機器人坐標(biāo)系下的空間坐標(biāo),進而通過工業(yè)以太網(wǎng)將空間坐標(biāo)發(fā)送至機器人伺服控制器,驅(qū)動機械臂夾持定位針移動至液化氣罐閥門中心,并從示教器上讀取當(dāng)前坐標(biāo)作為視覺定位坐標(biāo)。
按照以上流程進行定位試驗,10次結(jié)果與誤差如表2所示。
由表2可知,X方向的最大誤差為-3.20 mm,Y方向的最大誤差為2.12 mm,真實坐標(biāo)與視覺定位坐標(biāo)之間的最大直線距離為3.58 mm。
經(jīng)分析,認為誤差主要來自以下3個方面:(1)相機采用無畸變鏡頭,忽略了徑向與切向畸變,通過觀察誤差的分布情況,遠離鏡頭中心位置(1 350,0)的定位點誤差明顯增加,因此,無畸變鏡頭實際上仍有較小的畸變存在;(2)通過水平儀對相機找平存在測量與安裝誤差;(3)地面平整度不夠,液化氣罐閥門與鏡頭光心的垂直距離Zc值有一定變化,影響坐標(biāo)轉(zhuǎn)換精度。
本文提出了基于嵌入式的單目視覺工業(yè)機器人定位抓取系統(tǒng),該系統(tǒng)硬件設(shè)備采用ZYNQ開發(fā)板和MT9V034攝像頭模組,軟件算法開發(fā)使用搭建的PYNQ開發(fā)框架和移植的OpenCV計算機視覺庫,通過軟硬件相結(jié)合,在嵌入式平臺實現(xiàn)了圖像采集、預(yù)處理、輪廓提取、目標(biāo)識別與定位、空間坐標(biāo)轉(zhuǎn)換等過程,可以準(zhǔn)確獲取目標(biāo)工件的坐標(biāo),進而與工業(yè)機器人通訊,引導(dǎo)工業(yè)機器人定位抓取,最后通過實驗驗證了系統(tǒng)的可行性和定位的準(zhǔn)確性。與其他采用計算機作為視覺處理平臺的系統(tǒng)相比較,嵌入式平臺系統(tǒng)具有集成度高、成本低、體積小等優(yōu)勢。在軟件算法開發(fā)上,基于Python和OpenCV的開發(fā)環(huán)境易于學(xué)習(xí),適合非機器視覺專業(yè)人員開發(fā)使用。因此本套系統(tǒng)具有較高工程實用性,對實現(xiàn)工業(yè)自動化、提高生產(chǎn)效率有著重要意義。