求解PUMA560 六轴机械臂运动学

最近需要解算六轴机器人的解析解,算法已完成,这里记录一下.

一、机器人模型

PUMA560:

全称:Programmable Universal Manipulation Arm
1978年由Unimation 机器人公司的Victor Scheinman研发.

本文使用的模型:

在这里插入图片描述

在这里插入图片描述

D-H矩阵:

在这里插入图片描述

二、机器人正运动学

机器人正运动学就是给定机器人各关节位置,计算机器人连杆上任意点的位姿.

位姿矩阵

机器人位置和姿态可以由一个方阵描述:

P = { n x o x a x p x n y o y a y p y n z o z a z p z 0 0 0 1 } P\quad= \quad \left\{ \begin{matrix} n_x & o_x & a_x & p_x\\ n_y & o_y & a_y & p_y\\ n_z & o_z & a_z & p_z\\ 0 & 0 & 0 & 1 \end{matrix} \right\} P=nxnynz0oxoyoz0axayaz0pxpypz1

其中,n,o,a为末端姿态,p为末端位置.

 

正运动学

T 6 0 = T 1 0 T 2 1 T 3 2 T 4 3 T 5 4 T 6 5 T k i 为 k 关 节 坐 标 系 在 i 关 节 坐 标 系 下 的 描 述 . T^0_6=T^0_1T^1_2T^2_3T^3_4T^4_5T^5_6\\ \quad\\ T^i_k为k关节坐标系在i关节坐标系下的描述. T60=T10T21T32T43T54T65Tkiki.

对于确定的机器人结构,如上图中所示,每个关节在上一关节的描述是确定的,因此正运动学直接计算即可.

n x = c 1 [ c 23 ( c 4 c 5 c 6 + s 4 s 6 ) − s 23 s 5 c 6 ] + s 1 ( s 4 c 5 c 6 − c 4 s 6 ) n y = s 1 [ c 23 ( c 4 c 5 c 6 + s 4 s 6 ) − s 23 s 5 c 6 ] − c 1 ( s 4 c 5 c 6 − c 4 s 6 ) n z = − s 23 c 4 c 5 s 6 − c 23 s 5 c 6 − s 23 s 4 s 6 o x = c 1 [ c 23 ( s 4 c 6 − c 4 c 5 s 6 ) + s 23 s 5 s 6 ] − s 1 ( s 4 c 5 s 6 + c 4 c 6 ) o y = s 1 [ c 23 ( s 4 c 6 − c 4 c 5 s 6 ) + s 23 s 5 s 6 ] + c 1 ( s 4 c 5 s 6 + c 4 c 6 ) o z = s 23 c 4 c 5 s 6 + c 23 s 5 s 6 − s 23 s 4 c 6 a x = c 1 ( c 23 c 4 s 5 + s 23 c 5 ) + s 1 s 4 s 5 a y = s 1 ( c 23 c 4 s 5 + s 23 c 5 ) − c 1 s 4 s 5 a z = − c 4 s 5 s 23 + c 23 c 5 p x = c 1 ( a 3 c 23 + a 2 c 2 + a 1 − d 4 s 23 ) p y = s 1 ( a 3 c 23 + a 2 c 2 + a 1 − d 4 s 23 ) p z = − d 4 c 23 − a 3 s 23 − a 2 s 2 + d 1 式 中 : s i = s i n ( θ i ) , c i = c o s ( θ i ) , i = 1 , 2 , . . . , 6 s 23 = s i n ( θ 2 + θ 3 ) , c 23 = c o s ( θ 2 + θ 3 ) \begin{aligned} n_x&=c_1[c_{23}(c_4c_5c_6+s_4s_6)-s_{23}s_5c_6]+s_1(s_4c_5c_6-c_4s_6)\\ n_y&=s_1[c_{23}(c_4c_5c_6+s_4s_6)-s_{23}s_5c_6]-c_1(s_4c_5c_6-c_4s_6)\\ n_z&=-s_{23}c_4c_5s_6-c_{23}s_5c_6-s_{23}s_4s_6\\ o_x&=c_1[c_{23}(s_4c_6-c_4c_5s_6)+s_{23}s_5s_6]-s_1(s_4c_5s_6+c_4c_6)\\ o_y&=s_1[c_{23}(s_4c_6-c_4c_5s_6)+s_{23}s_5s_6]+c_1(s_4c_5s_6+c_4c_6)\\ o_z&=s_{23}c_4c_5s_6+c_{23}s_5s_6-s_{23}s_4c_6\\ a_x&=c_1(c_{23}c_4s_5+s_{23}c_5)+s_1s_4s_5\\ a_y&=s_1(c_{23}c_4s_5+s_{23}c_5)-c_1s_4s_5\\ a_z&=-c_4s_5s_{23}+c_{23}c_5\\ p_x&=c_1(a_3c_{23}+a_2c_2+a_1-d_4s_{23})\\ p_y&=s_1(a_3c_{23}+a_2c_2+a_1-d_4s_{23})\\ p_z&=-d_4c_{23}-a_3s_{23}-a_2s_2+d_1\\ 式中:\\ s_i&=sin(\theta_i),c_i=cos(\theta_i),i=1,2,...,6\\ s_{23}&=sin(\theta_2+\theta_3),c_{23}=cos(\theta_2+\theta_3) \end{aligned} nxnynzoxoyozaxayazpxpypzsis23=c1[c23(c4c5c6+s4s6)s23s5c6]+s1(s4c5c6c4s6)=s1[c23(c4c5c6+s4s6)s23s5c6]c1(s4c5c6c4s6)=s23c4c5s6c23s5c6s23s4s6=c1[c23(s4c6c4c5s6)+s23s5s6]s1(s4c5s6+c4c6)=s1[c23(s4c6c4c5s6)+s23s5s6]+c1(s4c5s6+c4c6)=s23c4c5s6+c23s5s6s23s4c6=c1(c23c4s5+s23c5)+s1s4s5=s1(c23c4s5+s23c5)c1s4s5=c4s5s23+c23c5=c1(a3c23+a2c2+a1d4s23)=s1(a3c23+a2c2+a1d4s23)=d4c23a3s23a2s2+d1=sin(θi),ci=cos(θi),i=1,2,...,6=sin(θ2+θ3),c23=cos(θ2+θ3)

 

