劉周林,盧建湘,謝煌生,唐慶順,陳虹微
(龍巖學(xué)院機(jī)電系,福建龍巖 364012)
機(jī)器視覺(jué)因具有精度高、非接觸、速度快、客觀穩(wěn)定、可視化的監(jiān)視操作等優(yōu)點(diǎn)[1-2],在包裝行業(yè)和電子行業(yè)得到廣泛的應(yīng)用。對(duì)于包裝零件的拾取或電子元件的貼裝(SMT),視覺(jué)的精確定位是保證物體準(zhǔn)確抓取的核心技術(shù)。然而,造價(jià)昂貴的CCD或CMOS傳感器,其尺寸面積是有限的,因此工業(yè)相機(jī)的視野很難覆蓋整個(gè)包裝工作臺(tái)或電子貼裝工作臺(tái)上的所有零件。要完成物體的定位和抓取,將機(jī)器視覺(jué)與關(guān)節(jié)機(jī)器人或運(yùn)動(dòng)位移臺(tái)相結(jié)合是一個(gè)很好的解決方法。
關(guān)節(jié)機(jī)器人或運(yùn)動(dòng)平移臺(tái)的重要任務(wù)是運(yùn)動(dòng)到視覺(jué)定位點(diǎn)抓取物體,對(duì)于前者自由度多、靈活性好、剛度差,后者自由度少、靈活差、剛度好。對(duì)于無(wú)自動(dòng)變焦的機(jī)器視覺(jué)方案,機(jī)械運(yùn)動(dòng)擴(kuò)展了機(jī)器視覺(jué)“看”到整個(gè)工作臺(tái)的能力;對(duì)于有自動(dòng)變焦的機(jī)器視覺(jué)方案,通過(guò)變焦能夠看到局部或全部的工作臺(tái)視野區(qū)域,然而自動(dòng)變焦過(guò)程中難以準(zhǔn)確地評(píng)價(jià)圖像的清晰度、比例因子的動(dòng)態(tài)變化(精度也是動(dòng)態(tài)變化的)及視覺(jué)定位算法的魯棒性不穩(wěn)定等因素,該方案的應(yīng)用較少。常見(jiàn)的電子貼裝抓取視覺(jué)方案一般配備2個(gè)工業(yè)相機(jī),一個(gè)相機(jī)完成電路板、mark點(diǎn)、拾取零件的定位,另一個(gè)相機(jī)完成拾取零件后的位姿調(diào)整,如解楊敏等[3]研究的高精度貼片機(jī)視覺(jué)系統(tǒng),袁鵬等人[4]研究的貼片機(jī)系統(tǒng)。就目前來(lái)看,基于視覺(jué)定位的貼裝抓取成果很多,如歐陽(yáng)高飛等[5]、解楊敏等[6]、張凱等人[7]、黃恢樂(lè)等[8]關(guān)于貼片定位、直線、角度算法的相關(guān)研究。這些已有的成果大多表現(xiàn)在對(duì)某個(gè)零件或提高視覺(jué)精度的研究,對(duì)于全工作臺(tái)視覺(jué)區(qū)域全部零件的遍歷(搜索)定位和分次抓取的研究很少。介于此,文中提出了基于機(jī)器視覺(jué)和運(yùn)動(dòng)控制的相結(jié)合物體定位和抓取方法,該方案能夠?qū)崿F(xiàn)全工作臺(tái)區(qū)域每個(gè)零件視覺(jué)遍歷(搜索)定位,按照X、Y軸圖像像素之和從小到大的順序抓取零件,為高效率的視覺(jué)貼裝提供很好的科學(xué)依據(jù)。
要實(shí)現(xiàn)零件的正確貼裝或包裝,需要知道工作臺(tái)上每個(gè)零件的準(zhǔn)確位置。工業(yè)相機(jī)是實(shí)現(xiàn)精確定位的基本器件,而機(jī)械手(貼裝頭)根據(jù)相機(jī)得到的工件坐標(biāo)參數(shù),運(yùn)動(dòng)到工作臺(tái)特定位置抓取零件。文中所研究的設(shè)備的硬件布局如圖1所示,其中X軸和Y軸導(dǎo)向梁提供了覆蓋水平工作平面的定位,Z軸導(dǎo)向梁負(fù)責(zé)實(shí)現(xiàn)貼裝頭的下降與抬起動(dòng)作,上CCD相機(jī)固定在Z軸導(dǎo)向梁的另一側(cè),無(wú)法上下運(yùn)動(dòng),圖像的清晰度通過(guò)更換鏡頭或微調(diào)前端鏡頭的實(shí)現(xiàn),其負(fù)責(zé)待裝配托盤(pán)中零件的初始位姿定位,同時(shí)電路板或包裝盒在工作臺(tái)的位姿定位也由上CCD負(fù)責(zé)定位。上CCD軸線與貼裝頭軸線平行且距離是定值,兩軸確定的平面平行于過(guò)Z軸且垂直于工作臺(tái)的平面。下CCD主要調(diào)整零件抓取后因靜電、電機(jī)加減速、振動(dòng)等原因使零件偏離初始的角度定位。貼裝頭通過(guò)快換接口更換不同口徑的貼裝頭,以滿足不同尺寸零件的需求。X、Y、Z三軸具有光柵尺作為反饋,可得知當(dāng)前坐標(biāo)值。電路板/包裝盒托盤(pán)與待裝配零件托盤(pán),在工作臺(tái)具有限位功能,通過(guò)手工或間歇性機(jī)構(gòu)實(shí)現(xiàn)托盤(pán)的自動(dòng)化更換。貼裝頭對(duì)零件的抓取與釋放,由氣動(dòng)控制系統(tǒng)來(lái)保證吸附力的大小。
圖1 硬件布局
在貼裝工作之前,應(yīng)預(yù)先標(biāo)定相機(jī)上CCD與下CCD變形誤差,將其補(bǔ)償?shù)綀D像定位中。視覺(jué)定位方案中,通過(guò)上CCD“粗定位”得知零件位姿,貼裝頭根據(jù)定位參數(shù)抓取零件。當(dāng)零件被抓取后,零件緊貼在貼裝頭端面,貼裝頭與上CCD為平行布置,此時(shí)上CCD采集不到零件圖像。另外,零件在被抓取的瞬間,因電機(jī)的加減速、靜電、振動(dòng)、貼裝頭的吸附力等原因,使零件偏離抓取前的位姿。如果零件的貼裝仍以上CCD定位的參數(shù)將零件安裝到電路板/包裝盒上,必將導(dǎo)致貼裝零件的錯(cuò)位,難于保證裝配精度。因而,視覺(jué)方案中加入了下CCD以實(shí)現(xiàn)零件的“二次定位”,下CCD固定于工作臺(tái)中心,其軸心位置預(yù)先存儲(chǔ)于軟件系統(tǒng)中,將其作為零件定位的參考位置。通過(guò)每次將貼裝零件抬到預(yù)定物距,保證下CCD采集的零件圖像清晰度。最后,零件的安裝參數(shù)由下CCD提供,從而保證零件的最終貼裝精度??偟馁N裝過(guò)程為上CCD的“粗定位”抓取到下CCD的“二次定位”安裝。
要對(duì)待貼裝托盤(pán)中零件的位姿定位,首先應(yīng)獲取每個(gè)零件在待裝配托盤(pán)的位姿情況,從而給出最優(yōu)的決策方案,決定抓取零件的先后順序。每個(gè)零件的位置的獲取,通過(guò)上CCD結(jié)合X、Y軸運(yùn)動(dòng)控制以遍歷的方式將整個(gè)相機(jī)視野覆蓋到全工作臺(tái)平面。圖2所示為CCD布置圖,Vx和Vy表示沿X軸和Y軸單次遍歷運(yùn)動(dòng)的距離,圖3、4、5是3種遍歷方法(圖4、5在圖像跟蹤和游戲算法中常使用)。期中,圖3是傳統(tǒng)的遍歷搜索方法,圖4、圖5是螺旋啟發(fā)式遍歷搜索方法,3種方法的遍歷總路程是相等,且在遍歷過(guò)程中X、Y軸電機(jī)的加減速總次數(shù)相同,但因圖3每次在進(jìn)行一次大的遍歷后進(jìn)入一個(gè)小行程的加速驅(qū)動(dòng)和減速過(guò)程,遍歷過(guò)程容易出現(xiàn)運(yùn)動(dòng)沖擊,因此在此選擇圖4、5的遍歷方法。
圖2 CCD遍歷工作平面
圖3 逐行遍歷路線
圖4 由外到內(nèi)遍歷
圖5 由內(nèi)到外遍歷
算法設(shè)計(jì):以圖2為例(圖3,4,5的計(jì)算過(guò)程類似),設(shè)X軸的進(jìn)給速度為Vx=l(l為CCD視野寬度),Y軸的進(jìn)給速度為Vy=h(h為CCD視野高度)。從而得到,X軸進(jìn)給搜索時(shí)間為tx=L/Vx=L/l,Y軸的進(jìn)給時(shí)間為ty=H/Vy=H/h。
圖6 零件處于CCD視野相交處
而S工作臺(tái)=(Vx×tx)×(Vy×ty)=L×H,因此總的搜索時(shí)間為t=(tx+ty)。當(dāng)每個(gè)零件恰巧處于CCD的視野面內(nèi),等號(hào)成立,實(shí)際工況下是很難做到的。待裝配托盤(pán)擺放的零件容易出現(xiàn)如圖6所示的情況,零件1、2、3零件處于CCD遍歷的視野邊緣處。要獲得零件的重心位置,通過(guò)防遮擋的圖像模版匹配結(jié)合X、Y軸運(yùn)動(dòng)的調(diào)整,將零件成像在CCD視野中,進(jìn)而通過(guò)上CCD定位得知零件重心坐標(biāo)在工作臺(tái)的位置。
首先將預(yù)先制作的模板圖像經(jīng)過(guò)平移、旋轉(zhuǎn)、縮放等仿射變換,并以亞像素的步距進(jìn)行搜索;其次,對(duì)圖像金字塔從頂層往底層求取保存于內(nèi)存的模板圖像的相似度,相近似度比較如式(1)。式中:f(x,y)為目標(biāo)所在的圖像;g(i,j)為目標(biāo)模板;W為模板區(qū)域;fm與gm分布是f(x,y)與g(i,j)在各自相關(guān)窗口的平均值;dx,dy為x和y方向上的亞像素步長(zhǎng);m和n為整數(shù)。一般取dx和dy為0.1~0.01像素即可。為了達(dá)到更高的定位精度,這里的亞像素采用最小二乘法來(lái)確定。
再次,存儲(chǔ)當(dāng)前工業(yè)相機(jī)的X、Y軸位置為P參考,以便回到該位置再次遍歷。最后,通過(guò)移動(dòng)X、Y軸調(diào)整CCD視野,保證零件重心成像在CCD視野中。X軸和Y軸移動(dòng)的位移如式(2),X、Y軸的移動(dòng)使零件完全成像于CCD視野中。
式中:si為理想狀態(tài)下每種零件的面積,如φ5圓形為s1,φ6圓形為s2,3×3的矩形為s3等;s*i為實(shí)際狀態(tài)下的零件面積;ni為理想像素個(gè)數(shù);n*i實(shí)際像素個(gè)數(shù);s*為每個(gè)像素的面積;Δi為給定的每個(gè)零件面積誤差。期中s*通過(guò)式(3)得到。
最后,通過(guò)比較Δi的值得知X、Y軸移動(dòng)的方向是否正確,若Δi變小,說(shuō)明零件進(jìn)入被CCD視野包圍的區(qū)域,方向正確;若Δi變大,說(shuō)明零件偏離被CCD視野包圍的區(qū)域,方向錯(cuò)誤。當(dāng)Δi等于預(yù)定的值,停止移動(dòng)X、Y軸,此時(shí)零件被完成成像在CCD視野面內(nèi),存儲(chǔ)當(dāng)前的坐標(biāo)值P坐標(biāo)為零件要抓取的定位點(diǎn)。接下來(lái)使X、Y軸運(yùn)動(dòng)到P參考位置繼續(xù)進(jìn)行下次遍歷工作,直至CCD遍歷完整個(gè)工作臺(tái)平面。
通過(guò)螺旋啟發(fā)式遍歷零件參數(shù),應(yīng)如何進(jìn)行存儲(chǔ)?在零件的貼裝工藝中應(yīng)首先抓取哪種外形哪個(gè)位置對(duì)象?零件被抓取后,應(yīng)該首先放到哪塊電路板/保證盒的安裝工位?如何保證貼裝過(guò)程和安裝零件過(guò)程路徑最短,不重復(fù)對(duì)同一工位重復(fù)貼裝,進(jìn)而提高貼裝效率、降低貼裝故障?這些問(wèn)題是本研究過(guò)程需重點(diǎn)考慮的問(wèn)題。
由上CCD對(duì)零件參數(shù)的遍歷,主要包括了對(duì)電路板托盤(pán)各工藝孔位和待貼裝零件托盤(pán)各零件的遍歷,前者是為零件抓取后零件的安放提供依據(jù),后者是為了零件的抓取提供依據(jù)。因貼裝工位孔的位置是規(guī)律性放置,而零件在待貼裝托盤(pán)中是隨機(jī)的,以下零件的數(shù)據(jù)存儲(chǔ)為主要研究?jī)?nèi)容。通過(guò)上CCD對(duì)零件的遍歷,得到遍歷過(guò)程中每個(gè)零件的(xnm,ynm,αnm)值,xnm,ynm表示零件在X、Y上的坐標(biāo),αnm表示旋轉(zhuǎn)的角度,數(shù)據(jù)表達(dá)形式如矩陣(4)所示。n表示零件的種類,m表示相同零件的個(gè)數(shù)。
將上述位置矩陣,采用數(shù)據(jù)庫(kù)的數(shù)組、鏈表、堆棧等技術(shù)存儲(chǔ),通過(guò)指針的方式讀取。通過(guò)啟發(fā)式搜索遍歷得到的各零件位置參數(shù),以便確定首先應(yīng)抓取的零件。這里不妨令,得到矩陣(5)。
采用快速排序算法將Cnm從小到大排序,重新存儲(chǔ),重新排序后的數(shù)據(jù)如矩陣(6)所示。其中(表示第1種零件);(表示第2種零件);…(表示第n種零件)。
為了減小抓取過(guò)程因空行程占用的時(shí)間,提高貼裝效率,將Cnm最小的零件作為抓取的對(duì)象。因此,單獨(dú)得到矩陣
當(dāng)零件被貼裝頭抓取且沿Z軸抬起后,首要考慮的問(wèn)題是將零件安裝到哪塊電路板的哪個(gè)工位孔,絕不能允許出現(xiàn)位置貼裝錯(cuò)誤,如將第1種零件貼裝到第2種零件的貼裝孔位。對(duì)于當(dāng)前被抓取的零件,在電路板/包裝盒托盤(pán)中具有多個(gè)相同的貼裝工位,依照上述相同的算法,對(duì)矩陣(5)求差并取絕對(duì)值,得到矩陣(7)。
式中:C1,C2,C3,…,Cn表示當(dāng)前被抓取的各種零件的當(dāng)前坐標(biāo),各行的求差反映了每種零件離各自相同貼裝工位孔的距離關(guān)系。將各行重新排序得到矩陣(8)。
式中:
(表示第1種零件);
(表示第2種零件);…
(表示第n種零件)。
綜上所述,零件在貼裝過(guò)程邊界條件矩陣A保證零件的抓取,由邊界條件B保證零件的貼裝。矩陣A和B為實(shí)現(xiàn)了零件貼裝的合理性和高效性提供一定指導(dǎo)。其貼裝控制流程如圖7所示。
圖7 貼裝控制流程圖
為驗(yàn)證算法的時(shí)效性,采用CAD繪制五邊形、四邊形、圓形3種零件的仿真圖像(零件個(gè)數(shù)為隨機(jī)繪制的),基于halcon 10視覺(jué)算法庫(kù),以Visual C++6.0和Access數(shù)據(jù)庫(kù)作為軟件平臺(tái)。繪制的仿真像如圖8所示,矩形框區(qū)域表示整個(gè)工作臺(tái)的待貼裝零件。
圖8 仿真圖像
實(shí)驗(yàn)方法:將仿真圖像采用圖4遍歷算法,以均等的時(shí)間間隔分別從圖像坐標(biāo)X軸和Y軸進(jìn)入顯示器屏幕(類似于視頻圖像),移動(dòng)仿真圖片模擬工作臺(tái)運(yùn)動(dòng)過(guò)程中采集的圖像。通過(guò)防遮擋的圖像模板匹配方法,尋找每個(gè)零件的貼裝重心位姿,進(jìn)而得到算法搜索每個(gè)零件所需要的時(shí)間。表1所示為搜索每個(gè)零件重心位姿所耗費(fèi)的時(shí)間。
表1 零件搜索時(shí)間ms
由表1可知算法所需要的時(shí)間為8.23~18.67 ms。算法的時(shí)效性比較好,能夠滿足工業(yè)生產(chǎn)需求。
通過(guò)水平的X、Y軸的運(yùn)動(dòng)控制和上CCD的視覺(jué)定位,采用螺旋啟發(fā)式算法遍歷工作臺(tái),使上CCD視野覆蓋整個(gè)貼裝工作臺(tái)。根據(jù)形狀匹配和零件像素面積為判斷條件,實(shí)現(xiàn)了上CCD獲取全部待貼裝零件與貼裝工位的位姿信息。應(yīng)用編程語(yǔ)言中數(shù)據(jù)庫(kù)鏈表存儲(chǔ)和指針技術(shù),完成了位姿矩陣信息的存儲(chǔ)與讀取。采用快速排序算法,將位姿數(shù)據(jù)重新排序,以矩陣A和B為邊界條件,最終實(shí)現(xiàn)了“數(shù)據(jù)獲取—零件抓取—零件貼裝—判斷貼裝”4個(gè)環(huán)節(jié)的貼裝過(guò)程。針對(duì)表面貼裝(SMT)的定位和貼裝效率,提出了由上CCD的“粗定位”實(shí)現(xiàn)數(shù)據(jù)獲取和零件抓取,到由下CCD的“二次定位”實(shí)現(xiàn)貼裝的定位策略。文中所提出的算法與方法,為提高表面貼裝效率和減少貼裝錯(cuò)誤提供了一定的指導(dǎo)。
[1]WU L,PENG Q.Research and Development of Fringe Projection-based Methods in 3D Shape Reconstruction[J].Journal of Zhejiang University Science A:Science in Engineering,2006,7(6):1026-1027.
[2]SU X,ZHANG Q,LI J,et al.Optical 3D Shape Measurement for Vibrating Drumhead[C].Proceedings of 20th Congress of the International Commission for Optics,2005.
[3]解楊敏,史航,劉強(qiáng).高精度貼片機(jī)視覺(jué)定位系統(tǒng)的研究與設(shè)計(jì)[J].裝備制造技術(shù),2007(12):40-41.
[4]袁鵬,胡躍明,吳忻生,等.基于視覺(jué)的高速高精度貼片機(jī)運(yùn)動(dòng)控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)集成制造系統(tǒng),2004(10):188-189.
[5]歐陽(yáng)高飛,鄺泳聰,謝宏威,等.基于亞像素定位的貼裝元件精確取像技術(shù)[J].光電工程,2010,37(6):16-22.
[6]解楊敏,劉強(qiáng).高精度自動(dòng)貼片機(jī)視覺(jué)系統(tǒng)定位算法研究[J].光學(xué)技術(shù),2008,34(3):449-454.
[7]張凱,王瑜輝,尹周平,等.應(yīng)用在高性能貼片機(jī)上的一種快速視覺(jué)定位算法[J].光學(xué)技術(shù),2005,31(4):604-607.
[8]黃恢樂(lè),胡躍明,袁鵬,等.高速高精度全自動(dòng)貼片機(jī)的元件角度識(shí)別算法[J].計(jì)算機(jī)工程與應(yīng)用,2005(22):111-113.