時間:2023-08-08 14:45:03來æºï¼šcsdn
標定技術
常見的機器人視覺伺æœä¸è¦å¯¦ç¾åƒç´ 忍™èˆ‡å¯¦éš›å標的轉æ›ï¼Œé¦–先就è¦é€²è¡Œæ¨™å®šï¼Œå°äºŽå¯¦ç¾è¦–è¦ºä¼ºæœæŽ§åˆ¶ï¼Œé€™é‡Œçš„æ¨™å®šä¸åƒ…包括æ”åƒæ©Ÿæ¨™å®šï¼Œä¹ŸåŒ…括機器人系統的手眼標定。以常見的焊接機器人系統為例,有兩種構型,如下:
å³ï¼šæ”åƒæ©Ÿå›ºå®šäºŽæ©Ÿå™¨æ‰‹å’Œæ”åƒæ©Ÿå›ºå®šäºŽå¤–éƒ¨å ´æ™¯ï¼›
本文é‡å°å‰ä¸€ç¨®æ§‹åž‹ï¼šæ”åƒæ©Ÿå›ºå®šäºŽæ©Ÿå™¨æ‰‹ã€‚
1ã€æ”åƒæ©Ÿæ¨™å®šæŠ€è¡“
(1)ç†è«–部分:
以張æ£å‹çš„æ£‹ç›¤æ¨™å®šæ³•為æ”åƒæ©Ÿæ¨™å®šæ–¹å¼ï¼Œç”±äºŽæ”åƒæ©Ÿæ¨™å®šçµæžœè¦ç”¨åˆ°åŽé¢çš„æ‰‹çœ¼æ¨™å®šä¸ï¼Œæ‰€ä»¥æ¤è™•進行ä¸åŒæ–¹ä½çš„æ£‹ç›¤åœ–ç‰‡æ‹æ”時需è¦éµå®ˆï¼šæ¨™å®šæ¿å›ºå®šä½ç½®ä¸å‹•,手眼組åˆé«”變æ›å§¿æ…‹æ‹æ”圖片。
æ”åƒæ©Ÿæ¨™å®šçš„ç›®çš„ï¼šå¾—åˆ°å…©çµ„åæ¨™ç³»çš„兩兩轉化矩陣:T1å’ŒT2ï¼›
1)得到圖片åƒç´ 忍™ç³»P與æ”åƒæ©Ÿå標系C之間的轉æ›çŸ©é™£T1,準確說應該是æ”åƒæ©Ÿå標系轉化為圖片åƒç´ 忍™ç³»çš„轉æ›çŸ©é™£ã€‚å¯è¡¨ç¤ºç‚ºï¼š
P=T1*C;
解釋:T1在æ”åƒæ©Ÿæ¨™å®šçµæžœä¸å°±æ˜¯å…§åƒçŸ©é™£3x3ï¼›
2)得到æ”åƒç›¸æ©Ÿå標系Cèˆ‡æ£‹ç›¤ä¸Šå»ºç«‹çš„ä¸–ç•Œåæ¨™ç³»G之間的轉æ›çŸ©é™£T2ï¼Œæº–ç¢ºèªªæ‡‰è©²æ˜¯åæ¨™ç³»G轉化為æ”åƒæ©Ÿå標系的轉æ›çŸ©é™£ã€‚å¯è¡¨ç¤ºç‚ºï¼š
C=T2*G;
解釋:T2在æ”åƒæ©Ÿæ¨™å®šçµæžœä¸å°±æ˜¯å¤–åƒçŸ©é™£4x4,由旋轉矩陣r和平移å‘é‡tæ§‹æˆ[ t r; 0 0 0 1]ï¼›
(2)方法:
æ”åƒæ©Ÿæ¨™å®šæ–¹æ³•有兩種å¯é¸ï¼šopenCV或者Matlab標定工具箱;
建è°é¸æ“‡MATLAB應用程åºâ€”—圖åƒè™•ç†èˆ‡è¨ˆç®—機視覺——Camera Calibratorï¼Œç›´æŽ¥å°Žå…¥æ‹æ”好的圖片å³å¯ã€‚ä½†æ˜¯è¦æ³¨æ„,使用matlab標定工具箱所得到的內åƒçŸ©é™£ã€å¤–åƒæ—‹è½‰çŸ©é™£ã€å¤–åƒå¹³ç§»å‘é‡éƒ½è¦ç¶“éŽè½‰ç½®æ‰æ˜¯æ£ç¢ºçš„çµæžœã€‚
如下圖,MATLAB標定得到的紅框ä¸ä¾æ¬¡æ˜¯å¤–åƒå¹³ç§»å‘é‡ã€å…§åƒçŸ©é™£ã€å¤–åƒæ—‹è½‰çŸ©é™£ï¼Œå®ƒå€‘都需è¦åšè½‰ç½®åŽæ‰èƒ½æ‡‰ç”¨äºŽæœ¬æ–‡çš„å…¬å¼è¨ˆç®—:
2ã€æ‰‹çœ¼æ¨™å®šæŠ€è¡“
(1)ç†è«–部分:
手眼標定目的:得到æ”åƒæ©Ÿå標系Cèˆ‡æ©Ÿå™¨æ‰‹ï¼ˆæˆ–å·¥å…·ï¼‰åæ¨™ç³»H之間的轉æ›çŸ©é™£T3ï¼Œæº–ç¢ºèªªæ‡‰è©²æ˜¯æ©Ÿå™¨æ‰‹åæ¨™ç³»è½‰åŒ–為æ”åƒæ©Ÿå標系的轉化矩陣。å¯è¡¨ç¤ºç‚ºï¼š
C=T3*H;
解釋:T3éœ€è¦æ ¹æ“šå…¬å¼CX=XD得到;實際ä¸ï¼Œåˆ†åˆ¥çŸ¥é“Cã€D求出來的X有無窮多個解。所以為了實ç¾å”¯ä¸€è§£ï¼Œæˆ‘們至少需è¦å…©çµ„Cå’ŒD,å³è‡³å°‘需è¦3個ä½ç½®çš„æ”åƒæ©Ÿæ¨™å®šçµæžœã€‚
å…¶ä¸C的求法如下:
C是兩個æ”åƒæ©Ÿå標系之間的變æ›çŸ©é™£ã€‚å¯ä»¥æ ¹æ“šä¸Šè¿°ä»»ä¸€å…©å¼µæ¨™å®šåœ–片所得的兩個æ”åƒæ©Ÿæ¨™å®šå¤–åƒAã€B按公å¼C=A*inv(B)計算得到的。å‡è¨ä¸Šè¿°æ”åƒæ©Ÿæ¨™å®šä¸æœ‰3å¼µæ¨™å®šåœ–ç‰‡çš„å¤–åƒæ¨™å®šçµæžœåˆ†åˆ¥æ˜¯T21ã€T22ã€T23,那么å¯ä»¥å¾—到兩個C矩陣:
C1=T21*inv(T22);
C2=T22*inv(T23);
D的求法如下:
Dæ˜¯å…©å€‹æ©Ÿå™¨æ‰‹åæ¨™ç³»ä¹‹é–“的變æ›çŸ©é™£ã€‚å‡è¨ä¸Šè¿°æ”åƒæ©Ÿæ¨™å®šä¸çš„3å¼µæ¨™å®šåœ–ç‰‡æ‰€ä¸€ä¸€å°æ‡‰çš„æ©Ÿå™¨æ‰‹åæ¨™ç³»åœ¨åŸºåæ¨™ç³»ï¼ˆä¹Ÿå¯ä»¥æ˜¯å·¥ä»¶å標系或者其他固定的åƒè€ƒå標系)ä¸çš„æè¿°çŸ©é™£çµæžœåˆ†åˆ¥æ˜¯H1ã€H2ã€H3(H需è¦å¾žæ©Ÿå™¨äººæŽ§åˆ¶å™¨æˆ–示教器ä¸è®€å–),那么å¯ä»¥å¾—到兩個D矩陣:
D1=inv(H1)*H2;
D2=inv(H2)*H3;
由以上兩組Cå’ŒD,代入CX=XDå°±å¯ä»¥å¾—到唯一解X,從而T3=Xï¼›
注:上述H1ã€H2ã€H3是æ¯å¼µæ¨™å®šåœ–ç‰‡å°æ‡‰çš„æ©Ÿå™¨æ‰‹å標系æè¿°çŸ©é™£ï¼Œæ£å¥½èªªæ˜Žäº†æ”åƒæ©Ÿæ¨™å®šä¸æ‰€è¬‚的“標定æ¿å›ºå®šï¼Œæ‰‹çœ¼é‹å‹•â€çš„æ£ç¢ºæ€§ã€‚å¦‚æžœæ‰‹çœ¼ä¸å‹•,改變標定æ¿å§¿æ…‹é€²è¡Œæ‹æ”,那么H的值都是一樣的。
(2)方法:
1ï¼‰æ ¹æ“šæ”åƒæ©Ÿæ¨™å®šå·²çŸ¥æ”åƒæ©Ÿå¤–åƒçŸ©é™£T21ã€T22ã€T23,還è¦å¾žæ©Ÿå™¨äººæŽ§åˆ¶å™¨ä¸è®€å–T21ã€T22ã€T23åˆ†åˆ¥å°æ‡‰çš„æ©Ÿå™¨æ‰‹(或工具)忍™ç³»H1ã€H2ã€H3。控制器ä¸çš„忍™ç³»æè¿°çŸ©é™£ä¸æ˜¯ç›´æŽ¥è®€å–的,它是以平移å‘é‡å’Œææ‹‰è§’(或四元數)模å¼å˜åœ¨çš„,如下:
平移å‘é‡+ææ‹‰è§’模å¼ï¼š
平移å‘é‡+四元數模å¼ï¼š
é¸å–å…¶ä¸ä»»ä¸€æ¨¡å¼å³å¯ï¼Œç„¶åŽå°‡å…¶è½‰åŒ–為æè¿°çŸ©é™£ã€‚
上述工作完æˆåŽï¼Œå°±å·²ç¶“ç²å–了3個外åƒçŸ©é™£ï¼ˆå†æ¬¡æé†’,æ”åƒæ©Ÿæ¨™å®šä½¿ç”¨MATLABæ¨™å®šå·¥å…·ç®±çš„è©±ï¼Œæ‰€å¾—åˆ°çš„å¤–åƒæ—‹è½‰çŸ©é™£å’Œå¹³ç§»å‘é‡å…ˆè¦è½‰ç½®ï¼Œå³R=r',T=t',然åŽå¤–åƒçŸ©é™£EX=[R Tï¼›0 0 0 1])和 3å€‹æ©Ÿæ¢°æ‰‹åæ¨™ç³»çŸ©é™£ï¼Œå› æ¤å¯ä»¥åˆ†åˆ¥å°‡3個二ç¶çŸ©é™£åˆç‚ºä¸€å€‹ä¸‰ç¶çŸ©é™£ï¼Œmatlab命令如下:
C_ext=cat(3, C_ext1, C_ext2, C_ext3);
H=cat(3, H1, H2 ,H3)
最åŽå°‡C_extå’ŒHä½œç‚ºåƒæ•¸ä»£å…¥åˆ°å¦‚下MATLAB函數ä¸ï¼š
function Tch = GetCamera2HandMatrix(C_ext,H) % 以下變é‡ï¼š % C_ext是3個ä½ç½®çš„æ”åƒæ©Ÿå¤–åƒçŸ©é™£ï¼š3x4x4 % H1ã€H2ã€H3分別是3個ä½ç½®çš„æ©Ÿæ¢°æ‰‹å標系的姿態矩陣:3x4x4 % Tcg--æ©Ÿå™¨æ‰‹åæ¨™ç³»ï¼ˆæˆ–工具忍™ç³»ï¼‰åœ¨æ”åƒæ©Ÿå標系ä¸çš„å§¿æ…‹å’Œä½ç½®è®Šæ›çŸ©é™£ % C1ã€D1ã€C2ã€D2ã€Rã€wã€qã€kc1ã€kc2ã€kc3ã€kd1ã€kd2ã€kd3ã€aã€bã€cã€dã€hã€yå‡ç‚ºè‡¨æ™‚è®Šé‡ C1=C_ext(:,:,1)*inv(C_ext(:,:,2)) C2=C_ext(:,:,2)*inv(C_ext(:,:,3)) D1=inv(H(:,:,1))*H(:,:,2) D2=inv(H(:,:,2))*H(:,:,3) R=C1(1:3,1:3); q=acos((trace(R)-1)/2); w(1,1)=q/(2*sin(q))*(R(3,2)-R(2,3)); w(2,1)=q/(2*sin(q))*(R(1,3)-R(3,1)); w(3,1)=q/(2*sin(q))*(R(2,1)-R(1,2)); kc1=w; R=C2(1:3,1:3); q=acos((trace(R)-1)/2); w(1,1)=q/(2*sin(q))*(R(3,2)-R(2,3)); w(2,1)=q/(2*sin(q))*(R(1,3)-R(3,1)); w(3,1)=q/(2*sin(q))*(R(2,1)-R(1,2)); kc2=w; R=D1(1:3,1:3); q=acos((trace(R)-1)/2); w(1,1)=q/(2*sin(q))*(R(3,2)-R(2,3)); w(2,1)=q/(2*sin(q))*(R(1,3)-R(3,1)); w(3,1)=q/(2*sin(q))*(R(2,1)-R(1,2)); kd1=w; R=D2(1:3,1:3); q=acos((trace(R)-1)/2); w(1,1)=q/(2*sin(q))*(R(3,2)-R(2,3)); w(2,1)=q/(2*sin(q))*(R(1,3)-R(3,1)); w(3,1)=q/(2*sin(q))*(R(2,1)-R(1,2)); kd2=w; kc3=cross(kc1,kc2); kd3=cross(kd1,kd2); a=[kc1 kc2 kc3]; b=[kd1 kd2 kd3]; R=a*inv(b); %得到旋轉關系矩陣 tc1=C1(1:3,4); tc2=C2(1:3,4); td1=D1(1:3,4); td2=D2(1:3,4); c=R*td1-tc1; d=R*td2-tc2; a=C1(1:3,1:3)-[1 0 0;0 1 0;0 0 1]; b=C2(1:3,1:3)-[1 0 0;0 1 0;0 0 1]; h=[a;b]; y=[c;d]; t=inv(h'*h)*h'*y; %得到平移關系矩陣 Tch=[R t;0 0 0 1]; %å¾—åˆ°æœ€çµ‚çµæžœ end
3ã€æ ¹æ“šæ¨™å®šçµæžœå°å›ºå®šé«˜åº¦ç›®æ¨™å¯¦ç¾å–®ç›®å®šä½
(1)ç†è«–部分:
由上述1ã€2兩個標定已經得到:
æ”åƒæ©Ÿå標系C->åƒç´ 忍™ç³»P的轉æ›çŸ©é™£Tpc(å³å…§åƒçŸ©é™£ï¼ŒMATLAB標定得到的è¦è½‰ç½®ï¼‰ï¼›
æ©Ÿæ¢°æ‰‹ï¼ˆæˆ–å·¥å…·ï¼‰åæ¨™ç³»H->æ”åƒæ©Ÿå標系C的轉化矩陣Tchï¼›
從控制器讀å–çš„æ©Ÿæ¢°æ‰‹ï¼ˆæˆ–å·¥å…·ï¼‰åæ¨™ç³»H->åŸºåæ¨™ç³»Bï¼ˆé€™å€‹æ ¹æ“šæƒ…æ³è‡ªå·±åœ¨æŽ§åˆ¶å™¨è¨å®šæ˜¯åŸºåæ¨™é‚„æ˜¯å·¥ä»¶åæ¨™ç³»ï¼Œæœ¬æ–‡ç”¨åŸºå標系)的轉化矩陣Tbhï¼›
已知目標高度固定,為z;
é‚£ä¹ˆåŸºåæ¨™ç³»è½‰åŒ–為åƒç´ 忍™ç³»çš„變æ›çŸ©é™£å°±æ˜¯ï¼šGpb=Tpc*Tch*inv(Tbh);
æ ¹æ“šGpbå’Œzå¯ä»¥å¾—到如下圖所示的變æ›éŽç¨‹ï¼Œåˆ†è§£åŽå¯æ ¹æ“šåƒç´ 忍™(u,v)æ±‚å¾—å¯¦éš›åæ¨™(x,y,z):
å…¶ä¸ï¼ŒTpcéœ€è¦æ³¨æ„,應在內åƒçŸ©é™£æœ€åŽæ·»åŠ ä¸€å€‹å…¨é›¶åˆ—ï¼Œè®Šç‚º3x4矩陣,如下:
(2)代碼實ç¾ï¼š
function P= GetObjectLocation( u,v,Gtb) % åƒæ•¸(u,v)為目標在圖片ä¸çš„åƒç´ 忍™ % åƒæ•¸Gtbæ˜¯å·¥å…·åœ¨æ©Ÿå™¨äººåŸºåæ¨™ä¸çš„æè¿°çŸ©é™£ï¼ˆä¹Ÿå°±æ˜¯å·¥å…·å標系->åŸºåæ¨™ç³»çš„變æ›çŸ©é™£ï¼‰ %å…§åƒçŸ©é™£ Kl=[ 1851 9.7 550.5 0; 0 1844.4 299.7 0; 0 0 1.0 0]; %æ”åƒæ©Ÿèˆ‡å·¥å…·é—œç³»çŸ©é™£ Gctl= [-0.9620 -0.2974 0.0156 -2.6405; 0.3266 -0.9552 0.0056 59.7141; 0.0130 0.0003 1.0161 145.3381; 0 0 0 1.0000]; G=inv(Gtb); z=10; %指定物體的高度 M=Kl*Gctl*G; Ml=[u*M(3,1)-M(1,1) u*M(3,2)-M(1,2) ; v*M(3,1)-M(2,1) v*M(3,2)-M(2,2)]; Mr=[M(1,4)-u*M(3,4)-(u*M(3,3)-M(1,3))*z; M(2,4)-v*M(3,4)-(v*M(3,3)-M(2,3))*z]; P=inv(Ml)*Mr; %得到物體的ä½ç½® end
上一篇:發那科機器人é‡å°å¥‡ç•°é»žçš„處...
下一篇:工æ¥è‡ªå‹•åŒ–æ©Ÿå™¨è¦–è¦ºè³ªæª¢ä¸æ€Ž...
ä¸åœ‹å‚³å‹•網版權與å…è²¬è²æ˜Žï¼šå‡¡æœ¬ç¶²æ³¨æ˜Ž[來æºï¼šä¸åœ‹å‚³å‹•ç¶²]的所有文å—ã€åœ–片ã€éŸ³è¦–å’Œè¦–é »æ–‡ä»¶ï¼Œç‰ˆæ¬Šå‡ç‚ºä¸åœ‹å‚³å‹•ç¶²(www.hysjfh.com)ç¨å®¶æ‰€æœ‰ã€‚如需轉載請與0755-82949061è¯ç³»ã€‚任何媒體ã€ç¶²ç«™æˆ–å€‹äººè½‰è¼‰ä½¿ç”¨æ™‚é ˆæ³¨æ˜Žä¾†æºâ€œä¸åœ‹å‚³å‹•ç¶²â€ï¼Œé•å者本網將追究其法律責任。
本網轉載并注明其他來æºçš„稿件,å‡ä¾†è‡ªäº’è¯ç¶²æˆ–æ¥å…§æŠ•稿人士,版權屬于原版權人。轉載請ä¿ç•™ç¨¿ä»¶ä¾†æºåŠä½œè€…ï¼Œç¦æ¢æ“…自篡改,é•è€…è‡ªè² ç‰ˆæ¬Šæ³•å¾‹è²¬ä»»ã€‚
相關資訊