三、机器人逆运动学

 

求解关节一

θ 1 = a t a n 2 ( p y , p x ) − a t a n 2 ( 0 , ± p x 2 + p y 2 ) ; \theta_1=atan2(p_y,p_x)-atan2(0,\pm\sqrt{px^2+py^2}); θ1=atan2(py,px)atan2(0,±px2+py2 );

 

求解关节三

k 1 = c o s ( θ 1 ) p x + s i n ( θ 1 ) p y − a 1 k 2 = − p z + d 1 k = k 1 2 + k 2 2 − ( a 2 2 + a 3 2 + d 4 2 ) 2 a 2 θ 31 , 32 = a t a n 2 ( a 3 , d 4 ) − a t a n 2 ( k , ± a 3 2 + d 4 2 − k 2 ) 由 上 式 解 出 的 角 度 范 围 是 [ − π , 3 π 2 ] , 且 周 期 为 2 π , 因 此 , 当 θ > π / 2 时 , 取 θ = θ − 2 π , 否 则 , θ 不 变 . \begin{aligned} &k_1=cos(\theta_1)p_x+sin(\theta_1)p_y-a_1\\ &k_2=-p_z+d_1\\ &k=\frac{k^2_1+k^2_2-(a^2_2+a^2_3+d^2_4)}{2a_2}\\ &\theta_{31,32}=atan2(a_3,d_4)-atan2(k,\pm\sqrt{a^2_3+d^2_4-k^2})\\ &由上式解出的角度范围是[-\pi,\frac{3\pi}{2}],且周期为2\pi,因此,\\ &当\theta\gt\pi/2时,取\theta=\theta-2\pi,否则,\theta不变. \end{aligned} k1=cos(θ1)px+sin(θ1)pya1k2=pz+d1k=2a2k12+k22(a22+a32+d42)θ31,32=atan2(a3,d4)atan2(k,±a32+d42k2 )[π,23π],2πθ>π/2θ=θ2π,θ.

 

求解关节二

