于躍華,王好臣,趙錦澤,叢志文,高茂源,李家鵬
(山東理工大學(xué)機(jī)械工程學(xué)院,山東 淄博 255000)
目前具有視覺識(shí)別的機(jī)械臂末端定位技術(shù)早已成為機(jī)器視覺研究的熱點(diǎn)問題,基于視覺識(shí)別伺服的機(jī)器人逐漸被應(yīng)用到各種行業(yè)中,比如焊接機(jī)器人、工件分揀機(jī)器人等,極大地提高了我國工業(yè)的生產(chǎn)效率與自動(dòng)化程度[1-3]。在實(shí)現(xiàn)對(duì)工業(yè)機(jī)器人視覺引導(dǎo)的過程中,有效提高工件與相機(jī)內(nèi)參的標(biāo)定精度成為了視覺伺服在工業(yè)應(yīng)用中亟待解決的關(guān)鍵問題[4]。
本文在工件標(biāo)定時(shí)對(duì)易使用CAD建模的工件進(jìn)行DXF文件提取,將CAD工作單元與實(shí)際工作單元中的工件進(jìn)行調(diào)整與坐標(biāo)轉(zhuǎn)換,為工件標(biāo)定提供了圖元坐標(biāo)信息,有效地減少了人工示教。針對(duì)相機(jī)標(biāo)定提出了一種基于自適應(yīng)權(quán)重粒子群算法的參數(shù)優(yōu)化方法,該方法在傳統(tǒng)粒子群算法的基礎(chǔ)上建立了自適應(yīng)權(quán)重函數(shù),提高了全局搜索能力,避免了傳統(tǒng)算法優(yōu)化時(shí)易陷入局部最優(yōu)的問題,有效提高了標(biāo)定精度。
標(biāo)定復(fù)雜零件時(shí),針對(duì)不同零件需采用適合的標(biāo)定方法,常見的復(fù)雜工件一般為具有圓形基準(zhǔn)面或相交平面的工件,極少出現(xiàn)更復(fù)雜的三維圖形,因此只針對(duì)存在圓基準(zhǔn)面和正交平面的工件進(jìn)行標(biāo)定研究。
四點(diǎn)標(biāo)定法(圖1)用于具有圓形定位基準(zhǔn)的工件,優(yōu)點(diǎn)為只需要找出基準(zhǔn)圓上任意不同三點(diǎn)和工件上的一個(gè)其他基準(zhǔn)點(diǎn)即可。
圖1 圓弧四點(diǎn)標(biāo)定法
基準(zhǔn)圓的尺寸及圓心位置由其上任意三點(diǎn)確定,圓的位置信息則通過另一明顯基準(zhǔn)點(diǎn)來確定,調(diào)整工件時(shí)先使兩基準(zhǔn)圓重合,再將工件上的特征點(diǎn)對(duì)應(yīng),最后繞基準(zhǔn)圓過圓心的法向軸線旋轉(zhuǎn)一定角度即可[9]。
設(shè)b1(Xb1,Yb1,Zb1),b2(Xb2,Yb2,Zb2),b3(Xb3,Yb3,Zb3)三點(diǎn)分別為CAD環(huán)境中基準(zhǔn)圓上任意三點(diǎn),b4(Xb4,Yb4,Zb4)為工件上任意特征點(diǎn),則該基準(zhǔn)圓的平面法矢量和圓心b0(Xb0,Yb0,Zb0)可以確定,點(diǎn)b1,b2,b3確定的圓平面方程可由下式表示:
Ab1(X-Xb1)+Bb1(Y-Yb1)+Cb1(Z-Zb1)=0
(1)
式中:
Ab1=(Zb3-Zb1)(Yb2-Yb1)-
(Zb2-Zb1)(Yb3-Yb1)
Bb1=(Zb2-Zb1)(Xb3-Xb1)-
(Zb3-Zb1)(Xb2-Xb1)
Cb1=(Xb2-Xb1)(Yb3-Yb1)-
(Xb3-Xb1)(Yb2-Yb1)
定義該平面的法矢量為CAD單元中工件坐標(biāo)系的Zb軸矢量,可表示為:
Zb=αbzi+βbzj+γbzk
(2)
其中:
圓心b0的位置可由圓的方程得出:
(X-Xb0)2+(Y-Yb0)2+(Z-Zb0)2=R2
(3)
將b1、b2、b3三點(diǎn)坐標(biāo)帶入式(3),得到:
(Xb1-Xb0)2+(Yb1-Yb0)2+
(Zb1-Zb0)2=R2
(Xb2-Xb0)2+(Yb2-Yb0)2+
(Zb2-Zb0)2=R2
(Xb3-Xb0)2+(Yb3-Yb0)2+
(Zb3-Zb0)2=R2
因圓心在圓平面上,則可得到方程:
Ab1(Xb0-Xb1)+Bb1(Yb0-Yb1)+
Cb1(Zb0-Zb1)=0
(4)
將以上方程聯(lián)立求解,可得到工件坐標(biāo)系Yb軸的矢量為:
Yb=Lb0→b4×Zb=αbyi+βbyj+γbyk
(5)
其中,Lb0→b4為點(diǎn)b0到點(diǎn)b4的單位化向量。根據(jù)右手法則可知Xb軸的矢量為:
Xb=Yb×Zb=αbzi+βbzj+γbzk
(6)
(7)
(8)
該方法只需保證工件中某一特征點(diǎn)對(duì)應(yīng),對(duì)基準(zhǔn)圓上的任意三點(diǎn)沒有任何要求,可廣泛應(yīng)用于具有圓形定位基準(zhǔn)的工件。
圖2為正交平面工件標(biāo)定算法示意圖,Ow-XwYwZw為機(jī)器人基坐標(biāo)系;兩個(gè)長方體從左到右分別處于由六點(diǎn)確定的仿真工作單元坐標(biāo)系和實(shí)際工作單元坐標(biāo)系。
圖2 正交平面六點(diǎn)標(biāo)定法
在對(duì)復(fù)雜工件進(jìn)行標(biāo)定時(shí),因其本身因素會(huì)對(duì)標(biāo)定精度產(chǎn)生影響,本文將工件DXF文件的提取與四點(diǎn)定位和六點(diǎn)定位標(biāo)定方法相結(jié)合,使CAD坐標(biāo)與工件的實(shí)際坐標(biāo)統(tǒng)一,輔助了復(fù)雜工件的標(biāo)定。
DXF(Drawing Exchange Format)文件是Autodesk公司推出的一個(gè)與外部CAD/CAM進(jìn)行圖形數(shù)據(jù)交換的接口,其內(nèi)容以代碼形式出現(xiàn),是一種開放的矢量數(shù)據(jù),組成部分如圖3所示。
工件標(biāo)定過程中所需圖元信息包含在圖形交換格式(DXF)文件中,一般的DXF文件數(shù)據(jù)信息量巨大,提取時(shí)應(yīng)對(duì)文件進(jìn)行篩選[6]。而標(biāo)定所需的圖形位置坐標(biāo)信息只存在于實(shí)體段(ENTITIES)中,因此只對(duì)DXF文件內(nèi)的實(shí)體段段進(jìn)行提取即可[7]。
圖3 DXF文件格式圖
實(shí)體段信息的復(fù)雜程度由工件決定,為保證提取效率和識(shí)別的準(zhǔn)確度,提取流程必須簡潔高效,能夠有條理、有選擇的對(duì)實(shí)體段的信息進(jìn)行提取整理[8]。
文件提取過程如圖4所示,首先打開DXF文件對(duì)信息進(jìn)行讀取,當(dāng)判斷信息為實(shí)體段首行時(shí),開始對(duì)四種圖元類型依次判斷,最后對(duì)厚度進(jìn)行判斷,當(dāng)檢測(cè)到文件信息為實(shí)體段尾時(shí),關(guān)閉DXF,提取結(jié)束,最終可以得到機(jī)器人需要的參數(shù)信息。
圖4 DXF數(shù)據(jù)提取流程圖
常見的復(fù)雜工件中的圖形信息基本都由直線和圓弧組成,所以程序的設(shè)計(jì)主要針對(duì)直線段與圓弧。
當(dāng)用VC來設(shè)計(jì)DXF文件的讀取[9]處理ASCII碼時(shí),需要用到C語言處理的兩個(gè)標(biāo)準(zhǔn)函數(shù):fprintf()和fscanf()。首先使用fopen()指令打開DXF文件,按照順序讀取到文件結(jié)束,然后利用位置指針函數(shù)fprintf(),標(biāo)記當(dāng)前位置。如需遍歷完整文件,則按照位置順序從上往下,讀取完一個(gè)字符自動(dòng)移到下一個(gè)字符的位置[10]。
下面以圓弧信息的提取為例:首先使用Str=ReadDxfFile(fp) 命令開始讀取文件,依次判斷讀取處是否為實(shí)體段和圓弧信息段,隨后確定圓心坐標(biāo)X、Y、Z方向坐標(biāo)值,然后判斷圓弧半徑組值、起始角度組值、終止角度組值,最后使用 If (str = "EOF") 命令判斷是否為末尾,結(jié)束讀取并退出。
提取直線段信息時(shí)將代碼中的“ARC”更改為“LINE”,并判斷直線的起始點(diǎn)和終止點(diǎn)坐標(biāo)值,直線段起始點(diǎn)的X、Y、Z坐標(biāo)組碼與圓心坐標(biāo)相同,分別為10、20、30,直線段終止點(diǎn)的X、Y、Z坐標(biāo)組碼分別為11、21、31,而圓弧的半徑、起始角度、終止角度組碼分別為40、50、51。提取后,機(jī)器人可以根據(jù)程序完成相應(yīng)的動(dòng)作。
以一具有圓弧和直線段的圖形為例,用VC軟件對(duì)DXF文件進(jìn)行提取,后續(xù)在人機(jī)交互界面中輸出提取形成的圖形。圖5為CAD軟件中繪制的圖形,圖6為提取DXF文件生成的圖形,可見DXF文件提取的方法完全符合精度要求。
圖5 CAD中工件圖像 圖6 DXF提取圖像
相機(jī)成像模型是一種用來描述成像平面像點(diǎn)與空間物點(diǎn)之間數(shù)學(xué)投影關(guān)系的模型[4],圖7為相機(jī)成像的幾何模型,成像關(guān)系為線性變化。
圖7 相機(jī)成像模型
視覺系統(tǒng)獲取圖像是一個(gè)比較復(fù)雜的過程,在描述獲取圖像與攝像頭之間的關(guān)系時(shí),一般在視覺系統(tǒng)中主要使用4種坐標(biāo)系,如圖所示,分別為:世界坐標(biāo)系Ow-xwywzw、相機(jī)坐標(biāo)系Oc-XcYcZc、圖像物理坐標(biāo)系o-xy和圖像像素坐標(biāo)系Op-uv。Op為相機(jī)的光心,O為成像主點(diǎn)。
世界坐標(biāo)系中一點(diǎn)Pw在像素坐標(biāo)系內(nèi)的投影點(diǎn)Pp為Pw與成像平面的交點(diǎn),二者的關(guān)系為:
其中,ax和ay分別為相機(jī)在x軸和y軸上的焦距,單位為mm,u0和v0為成像主點(diǎn)的坐標(biāo)值,A為內(nèi)部參數(shù)矩陣,M為外部參數(shù)矩陣。當(dāng)世界坐標(biāo)系中的一點(diǎn)投影到像素坐標(biāo)系中,會(huì)發(fā)生很大變化,同時(shí)也會(huì)損失很多信息,因?yàn)殓R頭并不是理想的透視成像模型,都存在不同程度的畸變,因此必須要考慮相機(jī)畸變,所以有:
本文中考慮了鏡頭的二階徑向畸變n1、n2和切向畸變pu、pv,(xk,yk)為畸變后的坐標(biāo),(xu,yu)為畸變前的坐標(biāo)。
在對(duì)物體識(shí)別與定位的過程中需要對(duì)相機(jī)進(jìn)行標(biāo)定和參數(shù)優(yōu)化。相機(jī)標(biāo)定的方法有傳統(tǒng)標(biāo)定方法、自標(biāo)定方法以及主動(dòng)視覺標(biāo)定方法[11-12],一般使用傳統(tǒng)標(biāo)定方法較多,目前主要有線性標(biāo)定法、Tsai兩步法[13]、張正友標(biāo)定法[14]等。其中張正友標(biāo)定法操作簡便可靠,對(duì)設(shè)備要求不高,被廣泛應(yīng)用。但該方法使用的傳統(tǒng)優(yōu)化算法易陷入局部最優(yōu),標(biāo)定精度有待提高。相機(jī)標(biāo)定作為視覺基礎(chǔ)已有多種成熟的標(biāo)定方法,本次標(biāo)定使用張正友標(biāo)定法,該方法是一種介于傳統(tǒng)標(biāo)定和相機(jī)自標(biāo)定之間的標(biāo)定方法。該方法對(duì)相機(jī)內(nèi)參數(shù)初始值的求解已非常成熟,本文中不再贅述。大致標(biāo)定過程為:選用棋盤格為標(biāo)定參照物,保證相機(jī)固定,對(duì)棋盤進(jìn)行不同角度的多次拍攝,將左右相機(jī)拍攝到的圖片相對(duì)應(yīng),并對(duì)線條進(jìn)行測(cè)量。利用已知的棋盤格角點(diǎn)坐標(biāo)得到對(duì)應(yīng)的圖像坐標(biāo),即可求出單應(yīng)矩陣。然后根據(jù)求得的單應(yīng)矩陣和旋轉(zhuǎn)矩陣R推出內(nèi)部參數(shù)矩陣A,進(jìn)而得到理論層面的內(nèi)部參數(shù)與外部參數(shù)。
張正友標(biāo)定法簡單易操作、精度高、魯棒性好,經(jīng)過標(biāo)準(zhǔn)計(jì)算確定了理論上的可行性。但該方法未考慮實(shí)際應(yīng)用中畸變與噪聲的影響,因此需要把標(biāo)定結(jié)果作為初始條件進(jìn)一步優(yōu)化。
假設(shè)相機(jī)在標(biāo)定時(shí)采集到m張不同的棋盤格標(biāo)定板圖像,每幅圖像包含p個(gè)角點(diǎn),已知內(nèi)部參數(shù)矩陣A、旋轉(zhuǎn)矩陣R、平移向量s。令其中一個(gè)棋盤格角點(diǎn)為T,經(jīng)過透視、旋轉(zhuǎn)平移變換后得到一由A、R、s、T組成的函數(shù),記t′,進(jìn)而建立如下目標(biāo)函數(shù):
(9)
式中,t′為該角點(diǎn)的理論像素坐標(biāo),i表示圖片的順序數(shù),j表示該圖片上的角點(diǎn)順序數(shù),tij為第i幅圖像上第j個(gè)角點(diǎn)的實(shí)際像素坐標(biāo),Ri、si分別表示第i幅圖像的旋轉(zhuǎn)矩陣和平移向量,Tj為第j個(gè)角點(diǎn)的坐標(biāo)。由于理論像素坐標(biāo)和實(shí)際像素坐標(biāo)中的誤差包含鏡頭畸變的影響,所以畸變參數(shù)應(yīng)添加到目標(biāo)函數(shù)得優(yōu)化中,得到新的目標(biāo)函數(shù)為:
(10)
至此,問題已轉(zhuǎn)化為最小二乘法的線性優(yōu)化問題,常用的傳統(tǒng)方法有LM法、最速下降法等。
傳統(tǒng)算法如LM法等在優(yōu)化過程中易陷入局部最優(yōu),現(xiàn)提出一種改進(jìn)粒子群算法,能有效避免優(yōu)化過程中因算法過早收斂而陷入局部最優(yōu)的問題。
粒子群算法(PSO)是進(jìn)化算法的一種,從隨機(jī)解出發(fā),迭代尋找最優(yōu),通過適應(yīng)度來評(píng)價(jià)解的品質(zhì)。PSO算法精度高、易實(shí)現(xiàn)、收斂快,對(duì)種群數(shù)量和初始速度要求不高,全局搜索能力比傳統(tǒng)算法更強(qiáng),在解決實(shí)際問題中展現(xiàn)出其優(yōu)越性。
PSO初始化為空間中的一群隨機(jī)粒子,位置表示為矢量Xi,速度為矢量Vi,每個(gè)粒子都有一個(gè)由目標(biāo)函數(shù)確定的適應(yīng)值(fitness value),它們?cè)趯ふ胰肿顑?yōu)解時(shí)不斷交流,將自己找到的最好位置(Pbest)傳遞給所有粒子,這樣每個(gè)粒子就可得到當(dāng)前群體中發(fā)現(xiàn)的最好位置(Gbest),并通過自己的位置和同伴中最好的位置來決定下一步的運(yùn)動(dòng)。粒子的條件更新方程可以用下式表示:
(11)
式中,t代表當(dāng)前迭代次數(shù);ω代表慣性權(quán)重,為非負(fù)數(shù);c1和c2自身和社會(huì)學(xué)習(xí)因子,一般取2;r1和r2為(0,1)區(qū)間內(nèi)互不干涉的隨機(jī)數(shù)。
慣性權(quán)重ω在算法尋優(yōu)時(shí)發(fā)揮著重要作用,其值較大時(shí),算法的全局搜索能力強(qiáng),局部搜索能力變?nèi)?,其值較小時(shí)相反。為避免算法過早收斂,我們令慣性權(quán)重隨著粒子適應(yīng)度而發(fā)生改變,創(chuàng)建了一種用于相機(jī)標(biāo)定的自適應(yīng)權(quán)重法,假設(shè)群體中初始粒子的個(gè)數(shù)設(shè)置為n,具體函數(shù)關(guān)系如下:
當(dāng)F(xi)≤Fv時(shí),
(12)
當(dāng)F(xi)>Fv時(shí),
(13)
其中,
(14)
其中,ωmin為慣性權(quán)重最小值,ωmax為慣性權(quán)重的最大值,F(xiàn)(xi)為第i個(gè)粒子的位置在目標(biāo)函數(shù)式(10)中的值,F(xiàn)min為該次迭代F(xi)中的最小值,F(xiàn)max為該次迭代中F(xi)的最大值。迭代過程中,當(dāng)粒子所處位置比其他粒子更優(yōu)時(shí),慣性權(quán)重值變小,使該粒子有較好的局部搜索能力,更快找到更優(yōu)位置。當(dāng)粒子位置較差時(shí),慣性權(quán)重值變大,使粒子快速脫離該位置,轉(zhuǎn)向全局搜索。這樣可保證粒子在運(yùn)動(dòng)時(shí)既能向全局最優(yōu)值靠攏,又能保持一定的全局搜索能力,避免粒子群在搜索的時(shí)候陷入局部最優(yōu)。
對(duì)12幅不同角度和位置的標(biāo)定板圖像進(jìn)行采集,將角點(diǎn)網(wǎng)格進(jìn)行提取并標(biāo)定,得到的角點(diǎn)網(wǎng)格與相機(jī)位置關(guān)系圖如圖8所示。
圖8 相機(jī)與棋盤格角點(diǎn)位置關(guān)系
標(biāo)定選用焦距為8 mm的定焦鏡頭,實(shí)驗(yàn)用棋盤格標(biāo)定板在X方向棋盤格數(shù)目為10,Y方向數(shù)目為7,單個(gè)黑白格尺寸為25 mm×25 mm。設(shè)置粒子群數(shù)目i=150,迭代次數(shù)t=400,慣性權(quán)重ωmax=0.8,ωmin=0.3,自身學(xué)習(xí)因子c1和c2=1.5,社會(huì)學(xué)習(xí)因子c2=2。
表1中為兩種方法求得的相機(jī)內(nèi)部參數(shù),根據(jù)表中各項(xiàng)參數(shù)值來看,自適應(yīng)權(quán)重粒子群算法在精確度上優(yōu)于張正友標(biāo)定法。為進(jìn)一步驗(yàn)證兩種方法的精確程度,需要對(duì)其重投影誤差進(jìn)行計(jì)算。
表1 相機(jī)內(nèi)參標(biāo)定結(jié)果
圖9為張正友標(biāo)定法重投影誤差,圖10為自適應(yīng)權(quán)重粒子群算法重投影誤差??梢钥闯鲎赃m應(yīng)權(quán)重粒子群算法的精度更好,具有更高的可行性。
圖9 張正友標(biāo)定法重投影誤差
圖10 自適應(yīng)權(quán)重粒子群算法重投影誤差
為提高基于視覺伺服的工業(yè)機(jī)器人的工作精度,針對(duì)工件標(biāo)定與相機(jī)標(biāo)定環(huán)節(jié)分別提出了DXF提取輔助標(biāo)定和基于自適應(yīng)權(quán)重粒子群算法的相機(jī)內(nèi)參優(yōu)化方法,通過對(duì)DXF信息進(jìn)行提取,為工件的標(biāo)定提供了精準(zhǔn)的圖元坐標(biāo)信息,實(shí)現(xiàn)了CAD單元與實(shí)際工作單元工件坐標(biāo)信息的統(tǒng)一;建立添加了二階畸變的相機(jī)模型,并通過張正友標(biāo)定法確定了內(nèi)參的初始值,創(chuàng)建了添加畸變的目標(biāo)函數(shù),然后使用自適應(yīng)權(quán)重粒子群算法對(duì)目標(biāo)函數(shù)進(jìn)行優(yōu)化,最后在標(biāo)定實(shí)驗(yàn)中將該算法取得的參數(shù)和與張正友標(biāo)定法中的傳統(tǒng)優(yōu)化方法進(jìn)行了對(duì)比,并且對(duì)參數(shù)進(jìn)行了重投影誤差分析,結(jié)果進(jìn)一步證明了自適應(yīng)權(quán)重粒子群算法在相機(jī)內(nèi)參優(yōu)化過程中能取得更好的結(jié)果,有效的提高了標(biāo)定精度,是一種可靠的方法。