罕見的機器人視覺伺服中要實現像素坐標與實際坐標的轉換,起首就要停止標定,關于實現視覺伺服節制,這里的標定不只包羅攝像機標定,也包羅機器人體系的手眼標定。以罕見的焊接機器人體系為例,有兩種構型,以下:
即:攝像機流動于機械腳跟攝像機流動于內部場景;
實際部門:
以張正友的棋盤標定法為攝像機標定方法,因為攝像機標定成果要用到前面的手眼標定中,以是此處停止分歧方位的棋盤圖片拍攝時須要遵照:標定板流動地位沒有動,手眼組合體變更姿態拍攝圖片。
攝像機標定的目標:失掉兩組坐標系的兩兩轉化矩陣:T1跟T2;
1)失掉圖片像素坐標系P與攝像機坐標系C之間的轉換矩陣T1,精確道該當是攝像機坐標系轉化為圖片像素坐標系的轉換矩陣。可默示為:
P=T1*C;
注釋:T1正在攝像機標定成果中就是內參矩陣3x3;
2)失掉攝像相機坐標系C與棋盤上樹立的世界坐標系G之間的轉換矩陣T2,精確道該當是坐標系G轉化為攝像機坐標系的轉換矩陣。可默示為:
C=T2*G;
注釋:T2正在攝像機標定成果中就是外參矩陣4x4,由扭轉矩陣r跟平移向量t組成[tr;0001];
方式:
攝像機標定方式有兩種可選:openCV或許Matlab標定工具箱;
發起取舍MATLAB應用程序——圖像處理與計算機視覺——CameraCalibrator,間接導入拍攝好的圖片便可。可是要留神,利用matlab標定工具箱所失掉的內參矩陣、外參扭轉矩陣、外參平移向量皆要顛末轉置才是精確的成果。
以下圖,MATLAB標定失掉的紅框中依次是外參平移向量、內參矩陣、外參扭轉矩陣,它們皆須要做轉置后才氣使用于本文的公式計較:
2、手眼標定技巧
實際部門:
手眼標定目標:失掉攝像機坐標系C與機械腳坐標系H之間的轉換矩陣T3,精確道該當是機械腳坐標系轉化為攝像機坐標系的轉化矩陣。可默示為:
C=T3*H;
注釋:T3須要依據公式CX=XD失掉;實際中,離別曉得C、D供出來的X有無量多個解。以是為了實現獨一解,咱們至少須要兩組C跟D,即至少須要3個地位的攝像機標定成果。
此中C的求法以下:
C是兩個攝像機坐標系之間的變更矩陣。可以根據上述任一兩張標定圖片所得的兩個攝像機標定外參A、B按公式C=A*inv計較失掉的。假定上述攝像機標定中有3張標定圖片的外參標定成果離別是T21、T22、T23,那么可以失掉兩個C矩陣:
C1=T21*inv;
C2=T22*inv;
D的求法以下:
D是兩個機械腳坐標系之間的變更矩陣。假定上述攝像機標定中的3張標定圖片所一一對應的機械腳坐標系正在基坐標系(也可以是工件坐標系或許其他流動的參考坐標系)中的描寫矩陣成果離別是H1、H2、H3(H須要從機器人控制器或示教器中讀取),那么可以失掉兩個D矩陣:
D1=inv*H2;
D2=inv*H3;
由以上兩組C跟D,代入CX=XD便可以失掉獨一解X,從而T3=X;
注:上述H1、H2、H3是每張標定圖片對應的機械腳坐標系描寫矩陣,正好解釋了攝像機標定中所謂的“標定板流動,手眼運動”的正確性。若是手眼沒有動,轉變標定板姿態停止拍攝,那么H的值皆是一樣的。
依據攝像機標定已知攝像機外參矩陣T21、T22、T23,還要從機器人控制器中讀取T21、T22、T23離別對應的機械腳坐標系H1、H2、H3。控制器中的坐標系描寫矩陣不是間接讀取的,它是以平移向量跟歐拉角形式存在的,以下:
平移向量+歐拉角形式:
平移向量+四元數形式:
拔取此中任一形式便可,然后將其轉化為描寫矩陣。
上述事情實現后,便曾經獲得了3個外參矩陣(再次提示,攝像機標定利用MATLAB標定工具箱的話,所失掉的外參扭轉矩陣跟平移向量先要轉置,即R=r‘,T=t’,然后外參矩陣EX=[RT;0001])跟3個機械手坐標系矩陣,是以可以離別將3個二維矩陣合為一個三維矩陣,matlab下令以下:
C_ext=cat(3,C_ext1,C_ext2,C_ext3);
H=cat
最初將C_ext跟H作為參數代入到以下MATLAB函數中:
funcTIonTch=GetCamera2HandMatrix
%以下變量:
%H1、H2、H3離別是3個地位的機械手坐標系的姿態矩陣:3x4x4
%C1、D1、C2、D2、R、w、q、kc1、kc2、kc3、kd1、kd2、kd3、a、b、c、d、h、y均為且則變量
C1=C_ext*inv
C2=C_ext*inv
D1=inv*H
D2=inv*H
R=C1;
q=acos;
w)*;
w)*;
w)*;
kc1=w;
R=C2;
q=acos;
w)*;
w)*;
w)*;
kc2=w;
R=D1;
q=acos;
w)*;
w)*;
w)*;
kd1=w;
并聯分揀機器人工作原理人工智能分揀機器人R=D2;
q=acos;
w)*;
w)*;
w)*;
kd2=w;
kc3=cross;
kd3=cross;
a=[kc1kc2kc3];
b=[kd1kd2kd3];
R=a*inv;%失掉扭轉關聯矩陣
tc1=C1;
tc2=C2;
td1=D1;
td2=D2;
c=R*td1-tc1;
d=R*td2-tc2;
a=C1-[100;010;001];
食品分揀機器人b=C2-[100;010;001];
h=[a;b];
y=[c;d];
t=inv*h’*y;%失掉平移關聯矩陣
Tch=[Rt;0001];%失掉終極成果
end
3、依據標定成果對流動高度方針實現單目定位
實際部門:
由上述1、2兩個標定曾經失掉:
攝像機坐標系C-》像素坐標系P的轉換矩陣Tpc(即內參矩陣,MATLAB標定失掉的要轉置);
機械手坐標系H-》攝像機坐標系C的轉化矩陣Tch;
從控制器讀取的機械手坐標系H-》基坐標系B(這個依據環境本人正在控制器設定是基坐標仍是工件坐標系,本文用基坐標系)的轉化矩陣Tbh;
已知方針高度流動,為z;
那么基坐標系轉化為像素坐標系的變更矩陣就是:Gpb=Tpc*Tch*inv;
依據Gpb跟z可以失掉以下圖所示的變更進程,分化后可依據像素坐標求得實際坐標:
醫院自動分揀機器人此中,Tpc須要留神,應正在內參矩陣最初增添一個全零列,變成3x4矩陣,以下:
代碼實現:
funcTIonP=GetObjectLocaTIon
%參數Gtb是對象正在機器人基坐標中的描寫矩陣(也就是對象坐標系-》基坐標系的變更矩陣)
%內參矩陣
Kl=[18519.7550.50;
01844.4299.70;
Gctl=[-0.9620-0.29740.0156-2.6405;
0.3266-0.95520.005659.7141;
0.01300.00031.;
0001.0000];
G=inv;
z=10;%指定物體的高度
M=Kl*Gctl*G;
Ml=[u*Mu*M;v*Mv*M];
Mr=[M-*z;M-*z];
P=inv*Mr;%失掉物體的地位
圖書館分揀機器人智能快遞分揀機器人簡介快遞分揀機器人作用蜘蛛手分揀機器人