k 1 = ( d 4 − s i n ( θ 3 ) a 2 ) ( s i n ( θ 1 ) p y − a 1 + c o s ( θ 1 ) p x ) − ( c o s ( θ 3 ) a 2 + a 3 ) ( d 1 − p z ) ( a 1 − c o s ( θ 1 ) p x − s i n ( θ 1 ) p y ) ( s i n ( θ 1 ) p y − a 1 + c o s ( θ 1 ) p x ) − ( d 1 − p z ) 2 k 2 = ( d 4 − s i n ( θ 3 ) a 2 ) ( d 1 − p z ) − ( c o s ( θ 3 ) a 2 + a 3 ) ( a 1 − c o s ( θ 1 ) p x − s i n ( θ 1 ) p y ) ( d 1 − p z ) 2 − ( s i n ( θ 1 ) p y − a 1 + c o s ( θ 1 ) p x ) ( a 1 − c o s ( θ 1 ) p x − s i n ( θ 1 ) p y ) θ 2 = a t a n 2 ( k 1 , k 2 ) − θ 3 θ 2 的 有 效 区 间 为 ( − 3 π 2 , π 2 ] , 且 周 期 为 2 π , 因 此 , 当 θ > π / 2 时 , 取 θ = θ − 2 π , 当 θ ≤ − 3 π 2 时 , 取 θ = θ + 2 π . \begin{aligned} &k_1=\frac{(d_4-sin(\theta_3)a_2)(sin(\theta_1)p_y-a_1+cos(\theta_1)p_x)-(cos(\theta_3)a_2+a_3)(d_1-p_z)}{(a_1-cos(\theta_1)p_x-sin(\theta_1)p_y)(sin(\theta_1)p_y-a_1+cos(\theta_1)p_x)-(d_1-p_z)^2}\\ &k_2=\frac{(d_4-sin(\theta_3)a_2)(d_1-p_z)-(cos(\theta_3)a_2+a_3)(a_1-cos(\theta_1)p_x-sin(\theta_1)p_y)}{(d_1-p_z)^2-(sin(\theta_1)p_y-a_1+cos(\theta_1)p_x)(a_1-cos(\theta_1)p_x-sin(\theta_1)p_y)}\\ \quad\\ &\theta_2=atan2(k_1,k_2)-\theta_3\\ &\theta_2的有效区间为(\frac{-3\pi}{2},\frac{\pi}{2}],且周期为2\pi,因此,\\ &当\theta\gt\pi/2时,取\theta=\theta-2\pi,当\theta\le\frac{-3\pi}{2}时,取\theta=\theta+2\pi. \end{aligned} k1=(a1cos(θ1)pxsin(θ1)py)(sin(θ1)pya1+cos(θ1)px)(d1pz)2(d4sin(θ3)a2)(sin(θ1)pya1+cos(θ1)px)(cos(θ3)a2+a3)(d1pz)k2=(d1pz)2(sin(θ1)pya1+cos(θ1)px)(a1cos(θ1)pxsin(θ1)py)(d4sin(θ3)a2)(d1pz)(cos(θ3)a2+a3)(a1cos(θ1)pxsin(θ1)py)θ2=atan2(k1,k2)θ3θ2(23π,2π],2πθ>π/2θ=θ2π,θ23πθ=θ+2π.

 

求解关节四

k 1 = s i n ( θ 1 ) a x − c o s ( θ 1 ) a y k 2 = c o s ( θ 1 ) c o s ( θ 2 + θ 3 ) a x + s i n ( θ 1 ) c o s ( θ 2 + θ 3 ) a y − s i n ( θ 2 + θ 3 ) a z 当 s i n ( θ 5 ) ≠ 0 时 , θ 4 = a t a n 2 ( k 1 , k 2 ) θ 4 的 有 效 区 间 为 ( − π , π ] , 因 此 , 当 θ 4 > 0 时 , 取 θ 42 = θ 4 − π , 否 则 , 取 θ 42 = θ 4 + π . \begin{aligned} &k_1=sin(\theta_1)a_x-cos(\theta_1)a_y\\ &k_2=cos(\theta_1)cos(\theta_2+\theta_3)a_x+sin(\theta_1)cos(\theta_2+\theta_3)a_y-sin(\theta_2+\theta_3)a_z\\ \quad\\ &当sin(\theta_5)\ne0时,\\ &\theta_4=atan2(k_1,k_2)\\ &\theta_4的有效区间为(-\pi,\pi],因此, 当\theta_4\gt0时,取\theta_{42}=\theta_4-\pi,否则,取\theta_{42}=\theta_4+\pi.\\ \end{aligned} k1=sin(θ1)axcos(θ1)ayk2=cos(θ1)cos(θ2+θ3)ax+sin(θ1)cos(θ2+θ3)aysin(θ2+θ3)azsin(θ5)=0θ4=atan2(k1,k2)θ4(π,π]θ4>0θ42=θ4π,θ42=θ4+π.

需要从两个解中筛选一个值,通过判断与上一插补值的绝对值大小,选取绝对值小的作为真实解.

 

求解关节五

