4-1 逆向运动学引言

正如第三章的引言所述:顺向运动学:就是知道了每个关节和连杆的夹角( θ 1 \theta_1 θ1, θ 2 \theta_2 θ2, θ 3 \theta_3 θ3),得到机械臂末端点到达的位置( W P {}^{W}P WP),
逆向运动学:就是知道了机械臂末端点的位置( W P {}^{W}P WP),反推每个关节需要呈现的角度( θ 1 \theta_1 θ1, θ 2 \theta_2 θ2, θ 3 \theta_3 θ3)。在实际的机械臂抓取任务执行中,往往首先知道物体的具体位置( x x x y y y z z z),这其实就是机械臂末端需要达到的位置,所以,要在知道机械臂末端位置的条件下,得到每个关节的角度 θ \theta θ,这首先就要进行逆向运动学的计算;在得到每个关节角度之后,再通过顺向运动学操作机械臂达到物体的位置实现抓取。
在这里插入图片描述
假设机械臂有6自由度,分别是6个未知的关节角度( θ 1 \theta_1 θ1, θ 2 \theta_2 θ2, θ 3 \theta_3 θ3, θ 4 \theta_4 θ4, θ 5 \theta_5 θ5, θ 6 \theta_6 θ6),根据正向运动学的知识,能够有齐次变换矩阵使得坐标系{6}的点能够转换到坐标系{0}上进行表达,齐次变换矩阵记为 6 0 T {^0_6}T 60T,将6个未知的关节角度带入齐次变换矩阵 6 0 T {^0_6}T 60T后,齐次变换矩阵 6 0 T {^0_6}T 60T的未知元素有12个,即有12个非线性超越方程。矩阵当中有6个未知数,同时也有6个限制条件,所以,逆向运动学就是在解这些方程,从而得到关节角度。
在这里插入图片描述
Reachable workspace:手臂可以用一种以上的姿态到达的位置;
Dexterous workspace:手臂可以用任何的姿态到达的位置;
例如,以下幻灯片中,第一幅图当中,环形圆的全部是一个Reachable workspace,没有Dexterous workspace;而第二幅图当中,圆的全部是一个Reachable workspace,对于原点是一个Dexterous workspace。
在这里插入图片描述
Subspace:手臂在定义头尾的 T T T所能达到的变动范围(机械臂在给定定义条件下(关节限制、结构),它的末端位姿(T)能够变化到什么范围),下面的例子说明了机械臂末端能到达的位置是有限的,因为旋转矩阵只跟( x x x y y y)有关,将机械臂能够达到的变动范围就称为Subspace。
在这里插入图片描述

4-2 多重解 01

齐次变换矩阵当中的元素是三角函数项,其 θ \theta θ解的数目并不唯一,对于有6个旋转的关节的机械臂系统来说,其解的数目也跟偏置有关
在这里插入图片描述
Ex:PUMA(6旋转关节机械臂)
针对末端夹爪的特定工作点,整个机械臂有8组姿态到达这个特定工作点,也就是有8组解。前三轴就有4种姿态,并且这4种姿态的每一种姿态当中,又具有2组手腕转动姿态(总共8种姿态),但是若机械臂本身有几何限制(碰撞),并非每一种解都可以运作。
在这里插入图片描述
那既然有这么多组解,解的选择需要考虑以下几个因素,首先考虑离目标状态最近的解,比如说,中间那幅图,此刻夹爪在A点,需要到达B点的话还是选择上面那条路径(最快、最省能);再如,如果有障碍物,那首要就是需要避开障碍物到达目标点B。
在这里插入图片描述
求解方法包括解析法和数值法,解析法当中有代数法和几何法,具有解析表达式;数值法由计算机求解出数值:
在这里插入图片描述

4-2 多重解 02

