求解PUMA560 六軸機械臂運動學

最近需要解算六軸機器人的解析解,算法已完成,這裏記錄一下.

一、機器人模型

PUMA560:

全稱:Programmable Universal Manipulation Arm
1978年由Unimation 機器人公司的Victor Scheinman研發.

本文使用的模型:

在這裏插入圖片描述

在這裏插入圖片描述

D-H矩陣:

在這裏插入圖片描述

二、機器人正運動學

機器人正運動學就是給定機器人各關節位置,計算機器人連桿上任意點的位姿.

位姿矩陣

機器人位置和姿態可以由一個方陣描述:

P={nxoxaxpxnyoyaypynzozazpz0001} 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\}

其中,n,o,a爲末端姿態,p爲末端位置.

 

正運動學

T60=T10T21T32T43T54T65Tkiki. T^0_6=T^0_1T^1_2T^2_3T^3_4T^4_5T^5_6\\ \quad\\ T^i_k爲k關節座標系在i關節座標系下的描述.

對於確定的機器人結構,如上圖中所示,每個關節在上一關節的描述是確定的,因此正運動學直接計算即可.

nx=c1[c23(c4c5c6+s4s6)s23s5c6]+s1(s4c5c6c4s6)ny=s1[c23(c4c5c6+s4s6)s23s5c6]c1(s4c5c6c4s6)nz=s23c4c5s6c23s5c6s23s4s6ox=c1[c23(s4c6c4c5s6)+s23s5s6]s1(s4c5s6+c4c6)oy=s1[c23(s4c6c4c5s6)+s23s5s6]+c1(s4c5s6+c4c6)oz=s23c4c5s6+c23s5s6s23s4c6ax=c1(c23c4s5+s23c5)+s1s4s5ay=s1(c23c4s5+s23c5)c1s4s5az=c4s5s23+c23c5px=c1(a3c23+a2c2+a1d4s23)py=s1(a3c23+a2c2+a1d4s23)pz=d4c23a3s23a2s2+d1si=sin(θi),ci=cos(θi),i=1,2,...,6s23=sin(θ2+θ3),c23=cos(θ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}

 

三、機器人逆運動學

 

求解關節一

θ1=atan2(py,px)atan2(0,±px2+py2); \theta_1=atan2(p_y,p_x)-atan2(0,\pm\sqrt{px^2+py^2});

 

求解關節三

k1=cos(θ1)px+sin(θ1)pya1k2=pz+d1k=k12+k22(a22+a32+d42)2a2θ31,32=atan2(a3,d4)atan2(k,±a32+d42k2)[π,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=(d4sin(θ3)a2)(sin(θ1)pya1+cos(θ1)px)(cos(θ3)a2+a3)(d1pz)(a1cos(θ1)pxsin(θ1)py)(sin(θ1)pya1+cos(θ1)px)(d1pz)2k2=(d4sin(θ3)a2)(d1pz)(cos(θ3)a2+a3)(a1cos(θ1)pxsin(θ1)py)(d1pz)2(sin(θ1)pya1+cos(θ1)px)(a1cos(θ1)pxsin(θ1)py)θ2=atan2(k1,k2)θ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=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+π. \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(θ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) \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(θ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π. \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}

 
 

以上過程共解出8組解.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章