逆向运动学的封闭形式解的解析法

在这里向大家分享基于标准D-H参数法的求解逆向运动的过程,一些教材上有详细的推算过程,在这里直接推送一个计算公式。下篇博客分享一些选择角度的想法(一起讨论)。
首先解机械臂的逆向运动学有多种方法
一种是后三个关节(4,5,6)满足piper准则(后三个轴线交于一点)有封闭形式解。
这里有两种方法,①是解析法 ②是投影法。满足这个准则的机械臂有很多如puma560(经典),还有我的高仿机械臂(这里主要是指Z轴会重合在某一点)。
另外一种是不满足上面的准则的,但又都是转动矩阵,就是使用数值解法。
即是基于雅可比矩阵的迭代法。

后来我发现我设定的打横的关节的Z轴指向纸面外,与puma560的方向不一样,为了学习方便,我还是决定换回来(指向纸面内),就仿照着puma560的方向画了一个,除了α的数据,其他都没有变化。如图:
在这里插入图片描述
在这副图的基础上,使用标准D-H法的变换顺序,可以得到六个变换矩阵:`
以上便是全部变换矩阵
还有就是一些逆矩阵是需要的

T1=[c1   0       s1    0;     
        s1    0      -c1   0;     
        0       1      0    d1;     
        0       0      0      1;]%1-2a1为0,所以省略
T2=[c2  -s2   0    a2*c2;   
        s2    c2     0  a2*s2;       
         0       0       1    0;      
         0      0        0    1;] %2-3   
T3=[c3   0    s3   a3*c3;   
         s3    0     -c3  a3*s3;     
         0       1       0    0;     
          0      0      0      1;]%3-4
T4=[c4     0   -   s4   0;   
      s4      0       c4   0;     
       0       -1      0   d4;    
       0       0        0  1;]%4-5
T5=[c5   0    s5   0;     
       s5    0     -c5  0;      
        0      1       0    0;     
         0     0      0    1;]%5-6
T6=[c6  -s6       0    0;     
        s6    c6      0  0;        
         0      0       1   d6;     
         0      0       0   1;]%6-7`
这里不是代码,是逆矩阵的列举
inv(T1)=[ c1  0 -s1 0;
          s1  0  c1  0;
          0   -1  0   d1;
          0    0  0   1; ]
inv(T6)=[ c6 s6  0  0;
         -s6 c6  0  0;
           0  0  1  -d6;
           0  0  0   1;]
还有就是T=[nx ox ax px;
           ny  oy ay py;
           nz  oz az pz;
           o   o   o  1;]
           
          

求θ1

方法是inv(T1)(T6)inv(T)=T2*T3*T4*T5
[(c1*nx+s1*ny)*c6-(c1*ox+s1*oy)*s6      (c1*nx+s1*ny)*s6+(c1*ox+s1*oy)*c6       c1*ax+s1*ay      -d6*(c1*ax+s1*ay)+c1*px+s1*py ;
 -nz*c6+oz*s6                                 -nz*s6-oz*c6                       -az             d6*az-pz+d1                ;
 (-s1*nx+c1*ny)*c6-(s1*ox+c1*oy)s6     (-s1*nx+c1*ny)*s6+(-s1*ox+c1*oy)*c6       -s1*ax+ca*ay    d6(s1*ax-c1*ay)-s1*px+c1*py;
              0                                    0                               0                  1                       ]
 =======
 [  xxxxxxxxxxxxxxxxxxxxxx                    -c2*c3*c4+s2*s3*s4              xxxxxxxxx          a2*c2-d4*s23+a3*c23
    xxxxxxxxxxxxxxxxxxxxxx                   -s2*c3*s4-s3*c2*s4               xxxxxxxxxxxx        a2*s2+d4*c23*a3*s23
     xxxxxxxxxxxxxxxxx                       xxxxxxxxxxxxxxxxxx                  s4*s5                 0
      0                                             0                             0                    1                    ]
      
      

然后就是上面的等式的第三行第四列相等

d6(s1*ax-c1*ay)-s1*px+c1*py=0
就能得到这个式子求出
  θ1 = arctan((-d6*ay+py)/(-ax*d6+px)) 
  有两个值 一个正 一个负

θ3
令上面的等式的第一行第一列和第一行第三行相等 ;

k1=-d6*(c1*ax+s1*ay)+c1*px+s1*py=a2*c2-d4*s23+a3*c23
k2=d6*az-pz+d1=a2*s2+d4*c23*a3*s23
计算k1^2+K^2=[a2*c2-d4*s23+a3*c23]^2+[a2*s2+d4*c23*a3*s23]^2
    通过计算可以约去c2和s2, 方法是拆开c23和s23
      得到的结果
      k1=(-d6*(c1*ax+s1*ay))+c1*px+s1*py;
      k2=d6*az-pz+d1;
      K=a3*c3-d4*s3
      a2^2+a3^2+d4^2-2a2*d4*s3+2*a2*a3*c3=k1^2+k2^2
      K=(k1^2+k2^2-(a2^2+a3^2+d4^2))/2*a2;
      最后计算
      θ3:atan2(a3,d4)-atan2(K,+/-(sqrt(a3^2+d4^2-K^2)))%有正负

同理可以求θ2

{a2*s2+d4*c23*a3*s23}+a2*c2-d4*s23+a3*c23=k1+k2
经过计算可以的到 
                y=d4*(c3-s3)+a3*(c3+s3)+a2;
                x=d4*(s3-c3)+a3*(s3-c3)-a2;
                c2*y+s2*x=K1+k2
                同样可以得到
                θ2:atan2(k1+k2,-(sqrt(y^2+x^2-(k1+k2)^2)))-atan2(y,x)
                由角1和角2 决定,有四种可能。

求θ6
由上面的等式可以得到

在这里插入图片描述
求θ4

(-s1*nx+c1*ny)*s6+(-s1*ox+c1*oy)*c6 =-c4
也是利用等式相等的方法 
   θ4= acos((s1*nx-c1*ny)*s6+(s1*ox-c1*oy)*c6)
   这里在后面我觉得 角4绝对不能为0;

θ5

-s1*ax+c1*ay=s4s5
根据这个式子,我们可以求出 角5的大小:atan((-s1*ax+c1*ay)/s4)  这里说明 s4不能为0,及角四不能为0,难道这里是奇异点。(有待验证)

根据这些式子,可以在Matlab 中验证。
由于有多解,需要自己去判断,我想的就是 抄那个matlab 的函数的程序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值