主要参考学习资料及插图来源:

《机器人学导论(第4版)》John J.Craig著

台大机器人学之运动学——林沛群

码字不易,求点赞收藏加关注(´•ω•̥`)

有问题欢迎评论区讨论~

操作臂逆运动学

上一章我们讨论了已知关节角,计算工具坐标系相对于固定坐标系的位姿的问题。在本章中我们将研究已知工具坐标系相对于固定坐标系的期望位姿,如何计算一系列满足期望要求的关节角,即逆运动学问题

逆运动学方程的解

解的存在性

研究解是否存在放在操作臂上即研究操作臂的工作空间

可达工作空间(Reachable Workspace):手臂可以用至少一种姿态到达的位置

灵巧工作空间(Dexterous Workspace):手臂可以用任何姿态到达的位置

我们用R(旋转关节)和P(移动关节)的字母组合来简记一个操作臂的关节连接顺序

在上图的处于二维平面的RR操作臂中,如果 l 1 > l 2 l_1>l_2 l1>l2,其可达工作空间为外径 l 1 + l 2 l_1+l_2 l1+l2、内径 l 1 − l 2 l_1-l_2 l1l2的圆环,没有灵巧工作空间;如果 l 1 = l 2 l_1=l_2 l1=l2,其可达空间为半径 l 1 + l 2 l_1+l_2 l1+l2的圆,圆心为灵巧工作空间

如果要让操作臂达到一个三维空间内一般的目标位置和姿态,至少需要六个自由度。当操作臂自由度 n < 6 n<6 n<6时,其工作空间会被局限在仅能由 n n n个独立变量描述的 n n n自由度子空间(Subspace),又由于操作臂关节的活动范围受限,其工作空间是对应的 n n n自由度子空间的子集

在这里插入图片描述

对于上图的RRR操作臂,其工具坐标系的位置局限在由两个独立坐标变量 x x x y y y描述的一个平面内,而姿态局限在该平面中的一个独立旋转角度变量 ϕ \phi ϕ,由此我们用三个独立变量描述出它的三自由度子空间为:

3 0 T = [ c ϕ − s ϕ 0 x s ϕ c ϕ 0 y 0 0 1 0 0 0 0 1 ] ^0_3T=\begin{bmatrix}c_\phi&-s_\phi&0&x\\s_\phi&c_\phi&0&y\\0&0&1&0\\0&0&0&1\end{bmatrix} 30T= cϕsϕ00sϕcϕ000010xy01

而其工作空间则进一步局限在该子空间中满足 x 2 + y 2 ⩽ l 1 + l 2 + l 3 \sqrt{x^2+y^2}\leqslant l_1+l_2+l_3 x2+y2 l1+l2+l3的部分中


)

对于上图的RP操作臂,其工具坐标系的位置局限在由两个独立坐标变量 x x x y y y描述的一个平面内,而姿态也同时由 x x x y y y所决定, 0 Y ^ 2 ^0\hat{Y}_2 0Y^2始终向下, 0 Z ^ 2 ^0\hat{Z}_2 0Z^2与原点的位置矢量同向, 0 X ^ 2 ^0\hat{X}_2 0X^2 0 Y ^ 2 ^0\hat{Y}_2 0Y^2 0 Z ^ 2 ^0\hat{Z}_2 0Z^2叉乘得到,其二自由度工作空间为:

2 0 T = [ y x 2 + y 2 0 x x 2 + y 2 x − x x 2 + y 2 0 y x 2 + y 2 y 0 − 1 0 0 0 0 0 1 ] ^0_2T=\begin{bmatrix}\frac{y}{\sqrt{x^2+y^2}}&0&\frac{x}{\sqrt{x^2+y^2}}&x\\\frac{-x}{\sqrt{x^2+y^2}}&0&\frac{y}{\sqrt{x^2+y^2}}&y\\0&-1&0&0\\0&0&0&1\end{bmatrix} 20T= x2+y2 yx2+y2 x000010x2+y2 xx2+y2 y00xy01

多解问题

由于逆运动学方程是非线性方程,求解过程中往往遇到多解问题

通过上图我们来直观感受:对于同一个绿色末端连杆的目标位姿,根据肘部方向的不同,前两根连杆有深蓝和浅蓝所示的两种方式可以达到

但我们只能选择一个解来执行,因此要有解的选择标准。常见的选择条件一个是要求到达目标位姿的过程中每个运动关节的运动量最小,即就近原则,另一个是考虑运动轨迹中的障碍物。下图直观展示了这两种情况:

解的个数取决于操作臂的关节数量、连杆参数和关节运动范围

对于关节数量,考虑一种极限状态,当一个操作臂在一定长度内有无穷多个关节,即可看做是一根柔性的曲线,对固定的末端姿态,中间段有无穷多个解

对于连杆参数,通常当连杆的非零参数越多,到达某一特定目标的方式也越多。以一个6R操作臂为例,下表展示了解的最大数目与等于零的连杆长度参数的数目之间的关系,非零参数越多,解的最大数目就越大

a i a_i ai 解的个数
a 1 = a 3 = a 5 = 0 a_1=a_3=a_5=0 a1=a3=a5=0 ⩽ 4 \leqslant4 4
a 3 = a 5 = 0 a_3=a_5=0 a3=a5=0 ⩽ 8 \leqslant8 8
a 3 = 0 a_3=0 a3=0 ⩽ 16 \leqslant16 16
所有 a i ≠ 0 a_i\neq0 ai=0 ⩽ 16 \leqslant16 16

而关节运动范围则限制了解的选择

逆运动学方程的解法

与线性方程组不同,非线性方程组没有通用的求解算法,我们只能用两大类解法来求解:封闭解解析解,Closed-form Solutions)和数值解(Numerical Solutions)

封闭解是一个关于方程自变量的解析函数,代入自变量即可解得因变量;数值解通过数值迭代求解。前者的缺点在于不是所有的非线性方程组都有封闭解,后者的缺点在于求解速度慢且不适应多解问题

为此,我们在逆运动学中尽量避免数值解,在设计操作臂的结构时保证其存在封闭解

逆运动学方程封闭解的解法包括代数解法几何解法,前者纯靠代数运算,后者结合问题的几何性质,以下内容以数学计算为主,与机器人理论联系较少,可适当略读

我们先研究开头举例的RRR操作臂来给出这两种解法,对于给定的目标位姿独立变量 ( x , y , ϕ ) (x,y,\phi) (x,y,ϕ),求出三个关节的关节角 ( θ 1 , θ 2 , θ 3 ) (\theta_1,\theta_2,\theta_3) (θ1,θ2,θ3)

代数解法

由前文求解的子空间,用目标位姿参数给出的位姿矩阵为:

3 0 T = [ c ϕ − s ϕ 0 x s ϕ c ϕ 0 y 0 0 1 0 0 0 0 1 ] ^0_3T=\begin{bmatrix}c_\phi&-s_\phi&0&x\\s_\phi&c_\phi&0&y\\0&0&1&0\\0&0&0&1\end{bmatrix} 30T= cϕsϕ00sϕcϕ000010xy01

由正向运动学,用关节变量给出的位姿矩阵为:

3 0 T = [ c 123 − s 123 0 l 1 c 1 + l 2 c 12 s 123 c 123 0 l 1 s 1 + l 2 s 12 0 0 1 0 0 0 0 1 ] ^0_3T=\begin{bmatrix}c_{123}&-s_{123}&0&l_1c_1+l_2c_{12}\\s_{123}&c_{123}&0&l_1s_1+l_2s_{12}\\0&0&1&0\\0&0&0&1\end{bmatrix} 30T= c123s12300s123c123000010l1c1+l2c12l1s1+l2s1201

其中下标数字组合代表对应关节角的和,如 c 12 c_{12} c12表示 cos ⁡ ( θ 1 + θ 2 + θ 3 ) \cos(\theta_1+\theta_2+\theta_3) cos(θ1+θ2+θ3)

两矩阵联立得到四个非线性方程:

c ϕ = c 123 c_\phi=c_{123} cϕ=c123

s ϕ = s 123 s_\phi=s_{123} sϕ=s123

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 2 + y 2 = l 1 2 + l 2 2 + 2 l 1 l 2 c 2 x^2+y^2=l^2_1+l^2_2+2l_1l_2c_2 x2+y2=l12+l22+2l1l2c2

这里利用了三角函数两角和公式

由此求解出 c 2 = x 2 + y 2 − l 1 2 − l 2 2 2 l 1 l 2 c_2=\frac{x^2+y^2-l^2_1-l^2_2}{2l_1l_2} c2=2l1l2x2+y2l12l22

上式有解的条件为等式右侧的值必须在 [ − 1 , 1 ] [-1,1] [1,1]之间,否则说明在物理结构上目标点位置太远,操作臂不可达

假定目标点在工作空间内,则 s 2 = ± 1 − c 2 2 s_2=\pm\sqrt{1-c^2_2} s2=±1c22

θ 2 = Atan2 ( s 2 , c 2 ) \theta_2=\textup{Atan2}(s_2,c_2) θ2=Atan2(s2,c2)

式中正负符号的选择对应“肘部朝上”还是“肘部朝下”的多解问题

接下来求 θ 1 \theta_1 θ1

令:

k 1 = l 1 + l 2 c 2 k_1=l_1+l_2c_2 k1=l1+l2c2

k 2 = l 2 s 2 k_2=l_2s_2 k2=l2s2

则③和④可写成:

x = k 1 c 1 − k 2 s 1 x=k_1c_1-k_2s_1 x=k1c1k2s1

y = k 1 s 1 + k 2 c 1 y=k_1s_1+k_2c_1 y=k1s1+k2c1

求解该类方程可用变量代换改变常数 k 1 k_1 k1 k 2 k_2 k2的形式,如果:

r = k 1 2 + k 2 2 r=\sqrt{k^2_1+k^2_2} r=k12+k22

γ = Atan2 ( k 2 , k 1 ) \gamma=\textup{Atan2}(k_2,k_1) γ=Atan2(k2,k1)

则:

k 1 = r cos ⁡ γ k_1=r\cos\gamma k1=rcosγ

k 2 = r sin ⁡ γ k_2=r\sin\gamma k2=rsinγ

则③和④可进一步写成:

x r = cos ⁡ γ cos ⁡ θ 1 − sin ⁡ γ sin ⁡ θ 1 \frac{x}{r}=\cos\gamma\cos\theta_1-\sin\gamma\sin\theta_1 rx=cosγcosθ1sinγsinθ1

y r = cos ⁡ γ sin ⁡ θ 1 − sin ⁡ γ cos ⁡ θ 1 \frac{y}{r}=\cos\gamma\sin\theta_1-\sin\gamma\cos\theta_1 ry=cosγsinθ1sinγcosθ1

因此:

cos ⁡ ( γ + θ 1 ) = x r \cos(\gamma+\theta_1)=\frac{x}{r} cos(γ+θ1)=rx

sin ⁡ ( γ + θ 1 ) = y r \sin(\gamma+\theta_1)=\frac{y}{r} sin(γ+θ1)=ry

得:

γ + θ 1 = Atan2 ( y r , x r ) = Atan2 ( y , x ) \gamma+\theta_1=\textup{Atan2}(\frac{y}{r},\frac{x}{r})=\textup{Atan2}(y,x) γ+θ1=Atan2(ry,rx)=Atan2(y,x)

从而:

θ 1 = Atan2 ( y , x ) − Atan2 ( k 2 , k 1 ) \theta_1=\textup{Atan2}(y,x)-\textup{Atan2}(k_2,k_1) θ1=Atan2(y,x)Atan2(k2,k1)

最后 θ 3 \theta_3 θ3 θ 1 + θ 2 + θ 3 = ϕ \theta_1+\theta_2+\theta_3=\phi θ1+θ2+θ3=ϕ解出

几何解法

在这里插入图片描述

画出以三个关节为顶点的三角形,由余弦定理得:

x 2 + y 2 = l 1 2 + l 2 2 − 2 l 1 l 2 cos ⁡ ( θ 2 + π ) x^2+y^2=l^2_1+l^2_2-2l_1l_2\cos(\theta_2+\pi) x2+y2=l12+l222l1l2cos(θ2+π)

由此求解出 c 2 = x 2 + y 2 − l 1 2 − l 2 2 2 l 1 l 2 c_2=\frac{x^2+y^2-l^2_1-l^2_2}{2l_1l_2} c2=2l1l2x2+y2l12l22

为求解出 θ 1 \theta_1 θ1,需求出图中 ψ \psi ψ β \beta β的表达式

β \beta β是位置矢量与 X ^ 0 \hat{X}_0 X^0的夹角,可得:

β = Atan2 ( y , x ) \beta=\textup{Atan2}(y,x) β=Atan2(y,x)

可在三角形再次利用余弦定理解出 cos ⁡ ψ = x 2 + y 2 + l 1 2 − l 2 2 2 l 1 x 2 + y 2 \cos\psi=\frac{x^2+y^2+l^2_1-l^2_2}{2l_1\sqrt{x^2+y^2}} cosψ=2l1x2+y2 x2+y2+l12l22

为使几何关系成立,求反余弦需使 0 ⩽ ψ ⩽ π 0\leqslant\psi\leqslant\pi 0ψπ

于是 θ 1 = β ± ψ \theta_1=\beta\pm\psi θ1=β±ψ,当 θ 2 < 0 \theta_2<0 θ2<0取正,当 θ 2 > 0 \theta_2>0 θ2>0取负

最后 θ 3 \theta_3 θ3 θ 1 + θ 2 + θ 3 = ϕ \theta_1+\theta_2+\theta_3=\phi θ1+θ2+θ3=ϕ解出

万能公式

对于单变量的三角函数超越方程,可用万能公式代换化为多项式方程

u = tan ⁡ θ 2 u=\tan\frac{\theta}{2} u=tan2θ

cos ⁡ θ = 1 − u 2 1 + u 2 \cos\theta=\frac{1-u^2}{1+u^2} cosθ=1+u21u2 sin ⁡ θ = 2 u 1 + u 2 \sin\theta=\frac{2u}{1+u^2} sinθ=1+u22u

三轴相交的Pieper解法

尽管一般的六自由度机器人没有封闭解,但在某些特殊情况下还是可解的。Pieper提出了一种求解最后三个连续轴相交于一点的六自由度操作臂的方法,核心思想为让 θ 1 \theta_1 θ1 θ 2 \theta_2 θ2 θ 3 \theta_3 θ3层层分离

当最后三个轴相交时,连杆坐标系 { 4 } \{4\} {4} { 5 } \{5\} {5} { 6 } \{6\} {6}的原点均位于这个交点上,因此:

0 P 6 O R G = 0 P 4 O R G = 1 0 T 2 1 T 3 2 T 3 P 4 O R G = [ x y z 1 ] ^0P_{6ORG}=^0P_{4ORG}=^0_1T^1_2T^2_3T^3P_{4ORG}=\begin{bmatrix}x\\y\\z\\1\end{bmatrix} 0P6ORG=0P4ORG=10T21T32T3P4ORG= xyz1

其中, 3 P 4 O R G ^3P_{4ORG} 3P4ORG 4 3 T ^3_4T 43T的第四列,由第三章中相邻连杆变换矩阵公式代入得:

0 P 4 O R G = 1 0 T 2 1 T 3 2 T [ a 3 − d 4 s α 3 d 4 c α 3 1 ] ^0P_{4ORG}=^0_1T^1_2T^2_3T\begin{bmatrix}a_3\\-d_4s\alpha_3\\d_4c\alpha_3\\1\end{bmatrix} 0P4ORG=10T21T32T a3d4sα3d4cα31

3 2 T ^2_3T 32T乘进去得:

0 P 4 O R G = 1 0 T 2 1 T [ f 1 ( θ 3 ) f 2 ( θ 3 ) f 3 ( θ 3 ) 1 ] ^0P_{4ORG}=^0_1T^1_2T\begin{bmatrix}f_1(\theta_3)\\f_2(\theta_3)\\f_3(\theta_3)\\1\end{bmatrix} 0P4ORG=10T21T f1(θ3)f2(θ3)f3(θ3)1

式中:

f 1 = a 3 c 3 + d 4 s α 3 s 3 + a 2 f_1=a_3c_3+d_4s\alpha_3s_3+a_2 f1=a3c3+d4sα3s3+a2

f 2 = a 3 c α 2 s 3 − d 4 s α 3 c α 2 c 3 − d 4 s α 2 c α 3 − d 3 s α 2 f_2=a_3c\alpha_2s_3-d_4s\alpha_3c\alpha_2c_3-d_4s\alpha_2c\alpha_3-d_3s\alpha_2 f2=a3cα2s3d4sα3cα2c3d4sα2cα3d3sα2

f 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 f_3=a_3s\alpha_2s_3-d_4s\alpha_3s\alpha_2c_3+d_4c\alpha_2c\alpha_3+d_3c\alpha_2 f3=a3sα2s3d4sα3sα2c3+d4cα2cα3+d3cα2

继续将 1 0 T 2 1 T ^0_1T^1_2T 10T21T乘进去得:

0 P 4 O R G = [ c 1 g 1 − s 1 g 2 s 1 g 1 + c 1 g 2 g 3 1 ] ^0P_{4ORG}=\begin{bmatrix}c_1g_1-s_1g_2\\s_1g_1+c_1g_2\\g_3\\1\end{bmatrix} 0P4ORG= c1g1s1g2s1g1+c1g2g31

式中:

g 1 = c 2 f 1 − s 2 f 2 + a 1 g_1=c_2f_1-s_2f_2+a_1 g1=c2f1s2f2+a1

g 2 = s 2 c α 1 f 1 + c 2 c α 1 f 2 − s α 1 f 3 − d 2 s α 1 g_2=s_2c\alpha_1f_1+c_2c\alpha_1f_2-s\alpha_1f_3-d_2s\alpha_1 g2=s2cα1f1+c2cα1f2sα1f3d2sα1

g 3 = s 2 s α 1 f 1 + c 2 s α 1 f 2 + c α 1 f 3 + d 2 c α 1 g_3=s_2s\alpha_1f_1+c_2s\alpha_1f_2+c\alpha_1f_3+d_2c\alpha_1 g3=s2sα1f1+c2sα1f2+cα1f3+d2cα1

现在写出 0 P 4 O R G ^0P_{4ORG} 0P4ORG模的平方的表达式:

r = x 2 + y 2 + z 2 = g 1 2 + g 2 2 + g 3 2 r=x^2+y^2+z^2=g_1^2+g_2^2+g_3^2 r=x2+y2+z2=g12+g22+g32

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 ) 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) r=f12+f22+f32+a12+d22+2d2f3+2a1(c2f1s2f2)

上式与 z = g 3 z=g_3 z=g3联立得到一个方程组:

{ r = ( k 1 c 2 + k 2 s 2 ) 2 a 1 + k 3 z = ( k 1 s 2 − k 2 c 2 ) s α 1 + k 4 \left\{\begin{matrix}r=(k_1c_2+k_2s_2)2a_1+k_3\\z=(k_1s_2-k_2c_2)s\alpha_1+k_4\end{matrix}\right. {r=(k1c2+k2s2)2a1+k3z=(k1s2k2c2)sα1+k4

式中:

k 1 = f 1 k_1=f_1 k1=f1

k 2 = − f 2 k_2=-f_2 k2=f2

k 3 = f 1 2 + f 2 2 + f 3 2 + a 1 2 + d 2 2 + 2 d 2 f 3 k_3=f_1^2+f_2^2+f_3^2+a_1^2+d_2^2+2d_2f_3 k3=f12+f22+f32+a12+d22+2d2f3

k 4 = f 3 c α 1 + d 2 c α 1 k_4=f_3c\alpha_1+d_2c\alpha_1 k4=f3cα1+d2cα1

该方程组的求解分三种情况:

1 ) 1) 1) a 1 = 0 a_1=0 a1=0,则 r = k 3 r=k_3 r=k3 r r r已知, k 3 k_3 k3是关于 θ 3 \theta_3 θ3的一元函数,由万能公式解出 θ 3 \theta_3 θ3

2 ) 2) 2) s α 1 = 0 s\alpha_1=0 sα1=0,则 z = k 4 z=k_4 z=k4 z z z已知, k 4 k_4 k4是关于 θ 3 \theta_3 θ3的一元函数,由万能公式解出 θ 3 \theta_3 θ3

3 ) 3) 3)否则,消元法消去 c 2 c_2 c2 s 2 s_2 s2,得到:

( r − k 3 ) 2 4 a 1 2 + ( z − k 4 ) 2 s 2 α 1 = k 1 2 + k 2 2 \frac{(r-k_3)^2}{4a_1^2}+\frac{(z-k_4)^2}{s^2\alpha_1}=k_1^2+k_2^2 4a12(rk3)2+s2α1(zk4)2=k12+k22

由万能公式得到一个四次方程解出 θ 3 \theta_3 θ3

解出 θ 3 \theta_3 θ3后,可由②解出 θ 2 \theta_2 θ2,由①解出 θ 1 \theta_1 θ1

为了完成求解工作,还需要求出 θ 4 \theta_4 θ4 θ 5 \theta_5 θ5 θ 6 \theta_6 θ6,由于这些轴相交,原点已经确定,故这些关节角只影响末端连杆的姿态。先利用已经解出的 θ 1 \theta_1 θ1 θ 2 \theta_2 θ2 θ 3 \theta_3 θ3算出连杆坐标系 { 4 } \{4\} {4}的初始姿态 0 4 R ∣ θ 4 = 0 ^4_0R|_{\theta_4=0} 04Rθ4=0,再计算出以此为参考坐标系的末端连杆的姿态描述:

6 4 R ∣ θ 4 = 0 = 4 0 R − 1 ∣ θ 4 = 0 6 0 R ^4_6R|_{\theta_4=0}=^0_4R^{-1}|_{\theta_4=0}{}_6^0R 64Rθ4=0=40R1θ4=060R

用欧拉角定义最后三个关节角得到一个旋转矩阵后与 6 4 R ∣ θ 4 = 0 ^4_6R|_{\theta_4=0} 64Rθ4=0联立即可完成求解

关于用欧拉角定义关节角:

由于不同关节角对应的转轴是不同连杆坐标系的关节轴,而欧拉角从始至终都是绕一个坐标系的主轴旋转,因此用欧拉角来描述关节角的变换过程时,我们有时需要使欧拉角在关节角的基础上多转 18 0 ∘ 180^\circ 180,让欧拉角坐标系中的一个主轴能跟下一个连杆坐标系的关节轴对齐,便于用下一次旋转的欧拉角描述下一次旋转的关节角,可结合下图理解,其中连杆坐标系每次从蓝色变换到红色,欧拉角坐标系每次从橙色变换到绿色


本章完

Logo

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

更多推荐