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

    展开全文
  • 基于牛顿_拉夫逊迭代法的6自由度机器人逆解算法,采用了雅克比迭代的算法,有详细的理论推导,还有代码参考
  • 四足机器人逆解

    2020-05-29 01:47:12
    根据角度计算坐标为运动鞋正解,而逆解便是反过来根据坐标求角度便是运动学逆解 2.1正解 根据弧度求解坐标方程 2.2逆解 根据坐标和已知边长度求解角度 (注:这里面的θ是以垂直边即上图的那个垂直边开始算而不是...

    1.数学知识

    弧度制:用弧长与半径之比度量圆心角角度的方式,用rad表示。

    弧度制计算:弧长与半径相等所对应的角度为1弧度制

    在这里插入图片描述

    1.1使用到的函数

    1.1.1sin()正弦函数

    根据已知角的弧度制求正弦值

    1.1.2asin()反正弦函数

    根据一个正弦值求弧度制

    2.运动学正逆解感念

    根据角度计算坐标为运动鞋正解,而逆解便是反过来根据坐标求角度便是运动学逆解

    在这里插入图片描述

    2.1正解

    根据弧度求解坐标方程

    在这里插入图片描述

    2.2逆解

    根据坐标和已知边长度求解角度

    在这里插入图片描述
    (注:这里面的θ是以垂直边即上图的那个垂直边开始算而不是中线,所以θ1为两个相减,θ2为两个相加)
    两个角度值分别为
    在这里插入图片描述

    变化角度为现在θ值减去原先θ值

    3.代码实现运动学逆解

    求解

    在这里插入图片描述

    from math import *
    l1 = 35
    l2 = 80
    x = 30
    y = 100
    l = sqrt(x**2+y**2)
    psail = asin(x/l)
    fail = acos((l*l+l1*l1-l2*l2)/(2*l*l1))
    sita1 = 180*(fail-psail)/pi
    sita2 = 180*(fail+psail)/pi
    print(f"sita1:{sita1}\n,sita2:{sita2}")
    

    此文为本人在南昌理工学院人工智能学院特种机器人研发中心实验室workshop项目实践平台学习所创,如有错误请多多指教

    联系QQ1135999353

    展开全文
  • 机器人逆运动学是机器人作业运动规划和轨迹控制的基础,求解逆运动学的过程也比求解正运动学的过程复杂得多。 对于六轴关节型机器人来讲,主要有两种构型,一种是传统的工业机器人构型(腕关节456轴线交于一点),...

    d0d8999b253c3823627fe0f46d3b6fed.png

    机器人的逆运动学是正运动学的逆过程,即已知机器人末端执行器在参考坐标系中的位置和姿态,求解机器人各关节运动变量的过程。机器人逆运动学是机器人作业运动规划和轨迹控制的基础,求解逆运动学的过程也比求解正运动学的过程复杂得多。

    对于六轴关节型机器人来讲,主要有两种构型,一种是传统的工业机器人构型(腕关节456轴线交于一点),各家机器人厂商根据市场的不同应用需求(工作空间等),某些杆件之间有偏置,比如

    b518cb30781c5b0c3f2c710520ab2591.png
    传统工业机器人构型

    另外一种就是UR机器人腕部关节,45关节轴线垂直和56关节轴线垂直。

    62292b2bfd196f095d91f5840eae74f5.png
    UR协作机器人构型

    不论是哪一种构型,设计的DH参数

    均为0或者±90°,即相邻两个关节垂直或者平行,这样不仅可以大大简化DH参数矩阵,降低计算消耗;从制造工艺、零件加工和装配精度上来讲,也具有明显的优势。至于为什么是这种1关节竖直(假设机器人正装,1关节轴线与重力方向一致),1、2关节垂直,2、3关节平行的构型,主要是从两方面考虑,一是
    避免机器人出现结构性奇异(与机器人的姿态无关,在机器人的整个运动过程中始终存在奇异),二是考虑机器人的运动空间,不考虑机器人的实际外形,相同的杆件长度参数,上述构型的运动空间比其他构型的运动空间更有优势。

    dd2cbc768084bb13711743f036f20d07.png
    机器人臂部三关节不同构型标准DH建模

    2741e8efe4f4c8881cbb7cf4b361cd15.png
    前平行轴型臂部构型及三维运动空间图(单位:m)

    54662999048f7dee4c894f27682bfc98.png
    前平行轴型臂部运动空间投影图(单位:m)

    ccc25f1ff53c50367d404a0b8dff845c.png
    后平行轴型臂部构型及三维运动空间图(单位:m)

    b6018a7196d62d89bd44446390e5d209.png
    后平行轴型臂部运动空间投影图(单位:m)

    13fe446590a2335494d82707877f36fa.png
    正交I型臂部构型及三维运动空间图(单位:m)

    000f2ce007d9f5a0deb233f752303c12.png
    正交I型臂部构型运动空间投影图(单位:m)

    24bab36bdd1f7d25decfa4333d6bbb57.png
    正交II型臂部构型及三维运动空间图

    417beecdfdf4cae03e9f5dfa81b4cf92.png
    正交I型臂部构型运动空间投影图(单位:m)

    两种主流构型的解法,都能找到相关文献,基本都是采用图解法和代数法相结合的方法。实际在进行解析式求解时,手推可能容易出现小错误,可以借助MATLAB等工具箱进行辅助。

    syms d1 d4 d6;
    syms a2;
    syms t1 t2 t3 t4 t5 t6;
    syms nx ny nz ox oy oz ax ay az;
    pha = sym(pi/2);
     
    R6 = [nx ox ax; ny oy ay; nz oz az];
    
    %% (a,alpha,d,teta)
    T1 = mdh(0,     0, d1,   t1);
    T2 = mdh(0,   pha,  0,(t2+pha));
    T3 = mdh(a2,    0,  0,(t3-pha));
    T4 = mdh(0,  -pha, d4,   t4);
    T5 = mdh(0,   pha,  0,   t5);
    T6 = mdh(0,  -pha, d6,   t6);
    T6 = mdh(0,  -pha, 0,   t6);
    T60 = simplify(T1 * T2 * T3 * T4 * T5 * T6);
    T61 = simplify(simplify(inv(T1)) * T60);
    R60 = T60(1:3,1:3);
    T30 = simplify(T1 * T2 * T3);
    R30 = T30(1:3,1:3);
    T63 = simplify(T4 * T5 * T6);
    R63 = T63(1:3,1:3);
    simplify(inv(R30) * R6);

    机器人逆解比较棘手的问题主要是选解和奇异,实际上正是机器人奇异判据将逆解空间分成了多个部分,机器人只能在相同的解空间内运动,不能从一个解空间突然跳到另外一个解空间。经常是选取相邻周期,行程最短的那组解。所以在求解逆解的函数中需要输入flag,这个flag代表机器人当前的运动解空间,如果逆解的flag与输入的flag不一致,则报出奇异错误。除此以外,机器人关节可能需要±360,甚至更大的范围,求解逆解的函数还需要一个turns去记录关节运动圈数,当然也可以通过与上一个周期的关节角度比较进行求解。

    展开全文
  • 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


    展开全文
  • 采用指数积方法建立运动学模型,并采用几何、代数方法和Paden-Kahan 子问题进行运动学求解。几何方法获得前3 关节运动轨迹的交点,将求解转换成已知的Paden-Kahan 子问题,使几何意义更加...
  • 用果蝇优化算法求四转动自由度平面机器人的运动逆解,各关节角度范围为[-pi,pi],在matlab程序中应该如何限制?不限制的话算出来的结果会超出pi
  • MATLAB中的Robotics Toolbox,也就是我们常见的机器人工具箱是学者Peter Corke(很幽默的一老头)为了方便他的教学而开发的一款自定义的机器人工具箱,里面的调用函数都是他及他的团队编写。 参考书:《Robotics, ...
  • 机器人正解和逆解

    2020-09-15 15:45:41
    正解FK 给定机器人各关节的角度,计算出机器人末端的空间位置 逆解IK 已知机器人末端的位置和姿态,计算机器人各关节的角度值 挖个坑待完善
  • 机器人正解逆解-附记

    千次阅读 2019-03-21 17:22:33
    机器人正解逆解的3篇文章已经有一年多时间 不知不觉浏览已有一万 在评论里看到一些问题 在此尝试解答 建议还是先看看相关的书中的计算方法 不知道计算方法而通过程序去理解如何计算 是比较难的 代码里面的注释...
  • Delta机器人逆解

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

    2014-07-21 10:17:14
    利用matlab m文件,编制的机器人关节坐标逆解程序
  • 六关节机器人逆解

    2018-12-13 22:13:10
    正解 : 给定机器人各关节的角度,计算出机器人末端的空间位置 逆解 : 已知机器人末端的位置和姿态,计算机器人各关节的角度值 模型: ABB1600
  • 主要讲述了560机器人的正解和逆解的分析情况,
  • 基于MFC的六轴机器人逆解程序,六自由度机器人机械手运动学逆问题反解程序。包含全部源码,可以进行修改,通过更改D-H参数即可实现六轴机器人逆解IK。
  • MATLAB机器人逆解

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

    千次阅读 2020-05-22 11:11:15
    斯坦福四足机器人运动学逆解 软件设计思路: ...作业1:求逆解,L1=35,L2=80,x=30,y=100,在此条件下,求四足机器人逆解,计算θ1,θ2是多少。 L=√ (x²+y²)=104.4 ψ=arcsin(x/L)=arcsin(30/104.4)=16.858
  • 这个是delta机器人的正逆解算法,自己编的,其中sp=sqrt(3)up。附带
  • 基于改进DH参数的机器人正解和逆解程序,逆解采用解析解形式,输出8组关节角度解
  • 记录一下:最近花了点时间,对市场最为复杂的6轴机器人进行了改进DH参数建立、正解推算、逆解推算、逆解选解等方面操作,实际上机验证通过。最后撰写了推算过程文档。
  • 基于Matlab三维三轴机器人求逆解(实现简单的定点测试) (机器人建模与仿真中的机器人逆运动和正运动) 其它关于基于Matlab机器人建模与仿真资料合集请往CSDN博客 “基于Matlab的机器人学建模学习资料大整理”...
  • qt开发的,包括cpp和h文件,机器人参数和正逆解算法,非常全面,有注解
  • 机器人运动学逆解

    千次阅读 2019-11-24 10:44:10
    机器人运动学逆解 即根据工具坐标系相对于基坐标系的目标位姿,求解机器人各关节角。逆运动学在机器人学中占有非常重要的地位,是机器人轨迹规划和运动控制的基础,直接影响着控制的快速性与准确性。一般机器人运动...
  • puma560机器人的正逆解求解以及雅克比矩阵和动力学
  • 文章目录一、推导步骤二、实例(以SCARA机器人逆解为例) 一、推导步骤   今天,讲讲机器人运动学逆解中的一大“法宝”,最常用的三角方程: k1sin(θ)+k2cos(θ)=k3(1) k_1sin(\theta)+k_2cos(\theta)=k_3 \tag{1} ...
  • 平面3连杆机器人逆解

    千次阅读 2019-01-21 23:43:54
    即,给定平面坐标(x,y),对应两组(theta1,theta2),通过选接就可以确定唯一。实际上,由于作业空间等的需求,有时需要平面3连杆机器人来完成平面的定位,即给定平面坐标(x,y),需要求出唯一对应的(theta1、...
  • 非常好的C++语言机器人逆解的算法库
  • scara机器人运动学正逆解

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

    万次阅读 多人点赞 2017-12-14 21:27:35
    给定机器人各关节的角度,计算出机器人末端的空间位置逆解 已知机器人末端的位置和姿态,计算机器人各关节的角度值常见的工业机器人 正解与逆解的求解需要相应的机器人运动方程,其中关键的就是DH参数表 DH参数...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 280
精华内容 112
关键字:

机器人逆解