主頁 > 知識庫 > 一文詳解機器人的視覺伺服

一文詳解機器人的視覺伺服

熱門標簽:電話營銷系統(tǒng) 地方門戶網站 集中運營管理辦法 客服熱線 團購網站 電銷機器人 銀行業(yè)務 呼叫中心案例
常見的機器人視覺伺服中要實現像素坐標與實際坐標的轉換,首先就要進行標定,對于實現視覺伺服控制,這里的標定不僅包括攝像機標定,也包括機器人系統(tǒng)的手眼標定。以常見的焊接機器人系統(tǒng)為例,有兩種構型,如下: 即:攝像機固定于機器手和攝像機固定于外部場景; 本文針對前一種構型:攝像機固定于機器手。 1、攝像機標定技術 (1)理論部分: 以張正友的棋盤標定法為攝像機標定方式,由于攝像機標定結果要用到后面的手眼標定中,所以此處進行不同方位的棋盤圖片拍攝時需要遵守:標定板固定位置不動,手眼組合體變換姿態(tài)拍攝圖片。 攝像機標定的目的:得到兩組坐標系的兩兩轉化矩陣: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是兩個攝像機坐標系之間的變換矩陣??梢愿鶕鲜鋈我粌蓮垬硕▓D片所得的兩個攝像機標定外參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是每張標定圖片對應的機器手坐標系描述矩陣,正好說明了攝像機標定中所謂的“標定板固定,手眼運動”的正確性。如果手眼不動,改變標定板姿態(tài)進行拍攝,那么H的值都是一樣的。 (2)方法: 1)根據攝像機標定已知攝像機外參矩陣T21、T22、T23,還要從機器人控制器中讀取T21、T22、T23分別對應的機器手(或工具)坐標系H1、H2、H3??刂破髦械淖鴺讼得枋鼍仃嚥皇侵苯幼x取的,它是以平移向量和歐拉角(或四元數)模式存在的,如下: 平移向量+歐拉角模式: 平移向量+四元數模式: 選取其中任一模式即可,然后將其轉化為描述矩陣。 上述工作完成后,就已經獲取了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個位置的機械手坐標系的姿態(tài)矩陣:3x4x4 % Tcg--機器手坐標系(或工具坐標系)在攝像機坐標系中的姿態(tài)和位置變換矩陣 % 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需要注意,應在內參矩陣最后添加一個全零列,變?yōu)?x4矩陣,如下: (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; %得到物體的位置

標簽:家電維修 遂寧 玉溪 自貢 惠州 肇慶 雅安 萊蕪

巨人網絡通訊聲明:本文標題《一文詳解機器人的視覺伺服》,本文關鍵詞  ;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《一文詳解機器人的視覺伺服》相關的同類信息!
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266