最近需要解算六轴机器人的解析解,算法已完成,这里记录一下.
一、机器人模型
PUMA560:
全称:Programmable Universal Manipulation Arm
1978年由Unimation 机器人公司的Victor Scheinman研发.
本文使用的模型:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200604181056973.bmp?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhbm1pbmdqdW52NQ==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020060418110488.bmp?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhbm1pbmdqdW52NQ==,size_16,color_FFFFFF,t_70)
D-H矩阵:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200604181109920.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hhbm1pbmdqdW52NQ==,size_16,color_FFFFFF,t_70)
二、机器人正运动学
机器人正运动学就是给定机器人各关节位置,计算机器人连杆上任意点的位姿.
位姿矩阵
机器人位置和姿态可以由一个方阵描述:
P=⎩⎪⎪⎨⎪⎪⎧nxnynz0oxoyoz0axayaz0pxpypz1⎭⎪⎪⎬⎪⎪⎫
其中,n,o,a为末端姿态,p为末端位置.
正运动学
T60=T10T21T32T43T54T65Tki为k关节坐标系在i关节坐标系下的描述.
对于确定的机器人结构,如上图中所示,每个关节在上一关节的描述是确定的,因此正运动学直接计算即可.
nxnynzoxoyozaxayazpxpypz式中:sis23=c1[c23(c4c5c6+s4s6)−s23s5c6]+s1(s4c5c6−c4s6)=s1[c23(c4c5c6+s4s6)−s23s5c6]−c1(s4c5c6−c4s6)=−s23c4c5s6−c23s5c6−s23s4s6=c1[c23(s4c6−c4c5s6)+s23s5s6]−s1(s4c5s6+c4c6)=s1[c23(s4c6−c4c5s6)+s23s5s6]+c1(s4c5s6+c4c6)=s23c4c5s6+c23s5s6−s23s4c6=c1(c23c4s5+s23c5)+s1s4s5=s1(c23c4s5+s23c5)−c1s4s5=−c4s5s23+c23c5=c1(a3c23+a2c2+a1−d4s23)=s1(a3c23+a2c2+a1−d4s23)=−d4c23−a3s23−a2s2+d1=sin(θi),ci=cos(θi),i=1,2,...,6=sin(θ2+θ3),c23=cos(θ2+θ3)
三、机器人逆运动学
求解关节一
θ1=atan2(py,px)−atan2(0,±px2+py2
);
求解关节三
k1=cos(θ1)px+sin(θ1)py−a1k2=−pz+d1k=2a2k12+k22−(a22+a32+d42)θ31,32=atan2(a3,d4)−atan2(k,±a32+d42−k2
)由上式解出的角度范围是[−π,23π],且周期为2π,因此,当θ>π/2时,取θ=θ−2π,否则,θ不变.
求解关节二
k1=(a1−cos(θ1)px−sin(θ1)py)(sin(θ1)py−a1+cos(θ1)px)−(d1−pz)2(d4−sin(θ3)a2)(sin(θ1)py−a1+cos(θ1)px)−(cos(θ3)a2+a3)(d1−pz)k2=(d1−pz)2−(sin(θ1)py−a1+cos(θ1)px)(a1−cos(θ1)px−sin(θ1)py)(d4−sin(θ3)a2)(d1−pz)−(cos(θ3)a2+a3)(a1−cos(θ1)px−sin(θ1)py)θ2=atan2(k1,k2)−θ3θ2的有效区间为(2−3π,2π],且周期为2π,因此,当θ>π/2时,取θ=θ−2π,当θ≤2−3π时,取θ=θ+2π.
求解关节四
k1=sin(θ1)ax−cos(θ1)ayk2=cos(θ1)cos(θ2+θ3)ax+sin(θ1)cos(θ2+θ3)ay−sin(θ2+θ3)az当sin(θ5)=0时,θ4=atan2(k1,k2)θ4的有效区间为(−π,π],因此,当θ4>0时,取θ42=θ4−π,否则,取θ42=θ4+π.
需要从两个解中筛选一个值,通过判断与上一插补值的绝对值大小,选取绝对值小的作为真实解.
求解关节五
k1=(sin(θ4)sin(θ1)+cos(θ1)cos(θ4)cos(θ2+θ3))ax+(cos(θ4)sin(θ1)cos(θ2+θ3))ay−sin(θ2+θ3)cos(θ4)azk2=−sin(θ2+θ3)cos(θ1)ax−sin(θ2+θ3)sin(θ1)ay−cos(θ2+θ3)azθ5=atan2(k1,−k2)
求解关节六
k1=(sin(θ4)sin(θ1)cos(θ5)−cos(θ1)sin(θ5)sin(θ2+θ3)+cos(θ1)cos(θ4)cos(θ2+θ3)cos(θ5))ox−(cos(θ1)sin(θ4)cos(θ5)+sin(θ1)sin(θ5)sin(θ2+θ3)−sin(θ1)cos(θ4)cos(θ5)cos(θ2+θ3))oy+(sin(θ2)sin(θ3)sin(θ5)−cos(θ2)cos(θ3)sin(θ5)−cos(θ4)cos(θ5)sin(θ2+θ3))ozk2=(cos(θ1)sin(θ4)cos(θ2+θ3)−cos(θ4)sin(θ1))ox+(cos(θ1)cos(θ4)+sin(θ1)sin(θ4)cos(θ2+θ3))oy−sin(θ2+θ3)sin(θ4)ozθ6=atan2(−k1,k2)θ6周期为2π,当θ6>0时,取θ62=θ6−2π,否则,取θ62=θ6+2π.
以上过程共解出8组解.