根据视觉伺服的工业机器人系统研究
portant;">常见的机器人视觉伺服中要完成像素坐标与实践坐标的转化,首要就要进行标定,关于完成视觉伺服操控,这儿的标定不只包含摄像机标定,也包含机器人体系的手眼标定。以常见的焊接机器人体系为例,有两种构型,如下:
portant;">
portant;">即:摄像机固定于机器手和摄像机固定于外部场景;
portant;">本文针对前一种构型:摄像机固定于机器手。
portant;">1、摄像机标定技能
portant;">(1)理论部分:
portant;">以张正友的棋盘标定法为摄像机标定办法,因为摄像机标定成果要用到后边的手眼标定中,所以此处进行不同方位的棋盘图片拍照时需求恪守:标定板固定方位不动,手眼组合体改换姿势拍照图片。
portant;">摄像机标定的意图:得到两组坐标系的两两转化矩阵:T1和T2;
portant;">1)得到图片像素坐标系P与摄像机坐标系C之间的转化矩阵T1,精确说应该是摄像机坐标系转化为图片像素坐标系的转化矩阵。可表示为:
portant;">P=T1*C;
portant;">解说:T1在摄像机标定成果中便是内参矩阵3x3;
portant;">2)得到摄像相机坐标系C与棋盘上树立的国际坐标系G之间的转化矩阵T2,精确说应该是坐标系G转化为摄像机坐标系的转化矩阵。可表示为:
portant;">C=T2*G;
portant;">解说:T2在摄像机标定成果中便是外参矩阵4x4,由旋转矩阵r平和移向量t构成[ t r; 0 0 0 1];
portant;">(2)办法:
portant;">摄像机标定办法有两种可选:openCV或许Matlab标定东西箱;
portant;">主张挑选MATLAB运用程序——图画处理与核算机视觉——Camera Calibrator,直接导入拍照好的图片即可。可是要注意,运用matlab标定东西箱所得到的内参矩阵、外参旋转矩阵、外参平移向量都要通过转置才是正确的成果。
portant;">如下图,MATLAB标定得到的红框中依次是外参平移向量、内参矩阵、外参旋转矩阵,它们都需求做转置后才干运用于本文的公式核算:
portant;">
portant;">2、手眼标定技能
portant;">(1)理论部分:
portant;">手眼标定意图:得到摄像机坐标系C与机器手(或东西)坐标系H之间的转化矩阵T3,精确说应该是机器手坐标系转化为摄像机坐标系的转化矩阵。可表示为:
portant;">C=T3*H;
portant;">解说:T3需求依据公式CX=XD得到;实践中,别离知道C、D求出来的X有无量多个解。所以为了完成仅有解,咱们至少需求两组C和D,即至少需求3个方位的摄像机标定成果。
portant;">其间C的求法如下:
portant;">C是两个摄像机坐标系之间的改换矩阵。能够依据上述任一两张标定图片所得的两个摄像机标定外参A、B按公式C=A*inv(B)核算得到的。假定上述摄像机标定中有3张标定图片的外参标定成果别离是T21、T22、T23,那么能够得到两个C矩阵:
portant;">C1=T21*inv(T22);
portant;">C2=T22*inv(T23);
portant;">D的求法如下:
portant;">D是两个机器手坐标系之间的改换矩阵。假定上述摄像机标定中的3张标定图片所一一对应的机器手坐标系在基坐标系(也能够是工件坐标系或许其他固定的参阅坐标系)中的描绘矩阵成果别离是H1、H2、H3(H需求从机器人操控器或示教器中读取),那么能够得到两个D矩阵:
portant;">D1=inv(H1)*H2;
portant;">D2=inv(H2)*H3;
portant;">由以上两组C和D,代入CX=XD就能够得到仅有解X,然后T3=X;
portant;">注:上述H1、H2、H3是每张标定图片对应的机器手坐标系描绘矩阵,正好说明晰摄像机标定中所谓的“标定板固定,手眼运动”的正确性。假如手眼不动,改动标定板姿势进行拍照,那么H的值都是相同的。
portant;">(2)办法:
portant;">1)依据摄像机标定已知摄像机外参矩阵T21、T22、T23,还要从机器人操控器中读取T21、T22、T23别离对应的机器手(或东西)坐标系H1、H2、H3。操控器中的坐标系描绘矩阵不是直接读取的,它是以平移向量和欧拉角(或四元数)形式存在的,如下:
portant;">平移向量+欧拉角形式:
portant;">
portant;">平移向量+四元数形式:
portant;">
portant;">选取其间任一形式即可,然后将其转化为描绘矩阵。
portant;">上述作业完成后,就现已获取了3个外参矩阵(再次提示,摄像机标定运用MATLAB标定东西箱的话,所得到的外参旋转矩阵平和移向量先要转置,即R=r',T=t',然后外参矩阵EX=[R T;0 0 0 1])和 3个机械手坐标系矩阵,因而能够别离将3个二维矩阵合为一个三维矩阵,matlab指令如下:
portant;">C_ext=cat(3, C_ext1, C_ext2, C_ext3);
portant;">H=cat(3, H1, H2 ,H3)
portant;">终究将C_ext和H作为参数代入到如下MATLAB函数中:
functionTch=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=[kc1kc2kc3];b=[kd1kd2kd3];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)-[100;010;001];b=C2(1:3,1:3)-[100;010;001];h=[a;b];y=[c;d];t=inv(h'*h)*h'*y;%得到平移联系矩阵Tch=[Rt;0001];%得到终究成果end【重要提醒】
↘↘点我免费发布一条本地便民信息↙↙(微信搜索13717680188加小编好友,注明,免费拉您进群聊),优先通过审核。内容来源网络如有侵权请联系管理员删除谢谢合作!
- 可罚款数十亿英镑,英国加大对苹果、谷歌等科技巨头的监管力度
- 日本首个商业登月项目失利,着陆器于今日失联
- 假冒 ChatGPT 应用冲刷 Mac 应用商城:代码 99% 相同,“换脸”骗取钱财
- OpenAI急于为“GPT”注册商标,美国专利局却不买账
- 2022年联网汽车销量同比增长12%:大众第一,特斯拉首次进入前十
- Meta硅策略动荡,挖来微软高管领导芯片业务
- 谷歌CEO皮查伊预告Google I/O 2023亮点:AI赋能Pixel,Android 14令人兴奋
- 腾讯发布机器人灵巧操作研究成果,自研灵巧手与机械臂首次亮相
- 2023先进机器人与仿真技术大会在三亚崖州湾科技城开幕
- 精彩在即!第八届广东国际机器人及智能装备博览会新闻发布会召开