在之前的博文坐标旋转中,简单介绍了平面坐标系以及三维坐标系中的绕坐标轴旋转运动。在机器人运动中,除了坐标系的旋转外,往往还要考虑平移运动,在三维空间中,刚体的旋转运动可以用绕一根轴的螺旋运动来描述。接下来,我们将逐步引出旋量的概念。
刚体在坐标系中的运动,一般情况下是平移运动与旋转运动的结合,特殊情况是纯平移运动或纯旋转运动。
坐标旋转运动的基本思想在博客坐标旋转中已经有了介绍,这篇文章中只是介绍了绕单轴旋转的情况,对于不是绕单轴的旋转运动,可以由多次绕不同的单轴旋转运动来得到,例如上图中从 A A A系(即参考坐标系)到 B B B系(即本体坐标系),可以通过先绕 A A A的 Z Z Z轴旋转得到 C C C系(图中未画出),再绕 C C C系的 Y Y Y轴来旋转得到 B B B系(这里只是举例说明,也可以有其他的旋转方式)。那么, B B B系中的点在 A A A中的表示方式可为:
p A = A T C ⋅ p C p C = C T B ⋅ p B p A = A T C ⋅ C T B ⋅ p B = A T B ⋅ p B (2-2) \pmb p_A = ^A\pmb T_C\cdot\pmb p_C \\ \pmb p_C = ^C\pmb T_B\cdot\pmb p_B \\ \pmb p_A = ^A\pmb T_C \cdot^C\pmb T_B\cdot\pmb p_B = ^A\pmb T_B\cdot\pmb p_B\tag{2-2} pppA=ATTTC⋅pppCpppC=CTTTB⋅pppBpppA=ATTTC⋅CTTTB⋅pppB=ATTTB⋅pppB(2-2)
上式中, A T B = A T C ⋅ C T B ^A\pmb T_B = ^A\pmb T_C \cdot^C\pmb T_B ATTTB=ATTTC⋅CTTTB,表示从A系旋转到B系的旋转矩阵
总的来说,旋转运动是通过旋转矩阵来描述的。
在上图中, B B B系可由 A A A系先旋转再平移得到,令 q b \pmb q_b qqqb表示 B B B系中 q q q点的坐标, q a \pmb q_a qqqa表示 q q q在 A A A系中的坐标,根据前两节的知识,有:
q a = p a b + A T B ⋅ q b (2-3) \pmb q_a = \pmb p_{ab} +^A\pmb T_B\cdot\pmb q_b \tag{2-3} qqqa=pppab+ATTTB⋅qqqb(2-3)
将上式表示成矩阵形式,有:
[ q a 1 ] = [ A T B p a b 0 1 ] [ q b 1 ] (2-4) \begin{bmatrix} \pmb q_a \\ 1 \end{bmatrix}=\begin{bmatrix} ^A\pmb T_B & \pmb p_{ab} \\ 0 & 1 \end{bmatrix}\begin{bmatrix} \pmb q_b \\ 1 \end{bmatrix} \tag{2-4} [qqqa1]=[ATTTB0pppab1][qqqb1](2-4)
即:
q ‾ a = a g ‾ b ⋅ q ‾ b (2-5) \overline{\pmb q}_a = ^a\overline{\pmb g}_b\cdot\overline{\pmb q}_b \tag{2-5} qqqa=agggb⋅qqqb(2-5)
上式中, q ‾ a = [ q a 1 ] T \overline{\pmb q}_a = \begin{bmatrix} \pmb q_a & 1 \end{bmatrix}^\mathbf{T} qqqa=[qqqa1]T, q ‾ b = [ q b 1 ] T \overline{\pmb q}_b = \begin{bmatrix} \pmb q_b & 1 \end{bmatrix}^\mathbf{T} qqqb=[qqqb1]T, a g ‾ b ^a\overline{\pmb g}_b agggb表示从 A A A系到 B B B系的齐次矩阵,同时包含了旋转运动与平移运动。
考虑图2.5(a)中的单连杆机构在参考坐标系中运动, q q q为旋转轴上的一点, p p p为连杆上的一点,绕单位角速度 ω \pmb\omega ωωω( ω ∈ R 3 \pmb\omega\in \mathbb{R}^3 ωωω∈R3,且 ∥ ω ∥ = 1 \left \| \pmb\omega \right \|=1 ∥ωωω∥=1)做旋转运动。我们知道,角速度方向的确定方法是:遵循右手法则,四指指向运动方向,大拇指指向即角速度方向。因此,在图2.5(a)中,令 p ( t ) \pmb p(t) ppp(t)表示 p p p 点 t t t 时刻在参考坐标系中的坐标, q \pmb q qqq表示 q q q点在参考坐标系中的坐标,则 p q → = p ( t ) − q \overrightarrow{pq}=\pmb p(t) - \pmb q pq=ppp(t)−qqq。因此,根据向量积的物理意义,有 p p p点的线速度为:
p ˙ ( t ) = ω × ( p ( t ) − q ) (3-1) \pmb{\dot p}(t) = \pmb\omega \times (\pmb p(t) - \pmb q) \tag{3-1} p˙p˙p˙(t)=ωωω×(ppp(t)−qqq)(3-1)
令 v = − ω × q \pmb v = -\pmb\omega \times \pmb q vvv=−ωωω×qqq,上式可以写为矩阵形式:
[ p ˙ 0 ] = [ ω ^ v 0 0 ] [ p 1 ] = ξ ^ [ p 1 ] (3-2) \begin{bmatrix} \pmb{\dot p} \\ 0 \end{bmatrix}=\begin{bmatrix} \pmb{\hat \omega} & \pmb v \\ 0 & 0 \end{bmatrix}\begin{bmatrix} \pmb p \\ 1 \end{bmatrix} = \pmb{\hat \xi}\begin{bmatrix} \pmb p \\ 1 \end{bmatrix} \tag{3-2} [p˙p˙p˙0]=[ω^ω^ω^0vvv0][ppp1]=ξ^ξ^ξ^[ppp1](3-2)
式(3-2)中, ω ^ \pmb{\hat \omega} ω^ω^ω^ 表示 ω \pmb\omega ωωω 的反对称矩阵。
在图2.5(b)中,整个单连杆机构以单位速度 v \pmb v vvv做平移运动,那么 p p p 点的速度为:
p ˙ ( t ) = v (3-3) \pmb {\dot p}(t) = \pmb v \tag{3-3} p˙p˙p˙(t)=vvv(3-3)
同样将上式写成矩阵形式,有:
[ p ˙ 0 ] = [ 0 v 0 0 ] [ p 1 ] = ξ ^ v [ p 1 ] (3-4) \begin{bmatrix} \pmb{\dot p} \\ 0 \end{bmatrix}=\begin{bmatrix} 0 & \pmb v \\ 0 & 0 \end{bmatrix}\begin{bmatrix} \pmb p \\ 1 \end{bmatrix} = \pmb{\hat \xi}_v\begin{bmatrix} \pmb p \\ 1 \end{bmatrix} \tag{3-4} [p˙p˙p˙0]=[00vvv0][ppp1]=ξ^ξ^ξ^v[ppp1](3-4)
对比式(3-2)和式(3-4),可以看出,对于平移运动,有 ω = 0 \pmb \omega = \pmb 0 ωωω=000,则有 ξ ^ = ξ ^ v \pmb{\hat\xi} = \pmb{\hat{\xi}}_v ξ^ξ^ξ^=ξ^ξ^ξ^v。因此,我们可以用式(3-5)所示的齐次矩阵同时表示旋转运动与平移运动。
ξ ^ = [ ω ^ v 0 0 ] (3-5) \pmb{\hat \xi}=\begin{bmatrix} \pmb{\hat \omega} & \pmb v \\ 0 & 0 \end{bmatrix} \tag{3-5} ξ^ξ^ξ^=[ω^ω^ω^0vvv0](3-5)
因此,我们可以用微分方程来描述上述运动:
p ‾ ˙ = ξ ^ p ‾ (3-6) \dot{\overline{\pmb p}} = \pmb{\hat \xi} {\overline{\pmb p}} \tag{3-6} ppp˙=ξ^ξ^ξ^ppp(3-6)
式(3-6)中, p ‾ ˙ = [ p ˙ 0 ] T \dot{\overline{\pmb p}} = \begin{bmatrix} \dot{\pmb p} & 0 \end{bmatrix}^\mathbf{T} ppp˙=[ppp˙0]T, p ‾ = [ p 1 ] T {\overline{\pmb p}} = \begin{bmatrix} {\pmb p} & 1 \end{bmatrix}^\mathbf{T} ppp=[ppp1]T。
求解上述微分方程,得:
p ‾ ( t ) = e ξ ^ t p ‾ ( 0 ) (3-7) \overline{\pmb p}(t)=e^{\pmb{\hat \xi}t}\overline{\pmb p}(0) \tag{3-7} ppp(t)=eξ^ξ^ξ^tppp(0)(3-7)
式(3-7)中, p ‾ ( 0 ) \overline{\pmb p}(0) ppp(0)是 p ‾ ( t ) \overline{\pmb p}(t) ppp(t) 在零时刻的值。上式中,矩阵 ξ ^ \pmb{\hat\xi} ξ^ξ^ξ^的指数函数如式(3-8)所示。
e ξ ^ t = I + ξ ^ t + ( ξ ^ t ) 2 2 ! + ( ξ ^ t ) 3 3 ! + ⋯ (3-8) e^{\pmb{\hat \xi}t} = \pmb I +\pmb{\hat\xi}t+\frac{(\pmb{\hat\xi}t)^2}{2!} + \frac{(\pmb{\hat\xi}t)^3}{3!}+\cdots \tag{3-8} eξ^ξ^ξ^t=III+ξ^ξ^ξ^t+2!(ξ^ξ^ξ^t)2+3!(ξ^ξ^ξ^t)3+⋯(3-8)
因为 ω \pmb\omega ωωω是单位角速度,因此 θ = t \theta = t θ=t,因此有
e ξ ^ t = e ξ ^ θ (3-9) e^{\pmb{\hat \xi}t} = e^{\pmb{\hat \xi}\theta} \tag{3-9} eξ^ξ^ξ^t=eξ^ξ^ξ^θ(3-9)
因此, e ξ ^ θ e^{\pmb{\hat \xi}\theta} eξ^ξ^ξ^θ是一点从起始位置到旋转 θ \theta θ 弧度后的位置的变换。
定义六维向量 ξ = ( v , ω ) \pmb \xi=(\pmb v, \pmb \omega) ξξξ=(vvv,ωωω)表示 ξ ^ \pmb{\hat\xi} ξ^ξ^ξ^ 的速度旋量(twist),运算规则是:
[ ω ^ v 0 0 ] ∨ = [ v ω ] (3-10) \begin{bmatrix} \pmb{\hat \omega} & \pmb v \\ 0 & 0 \end{bmatrix}^{\vee} = \begin{bmatrix} \pmb v \\ \pmb{ \omega} \end{bmatrix} \tag{3-10} [ω^ω^ω^0vvv0]∨=[vvvωωω](3-10)
OK,到目前为止,总算是引出了旋量[^1]的概念。
3.1节只是引出了旋量的概念,但是3.1节只是描述了旋转运动与平移运动,如果是旋转加平移呢?图2.7(a)给出了一种类型的刚体运动:先绕空间旋转轴转过 θ \theta θ 角,再沿该轴平移距离 d d d 的刚体运动。这种组合运动称为旋量运动(screw motion)。为了进一步分析方便,我们再定义一个概念,称为旋量的节距 h h h,如式(3-7)所示。
h = ω T v d ∥ ω ∥ 2 (3-11) h = \frac{\pmb{ \omega} ^\mathbf{T} \pmb v_d}{\left \| \pmb \omega \right \|^2} \tag{3-11} h=∥ωωω∥2ωωωTvvvd(3-11)
从上式可以看出, h h h 是平动速度和角速度的比,表示的是平动与转动的比。
对于式(3-7),我们分两种情况来讨论:
1.当 ω = 0 \pmb \omega = \pmb 0 ωωω=000时,认为节距无穷大,这时只有平移运动,如图2.7(b)所示。因为旋转角度为0,故把过原点方向为 v \pmb v vvv的直线作为旋转轴( v \pmb v vvv为一单位矢量)。这时规定,旋量节距为 ∞ \infty ∞,大小为沿 v \pmb v vvv方向的移动量。
2.当 ω ≠ 0 \pmb \omega \neq \pmb 0 ωωω=000时,要求 ∥ ω ∥ = 1 \left \| \pmb\omega \right \|=1 ∥ωωω∥=1, v = − ω × q + h ω \pmb v = -\pmb\omega \times \pmb q + h\pmb\omega vvv=−ωωω×qqq+hωωω。 v \pmb v vvv为什么是这样的形式呢?类比式(3-1),同时考虑旋转运动和平动,那么可以有:
p ˙ ( t ) = ω × ( p ( t ) − q ) + h ω (3-12) \pmb{\dot p}(t) = \pmb\omega \times (\pmb p(t)-\pmb q) + h\pmb\omega \tag{3-12} p˙p˙p˙(t)=ωωω×(ppp(t)−qqq)+hωωω(3-12)
同样将其写成矩阵形式,则有:
[ p ˙ 0 ] = [ ω ^ v 0 0 ] [ p 1 ] = ξ ^ [ p 1 ] (3-13) \begin{bmatrix} \pmb{\dot p} \\ 0 \end{bmatrix}=\begin{bmatrix} \pmb{\hat \omega} & \pmb v \\ 0 & 0 \end{bmatrix}\begin{bmatrix} \pmb p \\ 1 \end{bmatrix} = \pmb{\hat \xi}\begin{bmatrix} \pmb p \\ 1 \end{bmatrix} \tag{3-13} [p˙p˙p˙0]=[ω^ω^ω^0vvv0][ppp1]=ξ^ξ^ξ^[ppp1](3-13)
上式中, v = − ω × q + h ω \pmb v = -\pmb\omega \times \pmb q + h\pmb\omega vvv=−ωωω×qqq+hωωω, v \pmb v vvv 由两部分组成, − ω × q -\pmb\omega \times \pmb q −ωωω×qqq是旋转引起的线速度, h ω h\pmb\omega hωωω 是由平动引起的速度。解上述的微分方程可以得到 p p p 点的位置。
综上所述,由旋转轴上的一点 q q q的坐标,单位角速度 ω \pmb\omega ωωω,以及节距 h h h,即可确定旋量 ξ = ( v , ω ) \pmb \xi = (\pmb v,\pmb \omega) ξξξ=(vvv,ωωω)。
参考文献