在讲述完逆向运动学的大概思路后,现在给出具体的例子说明这一求解过程。对于一个RRR的机械臂,IK的目的就是在给定了末端位姿 ( x , y , ϕ ) (x, y, \phi) (x,y,ϕ)的条件下去求解每个关节的角度 ( θ 1 , θ 2 , θ 3 ) (\theta_1, \theta_2, \theta_3) (θ1,θ2,θ3),具体来说,当末端位姿已知时会得到坐标系{3}相对于坐标系{0}的变换矩阵:
3 0 T = [ c ϕ − s ϕ 0.0 x s ϕ c ϕ 0.0 y 0.0 0.0 1.0 0 0 0 0 1 ] , {}^{0}_{3}T= \begin{bmatrix} c_{\phi} & -s_{\phi} & 0.0 & x \\ s_{\phi} & c_{\phi} & 0.0 & y \\ 0.0 & 0.0 & 1.0 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}, 30T= cϕsϕ0.00sϕcϕ0.000.00.01.00xy01
同时,根据FK,也会得到得到坐标系{3}相对于坐标系{0}的变换矩阵,不过矩阵当中的参数 ( θ 1 , θ 2 , θ 3 ) (\theta_1, \theta_2, \theta_3) (θ1,θ2,θ3)是未知的:
3 0 T = [ c 123 − s 123 0.0 l 1 c 1 + l 2 c 12 s 123 c 123 0.0 l 1 s 1 + l 2 s 12 0.0 0.0 1.0 0.0 0 0 0 1 ] 。 {}^{0}_{3}T= \begin{bmatrix} c_{123} & -s_{123} & 0.0 & l_1c_1+l_2c_{12}\\ s_{123} & c_{123} & 0.0 & l_1s_1+l_2s_{12}\\ 0.0 & 0.0 & 1.0 & 0.0\\ 0 & 0 & 0 & 1 \end{bmatrix}。 30T= c123s1230.00s123c1230.000.00.01.00l1c1+l2c12l1s1+l2s120.01
将两个矩阵当中对应的元素相等建立方程组进行求解,得到 ( θ 1 , θ 2 , θ 3 ) (\theta_1, \theta_2, \theta_3) (θ1,θ2,θ3)
在这里插入图片描述
几何法求解: 运用余弦定理
在这里插入图片描述
x 2 + y 2 = l 1 2 + l 2 2 − 2 l 1 l 2 cos ⁡ ( 180 ∘ − θ 2 ) x^2+y^2=l_1^2+l_2^2-2l_1l_2\cos(180^\circ-\theta_2) x2+y2=l12+l222l1l2cos(180θ2),根据三角函数的诱导公式可以得到 c o s θ 2 = x 2 + y 2 − l 1 2 − l 2 2 2 l 1 l 2 cos\theta_2=\frac{x^2+y^2-l_1^2-l_2^2}{2l_1l_2} cosθ2=2l1l2x2+y2l12l22
进一步,根据余弦定理有 cos ⁡ ψ = l 2 2 − ( x 2 + y 2 ) − l 1 2 − 2 l 1 x 2 + y 2 \cos\psi=\frac{l_2^2-(x^2+y^2)-l_1^2}{-2l_1\sqrt{x^2+y^2}} cosψ=2l1x2+y2 l22(x2+y2)l12 θ 2 < 0 \theta_2<0 θ2<0(蓝色杆的情形), β = a t a n 2 ( y , x ) \beta = atan2(y, x) β=atan2(y,x),此时, θ 1 = a t a n 2 ( y , x ) + ψ \theta_1 = atan2(y, x) + \psi θ1=atan2(y,x)+ψ θ 2 > 0 \theta_2>0 θ2>0(绿色杆的情形),此时 θ 1 = a t a n 2 ( y , x ) − ψ \theta_1 = atan2(y, x) - \psi θ1=atan2(y,x)ψ;于是得到 θ 1 \theta_1 θ1表达式:
θ 1 = { atan2 ⁡ ( y , x ) + ψ , θ 2 < 0 atan2 ⁡ ( y , x ) − ψ , θ 2 > 0 , \theta_1= \begin{cases} \operatorname{atan2}(y,x)+\psi, & \theta_2<0\\ \operatorname{atan2}(y,x)-\psi, & \theta_2>0 \end{cases}, θ1={atan2(y,x)+ψ,atan2(y,x)ψ,θ2<0θ2>0
θ 3 \theta_3 θ3 θ 3 = ϕ − θ 1 − θ 2 \theta_3=\phi-\theta_1-\theta_2 θ3=ϕθ1θ2
在这里插入图片描述
给出具体数值,代入公式求解即可:
在这里插入图片描述
In-Video Quiz: 选B, 此时, θ 2 < 0 \theta_2<0 θ2<0,排除C和A, θ 1 = a t a n 2 ( y , x ) + ψ \theta_1 = atan2(y, x) + \psi θ1=atan2(y,x)+ψ,atan2(5, 3) = 59,所以 θ 1 = 78.4 \theta_1 = 78.4 θ1=78.4,又有 ϕ = θ 1 + θ 2 + θ 3 \phi = \theta_1 + \theta_2 + \theta_3 ϕ=θ1+θ2+θ3,可以得到 θ 3 \theta_3 θ3的值。
在这里插入图片描述
代数法求解: 根据两个矩阵建立方程式
对于图中的平面三转动关节机械臂,末端位置 ( x , y ) (x,y) (x,y) 可以写成: x = l 1 cos ⁡ θ 1 + l 2 cos ⁡ ( θ 1 + θ 2 ) x=l_1\cos\theta_1+l_2\cos(\theta_1+\theta_2) x=l1cosθ1+l2cos(θ1+θ2) y = l 1 sin ⁡ θ 1 + l 2 sin ⁡ ( θ 1 + θ 2 ) y=l_1\sin\theta_1+l_2\sin(\theta_1+\theta_2) y=l1sinθ1+l2sin(θ1+θ2),为了简化表达,有 c 1 = cos ⁡ θ 1 , s 1 = sin ⁡ θ 1 c_1=\cos\theta_1,s_1=\sin\theta_1 c1=cosθ1,s1=sinθ1 c 12 = cos ⁡ ( θ 1 + θ 2 ) , s 12 = sin ⁡ ( θ 1 + θ 2 ) c_{12}=\cos(\theta_1+\theta_2),s_{12}=\sin(\theta_1+\theta_2) c12=cos(θ1+θ2),s12=sin(θ1+θ2),所以末端位置重新写为 x = l 1 c 1 + l 2 c 12 x=l_1c_1+l_2c_{12} x=l1c1+l2c12 y = l 1 s 1 + l 2 s 12 y=l_1s_1+l_2s_{12} y=l1s1+l2s12。分别对 x x x y y y平方:
x 2 = ( l 1 c 1 + l 2 c 12 ) 2 , y 2 = ( l 1 s 1 + l 2 s 12 ) 2 x^2=(l_1c_1+l_2c_{12})^2, y^2=(l_1s_1+l_2s_{12})^2 x2=(l1c1+l2c12)2,y2=(l1s1+l2s12)2
展开得到:
x 2 = l 1 2 c 1 2 + l 2 2 c 12 2 + 2 l 1 l 2 c 1 c 12 , y 2 = l 1 2 s 1 2 + l 2 2 s 12 2 + 2 l 1 l 2 s 1 s 12 x^2=l_1^2c_1^2+l_2^2c_{12}^2+2l_1l_2c_1c_{12},y^2=l_1^2s_1^2+l_2^2s_{12}^2+2l_1l_2s_1s_{12} x2=l12c12+l22c122+2l1l2c1c12y2=l12s12+l22s122+2l1l2s1s12
将二者相加得到:
x 2 + y 2 = l 1 2 c 1 2 + l 2 2 c 12 2 + 2 l 1 l 2 c 1 c 12 + l 1 2 s 1 2 + l 2 2 s 12 2 + 2 l 1 l 2 s 1 s 12 \begin{aligned} x^2+y^2 ={}&l_1^2c_1^2+l_2^2c_{12}^2+2l_1l_2c_1c_{12}\\ &+l_1^2s_1^2+l_2^2s_{12}^2+2l_1l_2s_1s_{12} \end{aligned} x2+y2=l12c12+l22c122+2l1l2c1c12+l12s12+l22s122+2l1l2s1s12
同类项整理有:
x 2 + y 2 = l 1 2 ( c 1 2 + s 1 2 ) + l 2 2 ( c 12 2 + s 12 2 ) + 2 l 1 l 2 ( c 1 c 12 + s 1 s 12 ) \begin{aligned} x^2+y^2 ={}&l_1^2(c_1^2+s_1^2) +l_2^2(c_{12}^2+s_{12}^2)\\ &+2l_1l_2(c_1c_{12}+s_1s_{12}) \end{aligned} x2+y2=l12(c12+s12)+l22(c122+s122)+2l1l2(c1c12+s1s12)
上式可以简化为:
x 2 + y 2 = l 1 2 + l 2 2 + 2 l 1 l 2 ( c 1 c 12 + s 1 s 12 ) x^2+y^2 =l_1^2+l_2^2 +2l_1l_2(c_1c_{12}+s_1s_{12}) x2+y2=l12+l22+2l1l2(c1c12+s1s12)
α = θ 1 + θ 2 , β = θ 1 \alpha=\theta_1+\theta_2,\qquad \beta=\theta_1 α=θ1+θ2,β=θ1
上式变为:
c 1 c 12 + s 1 s 12 = cos ⁡ θ 1 cos ⁡ ( θ 1 + θ 2 ) + sin ⁡ θ 1 sin ⁡ ( θ 1 + θ 2 ) \begin{aligned} c_1c_{12}+s_1s_{12} &=\cos\theta_1\cos(\theta_1+\theta_2)\\ &\quad+\sin\theta_1\sin(\theta_1+\theta_2) \end{aligned} c1c12+s1s12=cosθ1cos(θ1+θ2)+sinθ1sin(θ1+θ2)
根据余弦差角公式可得:
c 1 c 12 + s 1 s 12 = cos ⁡ [ ( θ 1 + θ 2 ) − θ 1 ] = cos ⁡ θ 2 \begin{aligned} c_1c_{12}+s_1s_{12} &=\cos\left[(\theta_1+\theta_2)-\theta_1\right]\\ &=\cos\theta_2 \end{aligned} c1c12+s1s12=cos[(θ1+θ2)θ1]=cosθ2
所以得到 c 1 c 12 + s 1 s 12 = c 2 c_1c_{12}+s_1s_{12}=c_2 c1c12+s1s12=c2,也就是
( x 2 ) + ( y 2 ) = l 1 2 + l 2 2 + 2 l 1 l 2 cos ⁡ θ 2 (x^2)+(y^2)= l_1^2+l_2^2+2l_1l_2\cos\theta_2 (x2)+(y2)=l12+l22+2l1l2cosθ2
求解 θ 2 \theta_2 θ2
θ 2 = cos ⁡ − 1 ( x 2 + y 2 − l 1 2 − l 2 2 2 l 1 l 2 ) \theta_2 =\cos^{-1}\left(\frac{x^2+y^2-l_1^2-l_2^2}{2l_1l_2}\right) θ2=cos1(2l1l2x2+y2l12l22)
在这里插入图片描述
将已经求得的 θ 2 \theta_2 θ2代入, x = l 1 c 1 + l 2 c 12 = l 1 c 1 + l 2 ( c 1 c 2 − s 1 s 2 ) = ( l 1 + l 2 c 2 ) c 1 − l 2 s 2 s 1 x=l_1c_1+l_2c_{12}=l_1c_1+l_2(c_1c_2-s_1s_2) = (l_1+l_2c_2)c_1-l_2s_2s_1 x=l1c1+l2c12=l1c1+l2(c1c2s1s2)=(l1+l2c2)c1l2s2s1
y = l 1 s 1 + l 2 s 12 = l 1 s 1 + l 2 ( s 1 c 2 + c 1 s 2 ) = ( l 1 + l 2 c 2 ) s 1 + l 2 s 2 c 1 y=l_1s_1+l_2s_{12} = l_1s_1+l_2(s_1c_2+c_1s_2) =(l_1+l_2c_2)s_1+l_2s_2c_1 y=l1s1+l2s12=l1s1+l2(s1c2+c1s2)=(l1+l2c2)s1+l2s2c1,定义 k 1 = l 1 + l 2 c 2 , k 2 = l 2 s 2 k_1=l_1+l_2c_2, k_2=l_2s_2 k1=l1+l2c2,k2=l2s2,原位置方程变为:
{ x = k 1 cos ⁡ θ 1 − k 2 sin ⁡ θ 1 y = k 1 sin ⁡ θ 1 + k 2 cos ⁡ θ 1 \begin{cases} x=k_1\cos\theta_1-k_2\sin\theta_1\\ y=k_1\sin\theta_1+k_2\cos\theta_1 \end{cases} {x=k1cosθ1k2sinθ1y=k1sinθ1+k2cosθ1
k 1 k_1 k1 k 2 k_2 k2进行极坐标变换, k 1 = r cos ⁡ γ k_1=r\cos\gamma k1=rcosγ k 2 = r sin ⁡ γ k_2=r\sin\gamma k2=rsinγ,代入 x , y x, y x,y
{ x = r cos ⁡ γ cos ⁡ θ 1 − r sin ⁡ γ sin ⁡ θ 1 , y = r cos ⁡ γ sin ⁡ θ 1 + r sin ⁡ γ cos ⁡ θ 1 . \begin{cases} x=r\cos\gamma\cos\theta_1-r\sin\gamma\sin\theta_1,\\ y=r\cos\gamma\sin\theta_1+r\sin\gamma\cos\theta_1. \end{cases} {x=rcosγcosθ1rsinγsinθ1,y=rcosγsinθ1+rsinγcosθ1.
两边同时除以 r:
{ x r = cos ⁡ γ cos ⁡ θ 1 − sin ⁡ γ sin ⁡ θ 1 = cos ⁡ ( γ + θ 1 ) , y r = cos ⁡ γ sin ⁡ θ 1 + sin ⁡ γ cos ⁡ θ 1 = sin ⁡ ( γ + θ 1 ) . \begin{cases} \dfrac{x}{r}=\cos\gamma\cos\theta_1-\sin\gamma\sin\theta_1=\cos(\gamma+\theta_1),\\ \dfrac{y}{r}=\cos\gamma\sin\theta_1+\sin\gamma\cos\theta_1=\sin(\gamma+\theta_1). \end{cases} rx=cosγcosθ1sinγsinθ1=cos(γ+θ1),ry=cosγsinθ1+sinγcosθ1=sin(γ+θ1).
求解 θ 1 \theta_1 θ1,得到:
γ + θ 1 = atan2 ⁡ ( y r , x r ) = atan2 ⁡ ( y , x ) \gamma+\theta_1=\operatorname{atan2}\left(\frac{y}{r},\frac{x}{r}\right)=\operatorname{atan2}(y,x) γ+θ1=atan2(ry,rx)=atan2(y,x)
θ 1 = atan2 ⁡ ( y , x ) − atan2 ⁡ ( k 2 , k 1 ) \boxed{ \theta_1= \operatorname{atan2}(y,x)- \operatorname{atan2}(k_2,k_1) } θ1=atan2(y,x)atan2(k2,k1)
求解 θ 3 \theta_3 θ3: θ 3 = ϕ − θ 1 − θ 2 \theta_3=\phi-\theta_1-\theta_2 θ3=ϕθ1θ2
在这里插入图片描述

4-3 Pieper’s Solution - 1

若6自由度的机械臂有三个连续的轴交在同一点,则手臂有解析解,坐标系{6}的原点相对于坐标系{0}的表达等于坐标系{4}的原点相对于坐标系{0}的表达:
在这里插入图片描述
为了求解 θ 1 \theta_1 θ1 θ 2 \theta_2 θ2 θ 3 \theta_3 θ3,让 θ 1 \theta_1 θ1 θ 2 \theta_2 θ2 θ 3 \theta_3 θ3层层分离,根据顺向运动学的知识,首先标准的DH变换矩阵:
i i − 1 T = [ c i − s i 0 a i − 1 s i c α i − 1 c i c α i − 1 − s α i − 1 − s α i − 1 d i s i s α i − 1 c i s α i − 1 c α i − 1 c α i − 1 d i 0 0 0 1 ] {}^{i-1}_{i}T= \begin{bmatrix} c_i & -s_i & 0 & a_{i-1}\\ s_ic_{\alpha_{i-1}} & c_ic_{\alpha_{i-1}} & -s_{\alpha_{i-1}} & -s_{\alpha_{i-1}}d_i\\ s_is_{\alpha_{i-1}} & c_is_{\alpha_{i-1}} & c_{\alpha_{i-1}} & c_{\alpha_{i-1}}d_i\\ 0&0&0&1 \end{bmatrix} ii1T= cisicαi1sisαi10sicicαi1cisαi100sαi1cαi10ai1sαi1dicαi1di1
对于末端坐标,可以写为:
[ x y z 1 ] = 0 P 4 , O R G = 1 0 T 2 1 T 3 2 T 4 3 T 4 P O R G . \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}= {}^{0}P_{4,\mathrm{ORG}}= {}^{0}_{1}T {}^{1}_{2}T {}^{2}_{3}T {}^{3}_{4}T {}^{4}P_{\mathrm{ORG}}. xyz1 =0P4,ORG=10T21T32T43T4PORG.
由于 4 P O R G = [ 0 0 0 1 ] , {}^{4}P_{\mathrm{ORG}}= \begin{bmatrix} 0\\ 0\\ 0\\ 1 \end{bmatrix}, 4PORG= 0001 ,于是得到,
[ x y z 1 ] = 1 0 T 2 1 T 3 2 T [ a 3 − d 4 s α 3 d 4 c α 3 1 ] . \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}= {}^{0}_{1}T {}^{1}_{2}T {}^{2}_{3}T \begin{bmatrix} a_3\\ -d_4s_{\alpha_3}\\ d_4c_{\alpha_3}\\ 1 \end{bmatrix}. xyz1 =10T21T32T a3d4sα3d4cα31 .
为了实现变量分离,定义关于 θ 3 \theta_3 θ3的函数:
[ f 1 ( θ 3 ) f 2 ( θ 3 ) f 3 ( θ 3 ) 1 ] = 3 2 T [ a 3 − d 4 s α 3 d 4 c α 3 1 ] . \begin{bmatrix} f_1(\theta_3)\\ f_2(\theta_3)\\ f_3(\theta_3)\\ 1 \end{bmatrix}= {}^{2}_{3}T \begin{bmatrix} a_3\\ -d_4s_{\alpha_3}\\ d_4c_{\alpha_3}\\ 1 \end{bmatrix}. f1(θ3)f2(θ3)f3(θ3)1 =32T a3d4sα3d4cα31 .于是,整体可以写为:
[ x y z 1 ] = 1 0 T 2 1 T [ f 1 ( θ 3 ) f 2 ( θ 3 ) f 3 ( θ 3 ) 1 ] . \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}= {}^{0}_{1}T {}^{1}_{2}T \begin{bmatrix} f_1(\theta_3)\\ f_2(\theta_3)\\ f_3(\theta_3)\\ 1 \end{bmatrix}. xyz1 =10T21T f1(θ3)f2(θ3)f3(θ3)1 .
展开 f ( θ 3 ) f(\theta_3) f(θ3),得到:
f 1 ( θ 3 ) = a 3 c 3 + d 4 s α 3 s 3 + a 2 , f 2 ( θ 3 ) = a 3 c α 2 s 3 − d 4 s α 3 c α 2 c 3 − d 3 s α 2 , f 3 ( θ 3 ) = a 3 s α 2 s 3 − d 4 s α 3 s α 2 c 3 + d 4 c α 2 c α 3 + d 3 c α 2 . \begin{aligned} f_1(\theta_3) &= a_3c_3 + d_4s_{\alpha_3}s_3 + a_2, \\[4pt] f_2(\theta_3) &= a_3c_{\alpha_2}s_3- d_4s_{\alpha_3}c_{\alpha_2}c_3- d_3s_{\alpha_2}, \\[4pt] f_3(\theta_3) &= a_3s_{\alpha_2}s_3- d_4s_{\alpha_3}s_{\alpha_2}c_3 + d_4c_{\alpha_2}c_{\alpha_3} + d_3c_{\alpha_2}. \end{aligned} f1(θ3)f2(θ3)f3(θ3)=a3c3+d4sα3s3+a2,=a3cα2s3d4sα3cα2c3d3sα2,=a3sα2s3d4sα3sα2c3+d4cα2cα3+d3cα2.

在这里插入图片描述
2 1 T {}^{1}_{2}T 21T作用到上式,可定义:
[ g 1 ( θ 2 , θ 3 ) g 2 ( θ 2 , θ 3 ) g 3 ( θ 2 , θ 3 ) 1 ] = 2 1 T [ f 1 ( θ 3 ) f 2 ( θ 3 ) f 3 ( θ 3 ) 1 ] . \begin{bmatrix} g_1(\theta_2,\theta_3)\\ g_2(\theta_2,\theta_3)\\ g_3(\theta_2,\theta_3)\\ 1 \end{bmatrix}= {}^{1}_{2}T \begin{bmatrix} f_1(\theta_3)\\ f_2(\theta_3)\\ f_3(\theta_3)\\ 1 \end{bmatrix}. g1(θ2,θ3)g2(θ2,θ3)g3(θ2,θ3)1 =21T f1(θ3)f2(θ3)f3(θ3)1 .
于是,
[ x y z 1 ] = 1 0 T [ g 1 ( θ 2 , θ 3 ) g 2 ( θ 2 , θ 3 ) g 3 ( θ 2 , θ 3 ) 1 ] . \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}= {}^{0}_{1}T \begin{bmatrix} g_1(\theta_2,\theta_3)\\ g_2(\theta_2,\theta_3)\\ g_3(\theta_2,\theta_3)\\ 1 \end{bmatrix}. xyz1 =10T g1(θ2,θ3)g2(θ2,θ3)g3(θ2,θ3)1 .
再作用 1 0 T {}^{0}_{1}T 10T,得到:
[ x y z 1 ] = [ c 1 g 1 − s 1 g 2 s 1 g 1 + c 1 g 2 g 3 1 ] . \begin{bmatrix} x\\ y\\ z\\ 1 \end{bmatrix}= \begin{bmatrix} c_1g_1-s_1g_2\\ s_1g_1+c_1g_2\\ g_3\\ 1 \end{bmatrix}. xyz1 = c1g1s1g2s1g1+c1g2g31 .
这时,展开 g 1 g_1 g1 g 2 g_2 g2 g 3 g_3 g3,可以得到:
g 1 ( θ 2 , θ 3 ) = c 2 f 1 − s 2 f 2 + a 1 , g 2 ( θ 2 , θ 3 ) = s 2 c α 1 f 1 + c 2 c α 1 f 2 − s α 1 f 3 − d 2 s α 1 , g 3 ( θ 2 , θ 3 ) = s 2 s α 1 f 1 + c 2 s α 1 f 2 + c α 1 f 3 + d 2 c α 1 . \begin{aligned} g_1(\theta_2,\theta_3) &= c_2f_1- s_2f_2 + a_1, \\[4pt] g_2(\theta_2,\theta_3) &= s_2c_{\alpha_1}f_1 + c_2c_{\alpha_1}f_2- s_{\alpha_1}f_3- d_2s_{\alpha_1}, \\[4pt] g_3(\theta_2,\theta_3) &= s_2s_{\alpha_1}f_1 + c_2s_{\alpha_1}f_2 + c_{\alpha_1}f_3 + d_2c_{\alpha_1}. \end{aligned} g1(θ2,θ3)g2(θ2,θ3)g3(θ2,θ3)=c2f1s2f2+a1,=s2cα1f1+c2cα1f2sα1f3d2sα1,=s2sα1f1+c2sα1f2+cα1f3+d2cα1.
构造平方和消去 θ 1 \theta_1 θ1
r = x 2 + y 2 + z 2 = g 1 2 + g 2 2 + g 3 2 ( r 仅为 θ 2 和 θ 3 的函数) . r= x^2+y^2+z^2= g_1^2+g_2^2+g_3^2(r仅为\theta_2和\theta_3的函数). r=x2+y2+z2=g12+g22+g32r仅为θ2θ3的函数). g 1 g_1 g1 g 2 g_2 g2 g 3 g_3 g3展开得到:
r = f 1 2 + f 2 2 + f 3 2 + a 1 2 + d 2 2 + 2 d 2 f 3 + 2 a 1 ( c 2 f 1 − s 2 f 2 ) . \begin{aligned} r &= f_1^2 + f_2^2 + f_3^2 + a_1^2 + d_2^2 + 2d_2f_3 + 2a_1(c_2f_1-s_2f_2). \end{aligned} r=f12+f22+f32+a12+d22+2d2f3+2a1(c2f1s2f2).
定义定义辅助变量:
k 1 ( θ 3 ) = f 1 , k 2 ( θ 3 ) = − f 2 , k 3 ( θ 3 ) = f 1 2 + f 2 2 + f 3 2 + a 1 2 + d 2 2 + 2 d 2 f 3 . \begin{aligned} k_1(\theta_3) &= f_1, \\[4pt] k_2(\theta_3) &= -f_2, \\[4pt] k_3(\theta_3) &= f_1^2 + f_2^2 + f_3^2 + a_1^2 + d_2^2 + 2d_2f_3. \end{aligned} k1(θ3)k2(θ3)k3(θ3)=f1,=f2,=f12+f22+f32+a12+d22+2d2f3.
r r r最终写为:
r = 2 a 1 ( k 1 c 2 + k 2 s 2 ) + k 3 ( r 仅为 θ 2 和 θ 3 的函数) . r= 2a_1(k_1c_2+k_2s_2) + k_3(r仅为\theta_2和\theta_3的函数). r=2a1(k1c2+k2s2)+k3r仅为θ2θ3的函数).
在这里插入图片描述
在上面的讨论当中,已经得到了 r r r的表达式, r = x 2 + y 2 + z 2 r=x^2+y^2+z^2 r=x2+y2+z2是已知的, z z z也是已知的且可以表述为:
z = g 3 = ( k 1 s 2 − k 2 c 2 ) s α 1 + k 4 ( z 也仅为 θ 2 和 θ 3 的函数 ) z= g_3= (k_1s_2-k_2c_2)s_{\alpha_1} + k_4(z也仅为\theta_2和\theta_3的函数) z=g3=(k1s2k2c2)sα1+k4(z也仅为θ2θ3的函数)
其中 k 1 ( θ 3 ) = f 1 , k 2 ( θ 3 ) = − f 2 , k 4 ( θ 3 ) = f 3 c α 1 + d 2 c α 1 . \begin{aligned} k_1(\theta_3) &= f_1, \\[4pt] k_2(\theta_3) &= -f_2, \\[4pt] k_4(\theta_3) &= f_3c_{\alpha_1} + d_2c_{\alpha_1}. \end{aligned} k1(θ3)k2(θ3)k4(θ3)=f1,=f2,=f3cα1+d2cα1.
联立 r r r z z z,得到一个关于 θ 2 \theta_2 θ2 θ 3 \theta_3 θ3的二元一次方程组:
{ r = 2 a 1 ( k 1 c 2 + k 2 s 2 ) + k 3 , z = ( k 1 s 2 − k 2 c 2 ) s α 1 + k 4 . \begin{cases} r= 2a_1(k_1c_2+k_2s_2) + k_3, \\[6pt] z= (k_1s_2-k_2c_2)s_{\alpha_1} + k_4. \end{cases} r=2a1(k1c2+k2s2)+k3,z=(k1s2k2c2)sα1+k4.这时,求解 θ 3 \theta_3 θ3

  1. a 1 = 0 , a_1=0, a1=0, r = k 3 ( θ 3 ) = f 1 2 + f 2 2 + f 3 2 + a 1 2 + d 2 2 + 2 d 2 f 3 . r=k_3(\theta_3)=f_1^2+f_2^2+f_3^2+a_1^2+d_2^2+2d_2f_3. r=k3(θ3)=f12+f22+f32+a12+d22+2d2f3.
  2. s α 1 = 0 , s_{\alpha_1}=0, sα1=0, z = k 4 ( θ 3 ) = f 3 c α 1 + d 2 c α 1 . z=k_4(\theta_3)=f_3c_{\alpha_1}+d_2c_{\alpha_1}. z=k4(θ3)=f3cα1+d2cα1.
  3. 若上述两个特殊条件均不满足,则将两个方程平方相加,可得到 ( r − k 3 ) 2 4 a 1 2 + ( z − k 4 ) 2 s α 1   2 = k 1 2 + k 2 2 . \frac{(r-k_3)^2}{4a_1^2}+\frac{(z-k_4)^2}{s_{\alpha_1}^{\,2}}=k_1^2+k_2^2. 4a12(rk3)2+sα12(zk4)2=k12+k22.
    在这里插入图片描述
    求解 θ 2 \theta_2 θ2 θ 1 \theta_1 θ1
    在求得 θ 3 \theta_3 θ3后,将其代入 r r r,求解 θ 2 \theta_2 θ2 r = 2 a 1 ( k 1 c 2 + k 2 s 2 ) + k 3 , r=2a_1\left(k_1c_2+k_2s_2\right)+k_3, r=2a1(k1c2+k2s2)+k3,;随后,将已经求得的 θ 2 \theta_2 θ2 θ 3 \theta_3 θ3代入 x x x中,求解 θ 1 \theta_1 θ1 x = c 1 g 1 ( θ 2 , θ 3 ) − s 1 g 2 ( θ 2 , θ 3 ) x=c_1g_1(\theta_2,\theta_3)-s_1g_2(\theta_2,\theta_3) x=c1g1(θ2,θ3)s1g2(θ2,θ3)
    在这里插入图片描述至此,Pieper 方法的位置逆解推导完成。整个推导采用了变量分离(Variable Separation)的思想。首先利用齐次变换矩阵 4 3 T {}^{3}_{4}T 43T 的第四列,将末端位置表示为仅与关节变量 θ 3 \theta_3 θ3 有关的中间变量;随后进一步构造关于 θ 2 \theta_2 θ2 θ 3 \theta_3 θ3 的中间变量,并利用 r = x 2 + y 2 + z 2 r=x^2+y^2+z^2 r=x2+y2+z2 消去关节变量 θ 1 \theta_1 θ1,再结合末端高度坐标 z z z 进一步消去 θ 2 \theta_2 θ2,最终得到仅含未知量 θ 3 \theta_3 θ3 的非线性方程。求得 θ 3 \theta_3 θ3 后,再依次回代即可求解 θ 2 \theta_2 θ2 θ 1 \theta_1 θ1,从而完成位置逆运动学的解析求解。

4-3 Pieper’s Solution - 2

在 4-3 Pieper’s Solution - 1中已经将 θ 3 \theta_3 θ3 θ 2 \theta_2 θ2 θ 1 \theta_1 θ1求解出来了,现在需要求解 θ 4 \theta_4 θ4 θ 5 \theta_5 θ5 θ 6 \theta_6 θ6
由之前所述,后三个关节的三个转轴相交于一点(球腕),这三个关节的旋转角度可以通过Z-Y-Z Euler Angles(林沛群机器人之运动学笔记—2)进行求解,现在需要找到DH 定义与欧拉角定义对应关系。由于两种方法建立坐标系的方式不同,导致第 4、6 个关节角相差 180度,而第 5 个关节角保持不变。因此,在利用 Z-Y-Z 欧拉角分解姿态矩阵求解腕部关节时,需要先完成这种角度映射,才能得到符合机器人 DH 模型定义的 θ 4 \theta_4 θ4 θ 5 \theta_5 θ5 θ 6 \theta_6 θ6​。最后得到:
θ 4 ′ = θ 4 + π , θ 5 ′ = θ 5 , θ 6 ′ = θ 6 + π . \begin{aligned} \theta_4' &= \theta_4+\pi,\\ \theta_5' &= \theta_5,\\ \theta_6' &= \theta_6+\pi. \end{aligned} θ4θ5θ6=θ4+π,=θ5,=θ6+π.
其中 θ 4 , θ 5 , θ 6 \theta_4, \theta_5, \theta_6 θ4,θ5,θ6由DH定义, ( θ 4 ′ ,   θ 5 ′ ,   θ 6 ′ ) (\theta_4',\,\theta_5',\,\theta_6') (θ4,θ5,θ6)由Z-Y-Z 欧拉角定义,后续利用 6 3 R = R z  ⁣ ( θ 4 ′ ) R y  ⁣ ( θ 5 ′ ) R z  ⁣ ( θ 6 ′ ) {}^{3}_{6}R= R_z\!\left(\theta_4^{\prime}\right) R_y\!\left(\theta_5^{\prime}\right) R_z\!\left(\theta_6^{\prime}\right) 63R=Rz(θ4)Ry(θ5)Rz(θ6)
即可求出欧拉角,再根据上述关系恢复机器人的关节角。
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