精华内容
下载资源
问答
  • 机器人坐标系转换

    千次阅读 2013-01-05 11:05:08
    在halcon中c_1Hc_5描述的是坐标系从c_1如何转换到c_5,同时也描述了c_5坐标系在c_1坐标系中的位置和朝向。   上文中说明了如何将c_5坐标系中的点转换为c_1坐标系内的点的坐标,其算法是c_5坐标系内的坐标左乘以...

    在halcon中c_1Hc_5描述的是坐标系从c_1如何转换到c_5,同时也描述了c_5坐标系在c_1坐标系中的位置和朝向。

     

    上文中说明了如何将c_5坐标系中的点转换为c_1坐标系内的点的坐标,其算法是c_5坐标系内的坐标左乘以c_1到c_5坐标系的转换矩阵。

     

     

    在halcon中hom_mat3d_translate为左乘,hom_mat3d_translate_local为右乘,较常用的是

     

    结合相机坐标系和世界坐标系来说:

    Exterior camera parameters:These 6 parameters describe the 3D pose, i.e., the position and orientation, of the world coordinate system relative to the camera coordinate system. For line scan cameras, the pose of the world coordinate system refers to the camera coordinate system of the first image line. Three parameters describe the translation, three the rotation. See create_pose for more information about 3D poses. Note that camera_calibration operates with all types of 3D poses for NStartPose. When using the standard calibration plate, the world coordinate system is defined by the coordinate system of the calibration plate which is located in the middle of the surface of the calibration plate, its z-axis pointing into the calibration plate, its x-axis to the right, and it y-axis downwards.

     

    相机标定结果的外参为:c_H_w  即世界坐标系(标定板坐标系)在相机坐标系的位置和姿态,同时也是相机坐标系向世界坐标系的转换向量。

     

    Moving camera: H(cam<-cal) = H(cam<-tool) * H(tool<-base) * H(base<-cal)

                                             |               |               |

     

    以上两式为手眼标定的公式,两者是一个意思,表达方式不一样,其中H(cam<-cal)为相机标定结果中的外参,其含义为标定板坐标系在相机坐标系中的位置和姿态,同时也是相机坐标系向标定板坐标系的转换方式,同时也表明标定板坐标系内的坐标左乘以该矩阵可以得到该点在相机坐标系中的坐标。

     

    展开全文
  • 以下面puma560工业机器人为例,其坐标系建立如下图: puma560机器人模型(坐标系) 基本的矩阵旋转关系在此不在啰嗦,直接进入求解思路探讨过程! 1不带刀具的坐标系转化 1.1已知关节坐标系求解世界坐标系 基本思路...

    世界坐标系与关节坐标系互换—矩阵求解

    前言

    前面的文章有提到关节坐标系(θ1…θ6)和世界坐标系(XYZABC或XYZ rxryrz)的基本概念,本文主要从两个坐标系相互转化关系进行探究(附加带工具情况研究)。
    以下面puma560工业机器人为例,其坐标系建立如下图:
    在这里插入图片描述
    puma560机器人模型(坐标系)

    基本的矩阵旋转关系在此不在啰嗦,直接进入求解思路探讨过程!

    1不带刀具的坐标系转化

    1.1已知关节坐标系求解世界坐标系

    基本思路:不论是关节坐标系还是世界坐标系,其最终的目的都是要实现既定的目标位置和姿态,那么关节坐标系与世界坐标系之间一定存在转换的关系。如R(关节)转换 = 目标姿态 = R(世界坐标)转换。
    在这里插入图片描述图片来源于互联网

    一、旋转角度转换求解

    ①相对于世界坐标系的关节坐标系运动描述(为方便描述,我们假设第六轴轴向竖直)
    如上所示,机器人第6轴竖直向下,指向Z轴反方向,相对于世界坐标系描述则可用向量表示为[0,0,-1],
    对于任意一个工作位置的描述,可由第一到第六轴的旋转角度(θ01-θ6)来得到。那么6轴的运动我们可以进行从末尾姿态到各关节角度的反向推导。
    六轴运动可分为6各轴的旋转方向(以下第6轴Z轴方向称为Z轴):
    (1)第六轴旋转θ6,则此时Z轴的方向为:R6 = R关(θ6)*[0,0,-1]
    在这里插入图片描述
    (其实可以看出来,第6轴的旋转对于Z轴的矢量无影响,由于是相对于运动后坐标系参考,所以为左乘矩阵)
    (2)第五轴旋转θ5,如上图所示,第五轴的转动是相对第六轴的Y轴进行转动,此时Z轴指向为:R56 = R关(θ5)R关(θ6)[0,0,-1]在这里插入图片描述
    (3)第四轴旋转θ4,同理如上图,第4轴的运动是相对于第六轴Z轴方向旋转,则此时Z轴指向为:R 456 = R关z(θ4)R关y(θ5)R关z(θ6)[0,0,-1]
    在这里插入图片描述
    在这里插入图片描述
    (4)第三轴旋转为θ3,同理,第3轴的运动是相对于第六轴Y轴方向旋转,则此时Z轴指向为:R 3456 =R关y(θ3)
    R关z(θ4)*R关y(θ5)R关z(θ6)[0,0,-1]
    在这里插入图片描述
    (5)第二轴旋转为θ2,同理,第2轴的运动是相对于第六轴Y轴方向旋转,则此时Z轴指向为:R 23456 =R关y(θ2)R关y(θ3) R关z(θ4)*R关y(θ5)R关z(θ6)[0,0,-1],

    第一轴旋转为θ1,同理,第1轴的运动是相对于第六轴Z轴方向旋转,则此时Z轴指向为:R 123456 =R关z(θ1)*R关y(θ2)R关y(θ3) R关z(θ4)*R关y(θ5)R关z(θ6)[0,0,1]
    在这里插入图片描述
    (以上角度θ等同于j)
    假设以上:
    R1’ = R关z(θ1)
    R2‘ = R关z(θ1)*R关y(θ2)
    R3’ = R关z(θ1)*R关y(θ2)*R关y(θ3)
    R4‘ = R关z(θ1)*R关y(θ2)R关y(θ3) R关z(θ4)
    R5’ = R关z(θ1)*R关y(θ2)R关y(θ3) R关z(θ4)*R关y(θ5)
    R6‘ = R关z(θ1)*R关y(θ2)R关y(θ3) R关z(θ4)*R关y(θ5)*R关z(θ6)

    在不带工具坐标的情况下, 对于关节坐标为(θ1,θ2,θ3,θ4,θ5,θ6)的位置时,第六轴Z轴指向可描述为R6’*[0,0,1]
    ②关节坐标系中描述,可忽略中间轴,直接去参考末端点与世界坐标系基点的位姿关系,设,末端点绕世界坐标系X,Y,Z旋转分别为A,B,C角度。
    则旋转矩阵为
    在这里插入图片描述
    (rx,ry,rz分别代表A B C)
    则其旋转后Z轴方向为:
    R ABC = Rotx(A)*Roty(B)Rotz(C)[0,0,-1]

    求解

    因此如已知θ1-θ6,可令两式相等,即R_123456 = R_ABC
    有:

    =在这里插入图片描述
    在这里插入图片描述
    三个方程,三个未知数,可求得A,B,C的角度值。
    matlab程序如下:

    clc
    clear
    syms theta1 theta2 theta3 theta4 theta5 theta6
    syms A B C
    Z = [0;0;1]
    R_16 = Rotr('Z',theta1)*Rotr('Y',theta2)*Rotr('Y',theta3)* Rotr('Z',theta4)*Rotr('Y',theta5)*Rotr('Z',theta6)
    R_ABC = Rotr('X',A)*Rotr('Y',B)*Rotr('Z',C)
    
    r11=R_16(1,1);r12=R_16(1,2);r13=R_16(1,3);
    r21=R_16(2,1);r22=R_16(2,2);r23=R_16(2,3);
    r31=R_16(3,1);r32=R_16(3,2);r33=R_16(3,3);
    
    A = -atan(r23/r33)
    B = asin(r13)
    C = -atan(r12/r11)
    
    function R = Rotr( axis ,theta )
    %为方便调用旋转矩阵,写此 函数
     
    switch axis
        case 'X'
            R=[1,0,0,0;0,cos(theta),-sin(theta),0;0,sin(theta),cos(theta),0;0,0,0,1];
        case 'Y'
            R=[cos(theta),0,sin(theta),0;0,1,0,0;-sin(theta),0,cos(theta),0;0,0,0,1];
        case 'Z'
            R=[cos(theta),-sin(theta),0,0;sin(theta),cos(theta),0,0;0,0,1,0;0,0,0,1];
    end
    
    function T = Trans( u,v,w )
    %为方便调用平移矩阵,写此函数
     
    T=[1,0,0,u;0,1,0,v;0,0,1,w;0,0,0,1];
    end
    
    

    求解结果为:R_16 =

    [ - sin(theta6)*(cos(theta4)sin(theta1) - sin(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)cos(theta2)cos(theta3))) - cos(theta6)(cos(theta5)(sin(theta1)sin(theta4) + cos(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)*cos(theta2)cos(theta3))) + sin(theta5)(cos(theta1)*cos(theta2)*sin(theta3) + cos(theta1)cos(theta3)sin(theta2))), sin(theta6)(cos(theta5)(sin(theta1)sin(theta4) + cos(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)*cos(theta2)cos(theta3))) + sin(theta5)(cos(theta1)*cos(theta2)*sin(theta3) + cos(theta1)*cos(theta3)sin(theta2))) - cos(theta6)(cos(theta4)sin(theta1) - sin(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)*cos(theta2)cos(theta3))), cos(theta5)(cos(theta1)*cos(theta2)*sin(theta3) + cos(theta1)*cos(theta3)sin(theta2)) - sin(theta5)(sin(theta1)sin(theta4) + cos(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)*cos(theta2)cos(theta3))), 0]
    [ sin(theta6)
    (cos(theta1)cos(theta4) + sin(theta4)(sin(theta1)*sin(theta2)*sin(theta3) - cos(theta2)cos(theta3)sin(theta1))) + cos(theta6)(cos(theta5)(cos(theta1)sin(theta4) - cos(theta4)(sin(theta1)*sin(theta2)*sin(theta3) - cos(theta2)*cos(theta3)sin(theta1))) - sin(theta5)(cos(theta2)*sin(theta1)*sin(theta3) + cos(theta3)*sin(theta1)sin(theta2))), cos(theta6)(cos(theta1)cos(theta4) + sin(theta4)(sin(theta1)*sin(theta2)*sin(theta3) - cos(theta2)cos(theta3)sin(theta1))) - sin(theta6)(cos(theta5)(cos(theta1)sin(theta4) - cos(theta4)(sin(theta1)*sin(theta2)*sin(theta3) - cos(theta2)*cos(theta3)sin(theta1))) - sin(theta5)(cos(theta2)*sin(theta1)*sin(theta3) + cos(theta3)*sin(theta1)sin(theta2))), sin(theta5)(cos(theta1)sin(theta4) - cos(theta4)(sin(theta1)*sin(theta2)*sin(theta3) - cos(theta2)*cos(theta3)sin(theta1))) + cos(theta5)(cos(theta2)*sin(theta1)*sin(theta3) + cos(theta3)*sin(theta1)*sin(theta2)), 0]
    [ sin(theta4)sin(theta6)(cos(theta2)sin(theta3) + cos(theta3)sin(theta2)) - cos(theta6)(sin(theta5)(cos(theta2)*cos(theta3) - sin(theta2)*sin(theta3)) + cos(theta4)cos(theta5)(cos(theta2)sin(theta3) + cos(theta3)sin(theta2))), sin(theta6)(sin(theta5)(cos(theta2)*cos(theta3) - sin(theta2)*sin(theta3)) + cos(theta4)cos(theta5)(cos(theta2)*sin(theta3) + cos(theta3)*sin(theta2))) + cos(theta6)sin(theta4)(cos(theta2)*sin(theta3) + cos(theta3)sin(theta2)), cos(theta5)(cos(theta2)*cos(theta3) - sin(theta2)*sin(theta3)) - cos(theta4)sin(theta5)(cos(theta2)*sin(theta3) + cos(theta3)*sin(theta2)), 0]
    [ 0, 0, 0, 1]

    R_ABC =

    [ cos(B)*cos©, -cos(B)*sin©, sin(B), 0]
    [ cos(A)*sin© + cos©*sin(A)*sin(B), cos(A)*cos© - sin(A)*sin(B)*sin©, -cos(B)*sin(A), 0]
    [ sin(A)*sin© - cos(A)*cos©*sin(B), cos©*sin(A) + cos(A)*sin(B)*sin©, cos(A)*cos(B), 0]
    [ 0, 0, 0, 1]
    在这里插入图片描述

    设R11 = R_16(1,1),以此类推,有
    A = -atan(r23/r33)
    B = asin(r13)
    C = -atan(r12/r11)
    则:A B C的值为:
    A =

    -atan((sin(theta5)*(cos(theta1)sin(theta4) - cos(theta4)(sin(theta1)*sin(theta2)*sin(theta3) - cos(theta2)*cos(theta3)sin(theta1))) + cos(theta5)(cos(theta2)*sin(theta1)*sin(theta3) + cos(theta3)*sin(theta1)sin(theta2)))/(cos(theta5)(cos(theta2)*cos(theta3) - sin(theta2)*sin(theta3)) - cos(theta4)sin(theta5)(cos(theta2)*sin(theta3) + cos(theta3)*sin(theta2))))

    B =

    -asin(sin(theta5)*(sin(theta1)sin(theta4) + cos(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)*cos(theta2)cos(theta3))) - cos(theta5)(cos(theta1)*cos(theta2)*sin(theta3) + cos(theta1)*cos(theta3)*sin(theta2)))

    C =

    -atan((cos(theta6)*(cos(theta4)sin(theta1) - sin(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)cos(theta2)cos(theta3))) - sin(theta6)(cos(theta5)(sin(theta1)sin(theta4) + cos(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)*cos(theta2)cos(theta3))) + sin(theta5)(cos(theta1)*cos(theta2)*sin(theta3) + cos(theta1)*cos(theta3)sin(theta2))))/(sin(theta6)(cos(theta4)sin(theta1) - sin(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)cos(theta2)cos(theta3))) + cos(theta6)(cos(theta5)(sin(theta1)sin(theta4) + cos(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)*cos(theta2)cos(theta3))) + sin(theta5)(cos(theta1)*cos(theta2)*sin(theta3) + cos(theta1)*cos(theta3)*sin(theta2)))))

    二、位置关系转换求解

    在这里插入图片描述

    思路:本部分参考殷卓的《浅谈工业机器人坐标系转化》,其利用了机器人由六个关节组成,末端手臂的位置向量是这六个关节位置向量的矢量和的思路。
    如上图中的机器人各关节的尺寸已知(仅提供一个思路)
    (注意,以下为0指的是所有关节转角为0)
    ①第一关节
    在θ1为0时,位置向量是向X方向偏移一定的距离,记作x1
    则θ1不为0时,位移则为:
    R1’[x1,0,0]
    ②第二关节
    在θ2为0时,位置向量是向Y方向偏移了一定的距离,记y2
    则在θ2不为0时,位移为:
    R2’
    [0,y2,0]
    ③第三关节
    在θ3为0时,位置向量是向X,Z方向偏移了一定的距离,记X3,Z3
    则在θ2不为0时,位移为:
    R3’*[X3,0,Z3]
    ④第四-六关节
    由于四到六关节坐标系建于同一点,则该部分无位置变换,仅进行姿态转换,可见该机器人的位置有前三关节决定

    综上所述,如果设世界坐标的位置为x、y、z, 则已知关节坐标求解世界坐标(不带工具坐标系情况下)的位置公式为:
    [X,Y,Z] = R1*[x1,0,0]+R2’[0,y2,0]+R3’[X3,0,Z3]

    分析:以上等式中含有三个方程,同时存在三个未知数,可求解。
    求解:
    matlab代码

    %% 位置关系
    syms x1 y2 x3 z3 X Y Z
    T_16 = R_1*[x1;0;0]+R_12*[0;y2;0]+R_13*[x3;0;z3]
    T_6 = [X;Y;Z] ; %世界坐标系位移 等于上述关节坐标系运动值
    %解得X Y Z的值
    X = T_16(1)
    Y = T_16(2)
    Z = T_16(3)
    

    结果:
    X =
    z3*(cos(theta1)*cos(theta2)*sin(theta3) +cos(theta1)*cos(theta3)sin(theta2)) - x3(cos(theta1)sin(theta2)sin(theta3) - cos(theta1)cos(theta2) cos(theta3)) + x1cos(theta1) - y2sin(theta1)

    Y =
    z3*(cos(theta2)*sin(theta1)*sin(theta3) + cos(theta3)*sin(theta1)sin(theta2)) - x3(sin(theta1)*sin(theta2)*sin(theta3) - cos(theta2)cos(theta3)sin(theta1)) + y2cos(theta1) + x1sin(theta1)

    Z =
    z3*(cos(theta2)cos(theta3) - sin(theta2)sin(theta3)) - x3(cos(theta2) sin(theta3) + cos(theta3)*sin(theta2))

    总结

    以上,通过角度旋转公式和坐标公式,可以由6关节参数转换为XYZABC坐标值,完成计算。
    角度公式
    R6‘ = R关z(θ1)*R关y(θ2)R关y(θ3) R关z(θ4)*R关y(θ5)R关z(θ6)= R_ABC = Rotx(A)Roty(B)Rotz(C)
    位置公式
    [X,Y,Z] = R1
    [x1,0,0]+R2’
    [0,y2,0]+R3’
    [X3,0,Z3]

    点的运动坐标为:

    %% 最终结果
    point = [X,Y,Z,A,B,C]
    

    point =

    [ z3*(cos(theta1)*cos(theta2)*sin(theta3) + cos(theta1)*cos(theta3)sin(theta2)) - x3(cos(theta1)*sin(theta2)sin(theta3) - cos(theta1)cos(theta2)cos(theta3)) + x1cos(theta1) - y2sin(theta1), z3(cos(theta2)*sin(theta1)*sin(theta3) + cos(theta3)*sin(theta1)sin(theta2)) - x3(sin(theta1)*sin(theta2)sin(theta3) - cos(theta2)cos(theta3)sin(theta1)) + y2cos(theta1) + x1sin(theta1), z3(cos(theta2)*cos(theta3) - sin(theta2)sin(theta3)) - x3(cos(theta2)*sin(theta3) + cos(theta3)sin(theta2)), -atan((sin(theta5)(cos(theta1)sin(theta4) - cos(theta4)(sin(theta1)*sin(theta2)*sin(theta3) - cos(theta2)*cos(theta3)sin(theta1))) + cos(theta5)(cos(theta2)*sin(theta1)*sin(theta3) + cos(theta3)*sin(theta1)sin(theta2)))/(cos(theta5)(cos(theta2)*cos(theta3) - sin(theta2)*sin(theta3)) - cos(theta4)sin(theta5)(cos(theta2)*sin(theta3) + cos(theta3)sin(theta2)))), -asin(sin(theta5)(sin(theta1)sin(theta4) + cos(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)*cos(theta2)cos(theta3))) - cos(theta5)(cos(theta1)*cos(theta2)*sin(theta3) + cos(theta1)*cos(theta3)sin(theta2))), -atan((cos(theta6)(cos(theta4)sin(theta1) - sin(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)cos(theta2)cos(theta3))) - sin(theta6)(cos(theta5)(sin(theta1)sin(theta4) + cos(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)*cos(theta2)cos(theta3))) + sin(theta5)(cos(theta1)*cos(theta2)*sin(theta3) + cos(theta1)*cos(theta3)sin(theta2))))/(sin(theta6)(cos(theta4)sin(theta1) - sin(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)cos(theta2)cos(theta3))) + cos(theta6)(cos(theta5)(sin(theta1)sin(theta4) + cos(theta4)(cos(theta1)*sin(theta2)*sin(theta3) - cos(theta1)*cos(theta2)cos(theta3))) + sin(theta5)(cos(theta1)*cos(theta2)*sin(theta3) + cos(theta1)*cos(theta3)*sin(theta2)))))]

    基于标准DH坐标系的转换思路

    DH坐标系参数表
    在这里插入图片描述
    (****本图应该是基于MDH建立坐标系,分析用SDH分析,有点问题,参考思路)

    %用于标准DH坐标建模计算
    function T = T_SDH(theta,d,a,alpha)
    T = Rot('Z',theta)*Trans(0,0,d)*Trans(a,0,0)*Rot('X',alpha)
    
    function R = Rotr( axis ,theta )
    %为方便调用旋转矩阵,写此 函数
    %带比例 4*4 角度表示
    switch axis
        case 'X'
            R=[1,0,0,0;0,cosd(theta),-sind(theta),0;0,sind(theta),cosd(theta),0;0,0,0,1];
        case 'Y'
            R=[cosd(theta),0,sind(theta),0;0,1,0,0;-sind(theta),0,cosd(theta),0;0,0,0,1];
        case 'Z'
            R=[cosd(theta),-sind(theta),0,0;sind(theta),cosd(theta),0,0;0,0,1,0;0,0,0,1];
    end
    
    function T = Trans( u,v,w )
    %为方便调用平移矩阵,写此函数
     
    T=[1,0,0,u;0,1,0,v;0,0,1,w;0,0,0,1];
    end
    

    根据DH旋转公式有:
    T_01 =
    在这里插入图片描述
    T_12 =
    在这里插入图片描述
    T_23 =
    在这里插入图片描述
    T_34 =
    在这里插入图片描述
    T_45 =
    在这里插入图片描述
    T_56 =
    在这里插入图片描述
    T_16 = T_01T_12T_23T_34T_45T_56
    [ sin((pi
    theta6)/180)(sin((pitheta4)/180)(cos((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180) - cos((pitheta1)/180)cos((pitheta2)/180)cos((pitheta3)/180)) + cos((pitheta4)/180)sin((pitheta1)/180)) - cos((pitheta6)/180)(cos((pitheta5)/180)(cos((pitheta4)/180)(cos((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180) - cos((pitheta1)/180)cos((pitheta2)/180)cos((pitheta3)/180)) - sin((pitheta1)/180)sin((pitheta4)/180)) + sin((pitheta5)/180)(cos((pitheta1)/180)cos((pitheta2)/180)sin((pitheta3)/180) + cos((pitheta1)/180)cos((pitheta3)/180)sin((pitheta2)/180))), cos((pitheta6)/180)(sin((pitheta4)/180)(cos((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180) - cos((pitheta1)/180)cos((pitheta2)/180)cos((pitheta3)/180)) + cos((pitheta4)/180)sin((pitheta1)/180)) + sin((pitheta6)/180)(cos((pitheta5)/180)(cos((pitheta4)/180)(cos((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180) - cos((pitheta1)/180)cos((pitheta2)/180)cos((pitheta3)/180)) - sin((pitheta1)/180)sin((pitheta4)/180)) + sin((pitheta5)/180)(cos((pitheta1)/180)cos((pitheta2)/180)sin((pitheta3)/180) + cos((pitheta1)/180)cos((pitheta3)/180)sin((pitheta2)/180))), sin((pitheta5)/180)(cos((pitheta4)/180)(cos((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180) - cos((pitheta1)/180)cos((pitheta2)/180)cos((pitheta3)/180)) - sin((pitheta1)/180)sin((pitheta4)/180)) - cos((pitheta5)/180)(cos((pitheta1)/180)cos((pitheta2)/180)sin((pitheta3)/180) + cos((pitheta1)/180)cos((pitheta3)/180)sin((pitheta2)/180)), d3cos((pitheta1)/180)cos((pitheta2)/180) - l2sin((pitheta1)/180) + d4cos((pitheta1)/180)cos((pitheta2)/180)cos((pitheta3)/180) - d4cos((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180)]
    [ cos((pitheta6)/180)(cos((pitheta5)/180)(cos((pitheta4)/180)(cos((pitheta2)/180)cos((pitheta3)/180)sin((pitheta1)/180) - sin((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180)) - cos((pitheta1)/180)sin((pitheta4)/180)) - sin((pitheta5)/180)(cos((pitheta2)/180)sin((pitheta1)/180)sin((pitheta3)/180) + cos((pitheta3)/180)sin((pitheta1)/180)sin((pitheta2)/180))) - sin((pitheta6)/180)(cos((pitheta1)/180)cos((pitheta4)/180) + sin((pitheta4)/180)(cos((pitheta2)/180)cos((pitheta3)/180)sin((pitheta1)/180) - sin((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180))), - sin((pitheta6)/180)(cos((pitheta5)/180)(cos((pitheta4)/180)(cos((pitheta2)/180)cos((pitheta3)/180)sin((pitheta1)/180) - sin((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180)) - cos((pitheta1)/180)sin((pitheta4)/180)) - sin((pitheta5)/180)(cos((pitheta2)/180)sin((pitheta1)/180)sin((pitheta3)/180) + cos((pitheta3)/180)sin((pitheta1)/180)sin((pitheta2)/180))) - cos((pitheta6)/180)(cos((pitheta1)/180)cos((pitheta4)/180) + sin((pitheta4)/180)(cos((pitheta2)/180)cos((pitheta3)/180)sin((pitheta1)/180) - sin((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180))), - sin((pitheta5)/180)(cos((pitheta4)/180)(cos((pitheta2)/180)cos((pitheta3)/180)sin((pitheta1)/180) - sin((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180)) - cos((pitheta1)/180)sin((pitheta4)/180)) - cos((pitheta5)/180)(cos((pitheta2)/180)sin((pitheta1)/180)sin((pitheta3)/180) + cos((pitheta3)/180)sin((pitheta1)/180)sin((pitheta2)/180)), l2cos((pitheta1)/180) + d3cos((pitheta2)/180)sin((pitheta1)/180) + d4cos((pitheta2)/180)cos((pitheta3)/180)sin((pitheta1)/180) - d4sin((pitheta1)/180)sin((pitheta2)/180)sin((pitheta3)/180)]
    [ sin((pi
    theta4)/180)sin((pitheta6)/180)(cos((pitheta2)/180)sin((pitheta3)/180) + cos((pitheta3)/180)sin((pitheta2)/180)) - cos((pitheta6)/180)(sin((pitheta5)/180)(cos((pitheta2)/180)cos((pitheta3)/180) - sin((pitheta2)/180)sin((pitheta3)/180)) + cos((pitheta4)/180)cos((pitheta5)/180)(cos((pitheta2)/180)sin((pitheta3)/180) + cos((pitheta3)/180)sin((pitheta2)/180))), sin((pitheta6)/180)(sin((pitheta5)/180)(cos((pitheta2)/180)cos((pitheta3)/180) - sin((pitheta2)/180)sin((pitheta3)/180)) + cos((pitheta4)/180)cos((pitheta5)/180)(cos((pitheta2)/180)sin((pitheta3)/180) + cos((pitheta3)/180)sin((pitheta2)/180))) + cos((pitheta6)/180)sin((pitheta4)/180)(cos((pitheta2)/180)sin((pitheta3)/180) + cos((pitheta3)/180)sin((pitheta2)/180)), cos((pitheta4)/180)sin((pitheta5)/180)(cos((pitheta2)/180)sin((pitheta3)/180) + cos((pitheta3)/180)sin((pitheta2)/180)) - cos((pitheta5)/180)(cos((pitheta2)/180)cos((pitheta3)/180) - sin((pitheta2)/180)sin((pitheta3)/180)), - d3sin((pitheta2)/180) - d4cos((pitheta2)/180)sin((pitheta3)/180) - d4cos((pi*theta3)/180)sin((pitheta2)/180)]
    [ 0,0,1]


    根据得到的T_16的转换矩阵,取旋转矩阵部分直接转换
    即T_DH = T_16(3X3)

    %ABC的旋转矩阵为(同上)R_ABC

    使T_DH = R_ABC,从而解的ABC的值
    令T_16 = r(**),同理:
    A = -atan(r23/r33)
    B = asin(r13)
    C = -atan(r12/r11)

    (注意,T_DH的解比较复杂,但T_DH中的θ值默认均为已知值)
    具体θ值的求解,是由已知位置姿态逆解获得。

    (如果已知了终点的姿态,可直接求得ABC的值,无需通过求出θ再求得ABC,此过程仅仅是为了对不同坐标系下的转换关系进行一个探讨)

    关于带刀具的坐标系转换,即在以上的基础上,新增一个工具坐标系的位置及姿态,进行求解,后续进行~

    展开全文
  • 终于搞明白坐标系之间的转换关系了,问题描述如下:已知一个空间坐标系M1,在该坐标系下存在三个点,并且已知这三个点的坐标M2,这时候让你用这三个点建立一个新的坐标系,然后求出空间一点P在坐标系M2和M1之间的...

    说明:这个文章是自己用来记笔记的,问题比较具体,请不要浪费时间在我的这篇文章上。
    终于搞明白坐标系之间的转换关系了,问题描述如下:已知一个空间坐标系M1,在该坐标系下存在三个点,并且已知这三个点的坐标M2,这时候让你用这三个点建立一个新的坐标系,然后求出空间一点P在坐标系M2和M1之间的转换关系(感觉描述的不清楚,啰嗦一下,就是现在又给了一个新的点P在M2下的坐标,让你求M1下的坐标)。
    这里涉及两个问题,一个是这个新的坐标系M2怎么求,一个是转换关系。
    关于M2怎么求这里用到机器人中的位姿关系
    在这里插入图片描述
    这时候通过三点AB向量可以求新的x轴,AB和AC的叉乘求新的z轴,x轴和z轴叉乘求新的y轴,其实这时候把他们三个分别写在矩阵的第一列,第二列和第三列,把A点坐标写在第四列就能求出来一个矩阵T,这个T左乘P在新矩阵下的坐标就能求出来他在原坐标系下的坐标。
    这时候我就想原理是什么,经过验算,发现其实这么求正好得到了姿态矢量矩阵的项也就对应上了,验算过程为求AB向量然后求cos值,利用a·b=|a||b|cosseta求。
    微信个人公众号:《定识》,乐于分享

    展开全文
  • 机器人坐标转换

    2017-09-15 10:57:02
    机器人坐标转换
  • 机器人坐标转换软件

    2019-05-01 21:58:57
    机器人坐标转换软件,ABB,FANUC,KUKA,等都可以使用,很方便小巧的一个软件,分享给大家。
  • 机器人坐标XYZ转换四个轴的角度

    千次阅读 2018-10-06 22:16:57
    机器人坐标XYZ转换四个轴的角度一.算法: 一.算法: 图为关节运动的示意图 下边是平板电脑做的上位机,XYZ坐标转化成角度发送给机器人 查看机器人演示: [1]: http://robotworld.taobao.com [2]: ...

    机器人坐标XYZ转换四个轴的角度

    一.算法:

    图为关节运动的示意图
    图为关节运动的示意图
    在这里插入图片描述下边是平板电脑做的上位机,XYZ坐标转化成角度发送给机器人!
    在这里插入图片描述

    在这里插入图片描述

    需要程序代码请在淘宝购买。
    [1]: http://robotworld.taobao.com

    展开全文
  • 机器人坐标系变换 坐标变换-旋转部分 二维坐标旋转的向量和几何表示 对于以前数学学习不好的人来说,在机器人的坐标变换里,总是各种蒙。 这个图片来给你解答。
  • 前段时间和川崎机器人做了一个定位抓取的项目,用到了一个坐标系转换的功能,自己在visiopro中写了个脚本,希望可以帮助有需要的人
  • 机器人坐标系绕定轴旋转

    千次阅读 2018-04-04 10:50:48
    机器人坐标系转换,绕定轴旋转,要注意正反转的问题。绕定轴的向量存在两种情况v=[x,y,z]; 或者v'=[-x,-y,-z];同时转动角度存在两种情况theta1,和 360-theta1.这四种情况要注意排列好。...
  • 坐标变换树 定义了 每个 不同的坐标系间的 偏移和旋转。 举个例子 一个移动的小车在顶部安装着一个激光测距仪。 定义两个坐标系 : 一个小车的中心(base_link),另一个激光测距仪的中心(base_laser) 假设激光测距...
  • ABB多机器人坐标系之间的关系

    千次阅读 2017-12-22 11:47:27
    ABB多机器人作业,使用一套G代码,每个机器人坐标系关系是如何的?假设有两台机器人A、B,工件坐标系为O.假设A、B、O在大地坐标系下的旋转矩阵分别为MA、MB、MO(大地坐标系旋转矩阵为单位阵E)。 机器人A要将工件...
  • 在视觉 SLAM 中,我们引入了 4 个坐标系,通过不同坐标系观测到同一个点会得到不同的坐标位置,并且存在一定的关系。 一、世界坐标系到相机坐标系 世界坐标系与相机坐标系之间仅相差一个旋转和一个平移,我们将图像...
  • 例如:图1中变换TBT{^B_T}TTB​T描述了操作臂指向的坐标系{T},它是相对于操作臂基座的坐标系{B}的,又已知工作台相对于操作臂基座的空间位置SBT{^B_S}TSB​T,并且已知工作台上螺栓的坐标系相对于工作台坐标系的...
  • #物理坐标(例如机器人坐标) r1:=[0, 2.0, -2.0, 10, -2.0] c1:=[0, 1.0, -5.0, -10, 10] row:=670 col:=789 vector_to_hom_mat2d (r, c, r1,c1 , HomMat2D) affine_trans_point_2d (HomMat2D, row,col, Qx, Qy) #...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,602
精华内容 2,240
关键字:

机器人坐标系转换