k 1 = ( s i n ( θ 4 ) s i n ( θ 1 ) + c o s ( θ 1 ) c o s ( θ 4 ) c o s ( θ 2 + θ 3 ) ) a x + ( c o s ( θ 4 ) s i n ( θ 1 ) c o s ( θ 2 + θ 3 ) ) a y − s i n ( θ 2 + θ 3 ) c o s ( θ 4 ) a z k 2 = − s i n ( θ 2 + θ 3 ) c o s ( θ 1 ) a x − s i n ( θ 2 + θ 3 ) s i n ( θ 1 ) a y − c o s ( θ 2 + θ 3 ) a z θ 5 = a t a n 2 ( k 1 , − k 2 ) \begin{aligned} &k_1=(sin(\theta_4)sin(\theta_1)+cos(\theta_1)cos(\theta_4)cos(\theta_2+\theta_3))a_x\\ &\quad+(cos(\theta_4)sin(\theta_1)cos(\theta_2+\theta_3))a_y\\ &\quad-sin(\theta_2+\theta_3)cos(\theta_4)a_z\\ &k_2=-sin(\theta_2+\theta_3)cos(\theta_1)a_x-sin(\theta_2+\theta_3)sin(\theta_1)a_y-cos(\theta_2+\theta_3)a_z\\ \quad\\ &\theta_5=atan2(k_1,-k_2)\\ \end{aligned} k1=(sin(θ4)sin(θ1)+cos(θ1)cos(θ4)cos(θ2+θ3))ax+(cos(θ4)sin(θ1)cos(θ2+θ3))aysin(θ2+θ3)cos(θ4)azk2=sin(θ2+θ3)cos(θ1)axsin(θ2+θ3)sin(θ1)aycos(θ2+θ3)azθ5=atan2(k1,k2)

 

求解关节六

k 1 = ( s i n ( θ 4 ) s i n ( θ 1 ) c o s ( θ 5 ) − c o s ( θ 1 ) s i n ( θ 5 ) s i n ( θ 2 + θ 3 ) + c o s ( θ 1 ) c o s ( θ 4 ) c o s ( θ 2 + θ 3 ) c o s ( θ 5 ) ) o x − ( c o s ( θ 1 ) s i n ( θ 4 ) c o s ( θ 5 ) + s i n ( θ 1 ) s i n ( θ 5 ) s i n ( θ 2 + θ 3 ) − s i n ( θ 1 ) c o s ( θ 4 ) c o s ( θ 5 ) c o s ( θ 2 + θ 3 ) ) o y + ( s i n ( θ 2 ) s i n ( θ 3 ) s i n ( θ 5 ) − c o s ( θ 2 ) c o s ( θ 3 ) s i n ( θ 5 ) − c o s ( θ 4 ) c o s ( θ 5 ) s i n ( θ 2 + θ 3 ) ) o z k 2 = ( c o s ( θ 1 ) s i n ( θ 4 ) c o s ( θ 2 + θ 3 ) − c o s ( θ 4 ) s i n ( θ 1 ) ) o x + ( c o s ( θ 1 ) c o s ( θ 4 ) + s i n ( θ 1 ) s i n ( θ 4 ) c o s ( θ 2 + θ 3 ) ) o y − s i n ( θ 2 + θ 3 ) s i n ( θ 4 ) o z θ 6 = a t a n 2 ( − k 1 , k 2 ) θ 6 周 期 为 2 π , 当 θ 6 > 0 时 , 取 θ 62 = θ 6 − 2 π , 否 则 , 取 θ 62 = θ 6 + 2 π . \begin{aligned} &k_1=(sin(\theta_4)sin(\theta_1)cos(\theta_5)-cos(\theta_1)sin(\theta_5)sin(\theta_2+\theta_3)+cos(\theta_1)cos(\theta_4)cos(\theta_2+\theta_3)cos(\theta_5))o_x\\ &\quad-(cos(\theta_1)sin(\theta_4)cos(\theta_5)+sin(\theta_1)sin(\theta_5)sin(\theta_2+\theta_3)-sin(\theta_1)cos(\theta_4)cos(\theta_5)cos(\theta_2+\theta_3))o_y\\ &\quad+(sin(\theta_2)sin(\theta_3)sin(\theta_5)-cos(\theta_2)cos(\theta_3)sin(\theta_5)-cos(\theta_4)cos(\theta_5)sin(\theta_2+\theta_3))o_z\\ &k_2=(cos(\theta_1)sin(\theta_4)cos(\theta_2+\theta_3)-cos(\theta_4)sin(\theta_1))o_x\\ &\quad+(cos(\theta_1)cos(\theta_4)+sin(\theta_1)sin(\theta_4)cos(\theta_2+\theta_3))o_y\\ &\quad-sin(\theta_2+\theta_3)sin(\theta_4)o_z\\ \quad\\ &\theta_6=atan2(-k_1,k_2)\\ &\theta_6周期为2\pi,当\theta_6\gt0时,取\theta_{62}=\theta_6-2\pi,否则,取\theta_{62}=\theta_6+2\pi. \end{aligned} 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))oysin(θ2+θ3)sin(θ4)ozθ6=atan2(k1,k2)θ62π,θ6>0θ62=θ62π,θ62=θ6+2π.

 
 

以上过程共解出8组解.

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值