精华内容
下载资源
问答
  • 到了机器人的第四章便是求逆解书里给出了很多种方法 哎 实在是蛋疼 好多看的云里雾里的嘛 出于先完成课程作业的目的 基本只用代数解和几何解的方法就可以了 这里我用代数解以下是作业题 嘛 就是自己设计program去解...

    到了机器人的第四章便是求逆解

    书里给出了很多种方法 哎 实在是蛋疼 好多看的云里雾里的

    嘛 出于先完成课程作业的目的 基本只用代数解和几何解的方法就可以了 这里我用代数解

    以下是作业题 嘛 就是自己设计program去解这四个T矩阵

    0818b9ca8b590ca3270a3433284dd417.png

    0818b9ca8b590ca3270a3433284dd417.png

    图好大。。。嘛 懒得修了。。。

    然后 这里我用的是代数解的方法 以下是书里的定义

    0818b9ca8b590ca3270a3433284dd417.png

    0818b9ca8b590ca3270a3433284dd417.png

    0818b9ca8b590ca3270a3433284dd417.png

    0818b9ca8b590ca3270a3433284dd417.png

    其实这里一大堆啰嗦的话 主要是一些公式的推导

    真正有用的 我们只看结果 总结下来其实就是这样的 请无视我丑丑的字体

    0818b9ca8b590ca3270a3433284dd417.png

    嘛 然后继续按上边来编写程序就好了

    这里有个问题其实 就是别忘了判断theta2的值 因为是有范围的 -1到1 包含-1和1

    因为题里很贱的最后一个是无解的 就是因为超出了这个范围

    另外一个蛋疼的问题是如何使用ikine这个函数

    不得不吐槽下 机器人这个工具箱太tm难用了

    不但版本多 而且各个版本的函数都不一样

    让你连查都没法查 而且ikine这个函数简直是反社会啊

    它需要四个值

    ikine(robot,t,q,m)

    m为小于六个自由度时候用来屏蔽的 就是比如5自由度 里边就是1,1,1,1,1,0

    t就是要反解的T矩阵

    但是这里robot和q好蛋疼啊

    robot要用link来创造 但是本身link是用dh表弄的

    dh表弄link就要确切的角度 tm老子角度都知道了还逆解个屁啊

    然后q更是了 q本身就是两个臂之间的角度 具体的看我之前的一篇

    也就是说ikine这个函数是逆解的函数 但是它需要它逆解完了的角度作为参数。。。

    坑爹啊 这个函数除了能证明正求的没问题之外还有毛用啊

    而且ikine这个还只能求单解 没法求多解啊 就是个坑啊 哎 活着真难

    好了 废话少说 上程序

    clear

    %

    %DEFINE

    %

    '---------------------------------------------'

    '-----------PART 1-------------------------'

    '---------------------------------------------'

    clear

    DRG=pi/180;

    l1 = 4

    l2 = 3

    T0H = [1 0 0 9

    0 1 0 0

    0 0 1 0

    0 0 0 1]

    T3H = [1 0 0 2

    0 1 0 0

    0 0 1 0

    0 0 0 1]

    NRBA = [-1 0 0

    0 -1 0

    0 0 -1] ;

    PBORG = [2;0;0];

    Ptemp = NRBA*PBORG;

    Ptemp2 = [Ptemp;1];

    R3HT = [1 0 0

    0 1 0

    0 0 1

    0 0 0 ];

    T3HT = [R3HT,Ptemp2];

    T03 = T0H*T3HT

    cphi = T03(1,1);

    sphi = T03(2,1);

    x = T03(1,4);

    y = T03(2,4);

    k = (x^2+y^2-l1^2-l2^2)/(2*l1*l2);

    if k>=-1 && k<=1

    '----------------solution--1------------'

    theta21 = atan2((1-k^2)^0.5,k);

    k11 = l1+l2*cos(theta21);

    k21 = l2*sin(theta21);

    theta11 = atan2(-(k21*x)+k11*y,k11*x+k21*y);

    theta31 = atan2(sphi,cphi)-theta11-theta21;

    degree11 = theta11/DRG

    degree21 = theta21/DRG

    degree31 = theta31/DRG

    '----------------solution--2------------'

    theta22 = atan2(-((1-k^2)^0.5),k);

    k12 = l1+l2*cos(theta22);

    k22 = l2*sin(theta22);

    theta12 = atan2(-(k22*x)+k12*y,k12*x+k22*y);

    theta32 = atan2(sphi,cphi)-theta12-theta22;

    degree12 = theta12/DRG

    degree22 = theta22/DRG

    degree32 = theta32/DRG

    else

    'THERE HAVE NO SOLUTIONS, BECAUSE COSINE THETA 2 NOT IN -1 TO 1'

    end

    '---------------------------------------------'

    '-----------PART 2-------------------------'

    '---------------------------------------------'

    clear

    DRG=pi/180;

    l1 = 4

    l2 = 3

    T0H = [0.5 -0.866 0 7.5373

    0.866 0.5 0 3.9266

    0 0 1 0

    0 0 0 1]

    T3H = [1 0 0 2

    0 1 0 0

    0 0 1 0

    0 0 0 1]

    NRBA = [-1 0 0

    0 -1 0

    0 0 -1] ;

    PBORG = [2;0;0];

    Ptemp = NRBA*PBORG;

    Ptemp2 = [Ptemp;1];

    R3HT = [1 0 0

    0 1 0

    0 0 1

    0 0 0 ];

    T3HT = [R3HT,Ptemp2];

    T03 = T0H*T3HT

    cphi = T03(1,1);

    sphi = T03(2,1);

    x = T03(1,4);

    y = T03(2,4);

    k = (x^2+y^2-l1^2-l2^2)/(2*l1*l2);

    l1 = 4

    l2 = 3

    if k>=-1 && k<=1

    '----------------solution--1------------'

    theta21 = atan2((1-k^2)^0.5,k);

    k11 = l1+l2*cos(theta21);

    k21 = l2*sin(theta21);

    theta11 = atan2(-(k21*x)+k11*y,k11*x+k21*y);

    theta31 = atan2(sphi,cphi)-theta11-theta21;

    degree11 = theta11/DRG

    degree21 = theta21/DRG

    degree31 = theta31/DRG

    '----------------solution--2------------'

    theta22 = atan2(-((1-k^2)^0.5),k);

    k12 = l1+l2*cos(theta22);

    k22 = l2*sin(theta22);

    theta12 = atan2(-(k22*x)+k12*y,k12*x+k22*y);

    theta32 = atan2(sphi,cphi)-theta12-theta22;

    degree12 = theta12/DRG

    degree22 = theta22/DRG

    degree32 = theta32/DRG

    else

    'THERE HAVE NO SOLUTIONS, BECAUSE COSINE THETA 2 NOT IN -1 TO 1'

    end

    '---------------------------------------------'

    '-----------PART 3-------------------------'

    '---------------------------------------------'

    clear

    DRG=pi/180;

    l1 = 4

    l2 = 3

    T0H = [0 1 0 -3

    -1 0 0 2

    0 0 1 0

    0 0 0 1]

    T3H = [1 0 0 2

    0 1 0 0

    0 0 1 0

    0 0 0 1]

    NRBA = [-1 0 0

    0 -1 0

    0 0 -1] ;

    PBORG = [2;0;0];

    Ptemp = NRBA*PBORG;

    Ptemp2 = [Ptemp;1];

    R3HT = [1 0 0

    0 1 0

    0 0 1

    0 0 0 ];

    T3HT = [R3HT,Ptemp2];

    T03 = T0H*T3HT

    cphi = T03(1,1);

    sphi = T03(2,1);

    x = T03(1,4);

    y = T03(2,4);

    k = (x^2+y^2-l1^2-l2^2)/(2*l1*l2);

    l1 = 4

    l2 = 3

    if k>-1 && k<1

    '----------------solution--1------------'

    theta21 = atan2((1-k^2)^0.5,k);

    k11 = l1+l2*cos(theta21);

    k21 = l2*sin(theta21);

    theta11 = atan2(-(k21*x)+k11*y,k11*x+k21*y);

    theta31 = atan2(sphi,cphi)-theta11-theta21;

    degree11 = theta11/DRG

    degree21 = theta21/DRG

    degree31 = theta31/DRG

    '----------------solution--2------------'

    theta22 = atan2(-((1-k^2)^0.5),k);

    k12 = l1+l2*cos(theta22);

    k22 = l2*sin(theta22);

    theta12 = atan2(-(k22*x)+k12*y,k12*x+k22*y);

    theta32 = atan2(sphi,cphi)-theta12-theta22;

    degree12 = theta12/DRG

    degree22 = theta22/DRG

    degree32 = theta32/DRG

    else

    'THERE HAVE NO SOLUTIONS, BECAUSE COSINE THETA 2 NOT IN -1 TO 1'

    end

    '---------------------------------------------'

    '-----------PART 4-------------------------'

    '---------------------------------------------'

    clear

    DRG=pi/180;

    l1 = 4

    l2 = 3

    T0H = [0.866 0.5 0 -3.1245

    -0.5 0.866 0 9.1674

    0 0 1 0

    0 0 0 1]

    T3H = [1 0 0 2

    0 1 0 0

    0 0 1 0

    0 0 0 1]

    NRBA = [-1 0 0

    0 -1 0

    0 0 -1] ;

    PBORG = [2;0;0];

    Ptemp = NRBA*PBORG

    Ptemp2 = [Ptemp;1]

    R3HT = [1 0 0

    0 1 0

    0 0 1

    0 0 0 ];

    T3HT = [R3HT,Ptemp2]

    T03 = T0H*T3HT

    cphi = T03(1,1)

    sphi = T03(2,1)

    x = T03(1,4)

    y = T03(2,4)

    k = (x^2+y^2-l1^2-l2^2)/(2*l1*l2)

    l1 = 4

    l2 = 3

    if k>-1 && k<1

    '----------------solution--1------------'

    theta21 = atan2((1-k^2)^0.5,k)

    k11 = l1+l2*cos(theta21)

    k21 = l2*sin(theta21)

    theta11 = atan2(-(k21*x)+k11*y,k11*x+k21*y)

    theta31 = atan2(sphi,cphi)-theta11-theta21

    degree11 = theta11/DRG

    degree21 = theta21/DRG

    degree31 = theta31/DRG

    '----------------solution--2------------'

    theta22 = atan2(-((1-k^2)^0.5),k)

    k12 = l1+l2*cos(theta22)

    k22 = l2*sin(theta22)

    theta12 = atan2(-(k22*x)+k12*y,k12*x+k22*y)

    theta32 = atan2(sphi,cphi)-theta12-theta22

    degree12 = theta12/DRG

    degree22 = theta22/DRG

    degree32 = theta32/DRG

    else

    'THERE HAVE NO SOLUTIONS, BECAUSE COSINE THETA 2 NOT IN -1 TO 1'

    end

    '---------------------------------------------'

    '-----------PART 5-------------------------'

    '---------------------------------------------'

    '--------using---ikine------------------------'

    ' '

    '-----------example 1-------------------------'

    '---------------------------------------------'

    clear

    l1 = 4;

    l2 = 3;

    l3 = 2;

    DRG=pi/180;

    t1 = 0*DRG;

    t2 = 0*DRG;

    t3 = 0*DRG;

    LK1 = LINK([ 0 0 t1 0 0]);

    LK2 = LINK([ 0 l1 t2 0 0]);

    LK3 = LINK([ 0 l2 t3 0 0]);

    LKH = LINK([ 0 l3 0 0 0]);

    r0H = ROBOT({LK1,LK2,LK3,LKH})

    r0H.name = 'gripe'

    q0H=[0 t1 t2 t3]

    T0H=fkine(r0H,q0H)

    M = [1,1,1,1,0,0]

    Q = ikine(r0H,T0H,q0H,M)

    degree = Q/DRG

    '-----------example 2-------------------------'

    '---------------------------------------------'

    clear

    l1 = 4;

    l2 = 3;

    l3 = 2;

    DRG=pi/180;

    t1 = 10*DRG;

    t2 = 20*DRG;

    t3 = 30*DRG;

    LK1 = LINK([ 0 0 t1 0 0]);

    LK2 = LINK([ 0 l1 t2 0 0]);

    LK3 = LINK([ 0 l2 t3 0 0]);

    LKH = LINK([ 0 l3 0 0 0]);

    r0H = ROBOT({LK1,LK2,LK3,LKH})

    r0H.name = 'gripe'

    q0H=[0 t1 t2 t3]

    T0H=fkine(r0H,q0H)

    M = [1,1,1,1,0,0]

    Q = ikine(r0H,T0H,q0H,M)

    degree = Q/DRG

    '-----------example 3-------------------------'

    '---------------------------------------------'

    clear

    l1 = 4;

    l2 = 3;

    l3 = 2;

    DRG=pi/180;

    t1 = 90*DRG;

    t2 = 90*DRG;

    t3 = 90*DRG;

    LK1 = LINK([ 0 0 t1 0 0]);

    LK2 = LINK([ 0 l1 t2 0 0]);

    LK3 = LINK([ 0 l2 t3 0 0]);

    LKH = LINK([ 0 l3 0 0 0]);

    r0H = ROBOT({LK1,LK2,LK3,LKH})

    r0H.name = 'gripe'

    q0H=[0 t1 t2 t3]

    T0H=fkine(r0H,q0H)

    M = [1,1,1,1,0,0]

    Q = ikine(r0H,T0H,q0H,M)

    degree = Q/DRG

    展开全文
  • MATLAB 机器人逆解 ikine

    万次阅读 2015-11-28 11:41:21
    到了机器人的第四章便是求逆解 书里给出了很多种方法 哎 实在是蛋疼 好多看的云里雾里的 嘛 出于先完成课程作业的目的 基本只用代数解和几何解的方法就可以了 这里我用代数解 以下是作业题 嘛 就是...

    到了机器人的第四章便是求逆解


    书里给出了很多种方法 哎 实在是蛋疼 好多看的云里雾里的


    嘛 出于先完成课程作业的目的 基本只用代数解和几何解的方法就可以了 这里我用代数解


    以下是作业题 嘛 就是自己设计program去解这四个T矩阵



    图好大。。。嘛 懒得修了。。。


    然后 这里我用的是代数解的方法 以下是书里的定义






    其实这里一大堆啰嗦的话 主要是一些公式的推导


    真正有用的 我们只看结果 总结下来其实就是这样的 请无视我丑丑的字体



    嘛 然后继续按上边来编写程序就好了


    这里有个问题其实 就是别忘了判断theta2的值 因为是有范围的 -1到1 包含-1和1

    因为题里很贱的最后一个是无解的 就是因为超出了这个范围


    另外一个蛋疼的问题是如何使用ikine这个函数

    不得不吐槽下 机器人这个工具箱太tm难用了

    不但版本多 而且各个版本的函数都不一样

    让你连查都没法查 而且ikine这个函数简直是反社会啊

    它需要四个值

    ikine(robot,t,q,m)

    m为小于六个自由度时候用来屏蔽的 就是比如5自由度 里边就是1,1,1,1,1,0

    t就是要反解的T矩阵

    但是这里robot和q好蛋疼啊

    robot要用link来创造 但是本身link是用dh表弄的

    dh表弄link就要确切的角度 tm老子角度都知道了还逆解个屁啊

    然后q更是了 q本身就是两个臂之间的角度 具体的看我之前的一篇

    也就是说ikine这个函数是逆解的函数 但是它需要它逆解完了的角度作为参数。。。

    坑爹啊 这个函数除了能证明正求的没问题之外还有毛用啊

    而且ikine这个还只能求单解 没法求多解啊 就是个坑啊 哎 活着真难

    好了 废话少说 上程序

    clear
    %  
    %DEFINE  
    %  
    '---------------------------------------------' 
    '-----------PART 1-------------------------' 
    '---------------------------------------------'   
    clear  
    DRG=pi/180;  
    l1 = 4
    l2 = 3
    
    
    T0H =    [1      0      0   9     
              0      1      0   0  
              0      0      1   0  
              0      0      0   1]  
    
    T3H =    [1      0      0   2     
              0      1      0   0  
              0      0      1   0  
              0      0      0   1]  
    
    NRBA =   [-1      0      0     
              0      -1      0    
              0       0      -1] ;
    
    PBORG = [2;0;0];		  
    
    Ptemp = NRBA*PBORG;
    
    Ptemp2 = [Ptemp;1];
                
    R3HT = 	 [1      0      0  
              0      1      0   
              0      0      1   
              0      0      0 ];  
    		  
    T3HT = [R3HT,Ptemp2];
       
    T03 = T0H*T3HT
               
    cphi = T03(1,1);
    sphi = T03(2,1);
    x = T03(1,4);
    y = T03(2,4);
    
    
    k = (x^2+y^2-l1^2-l2^2)/(2*l1*l2);
    
    if k>=-1 && k<=1
    
    '----------------solution--1------------'
    theta21 = atan2((1-k^2)^0.5,k);
    k11 = l1+l2*cos(theta21);
    k21 = l2*sin(theta21);
    theta11 = atan2(-(k21*x)+k11*y,k11*x+k21*y);
    theta31 = atan2(sphi,cphi)-theta11-theta21;
    
    degree11 = theta11/DRG
    degree21 = theta21/DRG
    degree31 = theta31/DRG
    
    
    '----------------solution--2------------'
    theta22 = atan2(-((1-k^2)^0.5),k);
    k12 = l1+l2*cos(theta22);
    k22 = l2*sin(theta22);
    theta12 = atan2(-(k22*x)+k12*y,k12*x+k22*y);
    theta32 = atan2(sphi,cphi)-theta12-theta22;
    
    degree12 = theta12/DRG
    degree22 = theta22/DRG
    degree32 = theta32/DRG
    
    
    else
    
    'THERE HAVE NO SOLUTIONS, BECAUSE COSINE THETA 2 NOT IN -1 TO 1'
    
    end
    '---------------------------------------------' 
    '-----------PART 2-------------------------' 
    '---------------------------------------------'   
    clear  
    DRG=pi/180;  
    l1 = 4
    l2 = 3
    
    T0H =    [0.5    -0.866   0   7.5373     
              0.866  0.5      0   3.9266  
              0      0        1   0  
              0      0        0   1]  
    
    T3H =    [1      0      0   2     
              0      1      0   0  
              0      0      1   0  
              0      0      0   1]  
    
    NRBA =   [-1      0      0     
              0      -1      0    
              0       0      -1] ;
    
    PBORG = [2;0;0];		  
    
    Ptemp = NRBA*PBORG;
    
    Ptemp2 = [Ptemp;1];
                
    R3HT = 	 [1      0      0  
              0      1      0   
              0      0      1   
              0      0      0 ];  
    		  
    T3HT = [R3HT,Ptemp2];
       
    T03 = T0H*T3HT
               
    cphi = T03(1,1);
    sphi = T03(2,1);
    x = T03(1,4);
    y = T03(2,4);
    k = (x^2+y^2-l1^2-l2^2)/(2*l1*l2);
    l1 = 4
    l2 = 3
    
    if k>=-1 && k<=1
    
    '----------------solution--1------------'
    theta21 = atan2((1-k^2)^0.5,k);
    k11 = l1+l2*cos(theta21);
    k21 = l2*sin(theta21);
    theta11 = atan2(-(k21*x)+k11*y,k11*x+k21*y);
    theta31 = atan2(sphi,cphi)-theta11-theta21;
    
    degree11 = theta11/DRG
    degree21 = theta21/DRG
    degree31 = theta31/DRG
    
    
    '----------------solution--2------------'
    theta22 = atan2(-((1-k^2)^0.5),k);
    k12 = l1+l2*cos(theta22);
    k22 = l2*sin(theta22);
    theta12 = atan2(-(k22*x)+k12*y,k12*x+k22*y);
    theta32 = atan2(sphi,cphi)-theta12-theta22;
    
    degree12 = theta12/DRG
    degree22 = theta22/DRG
    degree32 = theta32/DRG
    
    
    else
    
    'THERE HAVE NO SOLUTIONS, BECAUSE COSINE THETA 2 NOT IN -1 TO 1'
    
    end
    '---------------------------------------------' 
    '-----------PART 3-------------------------' 
    '---------------------------------------------'
    clear  
    DRG=pi/180;  
    l1 = 4
    l2 = 3     
    T0H =    [0      1        0   -3     
              -1     0        0   2  
              0      0        1   0  
              0      0        0   1]  
    
    T3H =    [1      0      0   2     
              0      1      0   0  
              0      0      1   0  
              0      0      0   1]  
    
    NRBA =   [-1      0      0     
              0      -1      0    
              0       0      -1] ;
    
    PBORG = [2;0;0];		  
    
    Ptemp = NRBA*PBORG;
    
    Ptemp2 = [Ptemp;1];
                
    R3HT = 	 [1      0      0  
              0      1      0   
              0      0      1   
              0      0      0 ];  
    		  
    T3HT = [R3HT,Ptemp2];
       
    T03 = T0H*T3HT
               
    cphi = T03(1,1);
    sphi = T03(2,1);
    x = T03(1,4);
    y = T03(2,4);
    k = (x^2+y^2-l1^2-l2^2)/(2*l1*l2);
    l1 = 4
    l2 = 3
    
    if k>-1 && k<1
    
    '----------------solution--1------------'
    theta21 = atan2((1-k^2)^0.5,k);
    k11 = l1+l2*cos(theta21);
    k21 = l2*sin(theta21);
    theta11 = atan2(-(k21*x)+k11*y,k11*x+k21*y);
    theta31 = atan2(sphi,cphi)-theta11-theta21;
    
    degree11 = theta11/DRG
    degree21 = theta21/DRG
    degree31 = theta31/DRG
    
    
    '----------------solution--2------------'
    theta22 = atan2(-((1-k^2)^0.5),k);
    k12 = l1+l2*cos(theta22);
    k22 = l2*sin(theta22);
    theta12 = atan2(-(k22*x)+k12*y,k12*x+k22*y);
    theta32 = atan2(sphi,cphi)-theta12-theta22;
    
    degree12 = theta12/DRG
    degree22 = theta22/DRG
    degree32 = theta32/DRG
    
    
    else
    
    'THERE HAVE NO SOLUTIONS, BECAUSE COSINE THETA 2 NOT IN -1 TO 1'
    
    end
    '---------------------------------------------' 
    '-----------PART 4-------------------------' 
    '---------------------------------------------' 
    clear  
    DRG=pi/180;  
    l1 = 4
    l2 = 3 
    T0H =    [0.866    0.5      0   -3.1245     
              -0.5     0.866    0   9.1674  
              0        0        1   0  
              0        0        0   1]  
    
    T3H =    [1      0      0   2     
              0      1      0   0  
              0      0      1   0  
              0      0      0   1]  
    
    NRBA =   [-1      0      0     
              0      -1      0    
              0       0      -1] ;
    
    PBORG = [2;0;0];		  
    
    Ptemp = NRBA*PBORG
    
    Ptemp2 = [Ptemp;1]
                
    R3HT = 	 [1      0      0  
              0      1      0   
              0      0      1   
              0      0      0 ];  
    		  
    T3HT = [R3HT,Ptemp2]
       
    T03 = T0H*T3HT
               
    cphi = T03(1,1)
    sphi = T03(2,1)
    x = T03(1,4)
    y = T03(2,4)
    k = (x^2+y^2-l1^2-l2^2)/(2*l1*l2)
    l1 = 4
    l2 = 3
    
    if k>-1 && k<1
    
    '----------------solution--1------------'
    theta21 = atan2((1-k^2)^0.5,k)
    k11 = l1+l2*cos(theta21)
    k21 = l2*sin(theta21)
    theta11 = atan2(-(k21*x)+k11*y,k11*x+k21*y)
    theta31 = atan2(sphi,cphi)-theta11-theta21
    
    degree11 = theta11/DRG
    degree21 = theta21/DRG
    degree31 = theta31/DRG
    
    
    '----------------solution--2------------'
    theta22 = atan2(-((1-k^2)^0.5),k)
    k12 = l1+l2*cos(theta22)
    k22 = l2*sin(theta22)
    theta12 = atan2(-(k22*x)+k12*y,k12*x+k22*y)
    theta32 = atan2(sphi,cphi)-theta12-theta22
    
    degree12 = theta12/DRG
    degree22 = theta22/DRG
    degree32 = theta32/DRG
    
    else
    
    'THERE HAVE NO SOLUTIONS, BECAUSE COSINE THETA 2 NOT IN -1 TO 1'
    
    end
    
    '---------------------------------------------' 
    '-----------PART 5-------------------------' 
    '---------------------------------------------'   
    '--------using---ikine------------------------'
    ' ' 
    '-----------example 1-------------------------' 
    '---------------------------------------------'   
    clear
    l1 = 4;
    l2 = 3;
    l3 = 2;
    DRG=pi/180;
    t1 = 0*DRG;
    t2 = 0*DRG;
    t3 = 0*DRG;
    LK1 = LINK([ 0 0 t1  0 0]);
    LK2 = LINK([ 0 l1 t2 0 0]);
    LK3 = LINK([ 0 l2 t3 0 0]);
    LKH = LINK([ 0 l3 0  0 0]);
    r0H = ROBOT({LK1,LK2,LK3,LKH})
    r0H.name = 'gripe'
    q0H=[0 t1 t2 t3]
    T0H=fkine(r0H,q0H)
    M = [1,1,1,1,0,0]
    Q = ikine(r0H,T0H,q0H,M)
    degree = Q/DRG
    '-----------example 2-------------------------' 
    '---------------------------------------------'   
    clear
    l1 = 4;
    l2 = 3;
    l3 = 2;
    DRG=pi/180;
    t1 = 10*DRG;
    t2 = 20*DRG;
    t3 = 30*DRG;
    LK1 = LINK([ 0 0 t1  0 0]);
    LK2 = LINK([ 0 l1 t2 0 0]);
    LK3 = LINK([ 0 l2 t3 0 0]);
    LKH = LINK([ 0 l3 0  0 0]);
    r0H = ROBOT({LK1,LK2,LK3,LKH})
    r0H.name = 'gripe'
    q0H=[0 t1 t2 t3]
    T0H=fkine(r0H,q0H)
    M = [1,1,1,1,0,0]
    Q = ikine(r0H,T0H,q0H,M)
    degree = Q/DRG
    '-----------example 3-------------------------' 
    '---------------------------------------------'   
    clear
    l1 = 4;
    l2 = 3;
    l3 = 2;
    DRG=pi/180;
    t1 = 90*DRG;
    t2 = 90*DRG;
    t3 = 90*DRG;
    LK1 = LINK([ 0 0 t1  0 0]);
    LK2 = LINK([ 0 l1 t2 0 0]);
    LK3 = LINK([ 0 l2 t3 0 0]);
    LKH = LINK([ 0 l3 0  0 0]);
    r0H = ROBOT({LK1,LK2,LK3,LKH})
    r0H.name = 'gripe'
    q0H=[0 t1 t2 t3]
    T0H=fkine(r0H,q0H)
    M = [1,1,1,1,0,0]
    Q = ikine(r0H,T0H,q0H,M)
    degree = Q/DRG


    展开全文
  • MATLAB机器人逆解

    2020-12-13 23:14:33
    MATLAB机器人求正逆解 手把手教你MATLAB Robotics Toolbox工具箱③ Matlab RoboticToolBox(一)Link参数、三自由度/四自由度逆运动学 https://blog.csdn.net/qq_34917736/article/details/89048930

    MATLAB机器人求正逆解

    手把手教你MATLAB Robotics Toolbox工具箱③

    Matlab RoboticToolBox(一)Link参数、三自由度/四自由度逆运动学
    https://blog.csdn.net/qq_34917736/article/details/89048930

    展开全文
  • 基于Matlab三维三轴机器人求逆解(实现简单的定点测试) (机器人建模与仿真中的机器人逆运动和正运动) 其它关于基于Matlab机器人建模与仿真资料合集请往CSDN博客 “基于Matlab的机器人学建模学习资料大整理”...
  • 用果蝇优化算法求四转动自由度平面机器人的运动逆解,各关节角度范围为[-pi,pi],在matlab程序中应该如何限制?不限制的话算出来的结果会超出pi
  • 这个是delta机器人的正逆解算法,自己编的,其中sp=sqrt(3)up。附带
  • MATLAB中的Robotics Toolbox,也就是我们常见的机器人工具箱是学者Peter Corke(很幽默的一老头)为了方便他的教学而开发的一款自定义的机器人工具箱,里面的调用函数都是他及他的团队编写。 参考书:《Robotics, ...

    首先,申明下:1.这是原创,请不要转载;2.本人从事机器人技术的研究已有7年,基本上的大风大浪都见过;3.本文内容不一定面面俱到,不喜勿喷。

    MATLAB中的Robotics Toolbox,也就是我们常见的机器人工具箱是学者Peter Corke(很幽默的一老头)为了方便他的教学而开发的一款自定义的机器人工具箱,里面的调用函数都是他及他的团队编写。

    参考书:《Robotics, Vision and Control: Fundamental Algorithms In MATLAB》第二版

    现在抛出问题:用过该工具箱的小伙伴按照参考书上的例子求解PUMA 560(6-DOF机器人)的正逆解,觉得没有任何问题。用fkine()正向运动学函数求解自定义的机械臂也没有问题。但是,用ikine()求逆解时,却有问题了,要么无法求解,要么求解出来的关节角不对,这是为什么呢?人当时用到这个工具箱时,也遇到过这个问题,请教了不少大牛。大牛的回答总结如下:1.该工具箱只能解决一类机器人(关节角、串联、构型等);2.可以根据matlab函数,深入研究ikine()逆解函数;3.如果该工具箱能解决任意自由度的串联型机器人的运动学求解问题,那么学习机器人技术就很简单。实际上,这是不可能的。

    机器人逆解到底应该怎么解?

    不同构型的机械臂解法不同。本人举个例子,一个6-DOF转动型串联机械臂,它的构型满足:1.三个连续的转动关节的轴相交于同一点;2.三个连续的转动关节的轴平行。满足上述条件的机器人,前3个关节与后3三个关节可以看作是解耦的,即前3个关节控制机器人的位置,后3个关节控制机器人的姿态。一旦末端执行器的位置和姿态由PeRe=[ne se ae]制定,就可以找到腕关节的位置:

    1)Pw=Pe-d6*ae

    2)求解逆运动学得到(q1,q2,q3)

    3)计算R03(q1,q2,q3)

    4)计算R36(q4,q5,q6)=R03'R

    5)求解逆运动学得到方向(q4,q5,q6)

    这样,便完成了机器人逆解。

    我现在用的方法是迭代计算,即以能量法、关节变化最小为目标函数,通过优化算法来找出最合适的关节角组。目前,这种方法已经解决过很多类型的串联机器人,没有出现过什么问题。有兴趣的小伙伴,自己去找文献看看,千万不要留言问我(由于特殊原因),请见谅。

     

    展开全文
  • 基于Matlab的UR5六轴机器人数值解法求逆解逆解定点及画圆)源码 (机器人建模与仿真中的机器人逆运动) 其它关于基于Matlab机器人建模与仿真资料合集请往CSDN博客 “基于Matlab的机器人学建模学习资料大整理”...
  • 基于Matlab的UR5六轴机器人解析解法求逆解逆解定点及画圆)源码 (机器人建模与仿真中的机器人逆运动) 其它关于基于Matlab机器人建模与仿真资料合集请往CSDN博客 “基于Matlab的机器人学建模学习资料大整理”...
  • Delta机器人逆解

    2018-11-16 16:12:04
    并联机器人,Delta机器人逆解MATLAB程序,验证可行
  • 机器人关节逆解

    2014-07-21 10:17:14
    利用matlab m文件,编制的机器人关节坐标逆解程序
  • 基于Matlab的UR5六轴机器人解析解法求逆解逆解定点及画圆)源码 (机器人建模与仿真中的机器人逆运动) 其它关于基于Matlab机器人建模与仿真资料合集请往CSDN博客 “基于Matlab的机器人学建模学习资料大整理”...
  • 包含了UR机器人的运动学建模与运动学正逆解的求解过程(解析法),通过实际的机器人参数验证该求解方法的正确性,分析了机器人的奇异位置,并编制好matlab程序便与仿真。
  • 机器人逆运动学就是即在已知末端的工具坐标系相对于基坐标系的位姿。计算所有能够到达指定位姿的关节角。求解可能出现: 不存在相应 存在唯一 存在多 我们把机械臂的全部求解方法分为两大类:...
  • robotics toolbox 中ikine每次总会出现缺少一个具体矩阵,有例子可以教我一下吗?谢谢
  • 六轴机器人matlab写运动学逆解函数(改进DH模型)

    万次阅读 多人点赞 2018-06-23 17:04:53
    本文采用的模型为之前博客“matlab机器人工具箱一般六轴的DH模型和改进DH模型建立与区别”里面的改进DH模型,参数不再重复给出。 基系与工具坐标系关系为: bT0⋅(0T1⋅1T2⋅2T3⋅3T4⋅4T5⋅5T6)⋅6Te=bTebT0⋅...
  • matlab机器人工具箱学习

    千次阅读 2016-08-30 14:33:06
    选了机器人的课,作业需要用matlab机器人工具箱robotic toolbox。作业要求是搭建一个机械臂,然后在工作空间某个平面内写一个字,涉及到机器人的轨迹规划,求逆解。步骤: 1. 搭建四轴scara机器人: DH模型 ...
  • %% Compiled by Ezekiel according to robot modeling and control %% 2020/9/25 clear;...%% DH矩阵,DH建模法建立六轴机器人模型 %% th d a alpha L(1) = Link([ 0, 1, 0, pi/2 ], 'qlim','[-pi/4 p
  • robotics toolbox中的ikine只能得到一个逆解,而6自由度机器人一般会存在10几个逆解,我需要做能耗最优轨迹规划,故需要得到所有逆解来选取其中能耗最低得一个。
  • %随机产生位置点,求该点位置逆解,再求该点对应的角度矩阵 随机点往往在实际工作空间内,但不能求得逆解;而且示教机器人与实际工作空间不符 for i = 1:10 pop(i,:) = 1.3+rand(1,4); x0=pop(i,...
  • 运动学求解 (1)不存在相应的,包括:期望位姿离基坐标系太远,机械臂不够长,末端执行器无法达到该位姿;当机械臂的自由度少于6个自由度时,它将不能达到三维空间的所有位姿(使用ikine()函数会出现错误) ...
  • scara机器人运动学正逆解

    千次阅读 多人点赞 2020-03-14 14:59:02
    文章目录一、scara机器人运动学正解二、scara机器人运动学逆解1、正装scara机器人运动学逆解2、吊装scara机器人运动学逆解三、MATLAB代码 一、scara机器人运动学正解   末端BBB的xxx坐标为向量OA\bf{OA}OA与向量...
  • MATLAB机器人工具箱(记一次轨迹生成2)

    千次阅读 热门讨论 2019-06-29 16:26:54
    这篇博文是为验证Baxter逆解时的一个记录,同MATLAB机器人工具箱使用(记一次轨迹生成1)中一样,规划好轨迹后,机器人在运动时留下末端运动的轨迹。俩者不同点就进行末端笛卡尔轨迹规划时采用的方式不一样,即生成...
  • Delta Robot Kinematics 并联机器人 运动学 正解 逆解 本人自己总结 matlab亲测 正反解正确
  • 一、rtdemo机器人工具箱演示 2 二、transfermations坐标转换 2 ...五、Inverse Kinematics运动学逆解 23 六、 Jacobians雅可比---矩阵与速度 32 七、Inverse Dynamics逆向动力学 45 八、Forward Dynamics正向动力学 52

空空如也

空空如也

1 2 3 4 5
收藏数 98
精华内容 39
关键字:

matlab机器人逆解

matlab 订阅