[Modern Robotics] 3 -刚体运动与旋量

刚体运动与旋量

实际上,齐次变换矩阵 T T T 与旋转矩阵 R R R 类似,旋量轴 S S S 与旋转轴 w ^ \hat{w} w^ 类似, 旋量 V V V 可以用 S θ ˙ S\dot{\theta} Sθ˙ 来表示,与角速度 w = w ^ θ ˙ w = \hat{w}\dot{\theta} w=w^θ˙ 类似。刚体运动指数坐标 S θ ∈ R 6 S\theta \in \mathbb{R}^6 SθR6 与旋转指数坐标 w ^ θ \hat{w}\theta w^θ 类似。

齐次变换矩阵

我们现在考虑将刚体的方向与位置结合在一起的表达。一个自然的想法是用一个旋转矩阵 R ∈ S O ( 3 ) R \in SO(3) RSO(3) 来表示刚体坐标系 { b } \{b\} {b} 在固定坐标系 { s } \{s\} {s} 中的方向,用一个向量 p ∈ R 3 p \in \mathbb{R}^3 pR3 来表示刚体坐标系 { b } \{b\} {b} 的原点在固定坐标系 { s } \{s\} {s} 中的位置。也可以将他们放到一个矩阵中。

定义
特殊欧氏群:即齐此变换矩阵,是 4 × 4 4 \times 4 4×4 的实矩阵的集合,并有如下形式:
(3.62) T = [ R p 0 1 ] = [ r 11 r 12 r 13 p 1 r 21 r 22 r 23 p 2 r 31 r 32 r 33 p 3 0 0 0 1 ] T = \left[ \begin{matrix} R \quad p \\ 0 \quad 1 \end{matrix} \right] = \left[ \begin{matrix} r_{11} & r_{12} & r_{13} & p_1\\ r_{21} & r_{22} & r_{23} & p_2 \\ r_{31} & r_{32} & r_{33} & p_3 \\ 0 & 0 & 0 & 1 \end{matrix} \right] \tag{3.62} T=[Rp01]=r11r21r310r12r22r320r13r23r330p1p2p31(3.62)
许多的机器人运动都在平面内,我们有如下定义:

定义
特殊欧氏群 S E ( 2 ) SE(2) SE(2) 3 × 3 3 \times 3 3×3 实矩阵:
(3.63) T = [ R p 0 1 ] T = \left[ \begin{matrix} R \quad p \\ 0 \quad 1 \end{matrix} \right] \tag{3.63} T=[Rp01](3.63)
其中, R ∈ S O ( 2 ) , p ∈ R 2 R \in SO(2),p \in \mathbb{R}^2 RSO(2)pR2
矩阵 T ∈ S E ( 2 ) , 通 常 有 如 下 形 式 : T \in SE(2),通常有如下形式: TSE(2)
T = [ r 11 r 12 p 1 r 21 r 22 p 2 0 0 1 ] = [ c o s θ − s i n θ p 1 s i n θ c o s θ p 2 0 0 1 ] T = \left[ \begin{matrix} r_{11} & r_{12} & p_1 \\ r_{21} & r_{22} & p_2 \\ 0 & 0 & 1 \end{matrix} \right] = \left[ \begin{matrix} cos\theta & -sin\theta & p_1 \\ sin\theta & cos\theta & p_2 \\ 0 & 0 & 1 \end{matrix} \right] T=r11r210r12r220p1p21=cosθsinθ0sinθcosθ0p1p21
其中, θ ∈ [ 0 , 2 π ) \theta \in [0, 2\pi) θ[0,2π)

齐次变换矩阵的性质

定义:齐次变换矩阵 T ∈ S E ( 3 ) T \in SE(3) TSE(3) 的逆也是一个变换矩阵,具有如下形式:
(3.64) T − 1 = [ R p 0 1 ] − 1 = [ R T − R T p 0 1 ] T^{-1} = \left[ \begin{matrix} R \quad p \\ 0 \quad 1 \end{matrix} \right]^{-1} = \left[ \begin{matrix} R^T & -R^Tp \\ 0 & 1 \end{matrix} \right] \tag{3.64} T1=[Rp01]1=[RT0RTp1](3.64)
定义:两个齐次变换矩阵的积也是一个变换矩阵。

定义:变换矩阵相乘满足结合律,所以 ( T 1 T 2 ) T 3 = T 1 ( T 2 T 3 ) (T_1T_2)T_3 = T_1(T_2T_3) (T1T2)T3=T1(T2T3),但是通常不满足交换律。

定义:给定 T = ( R , p ) ∈ S E ( 3 ) , x , y ∈ R 3 T = (R, p) \in SE(3) , x, y \in \mathbb{R}^3 T=(R,p)SE(3),x,yR3,下列等式成立:

  1. ∣ ∣ T x − T y ∣ ∣ = ∣ ∣ x − y ∣ ∣ ||Tx - Ty|| = ||x-y|| TxTy=xy,其中 ∣ ∣ . ∣ ∣ ||.|| .是标准欧氏范数,即 ∣ ∣ x ∣ ∣ = x T x ||x|| = \sqrt{x^Tx} x=xTx
  2. &lt; T x − T z , T y − T z &gt; = &lt; x − z , y − z &gt; &lt;Tx - Tz, Ty-Tz&gt; = &lt;x-z,y-z&gt; <TxTz,TyTz>=<xz,yz>,对于 z ∈ R 3 z \in \mathbb{R}^3 zR3,其中 &lt; . , . &gt; &lt;.,.&gt; <.,.> R 3 \mathbb{R}^3 R3标准欧氏内积,即 &lt; x , y &gt; = x T y &lt;x,y&gt; = x^Ty <x,y>=xTy

在上述定义中, T T T 是被当做一个对一个点的变换。 T T T 使一个点从 x x x 变到 T x Tx Tx。性质1断言 T T T 保持距离,性质2断言 T T T 保持角度。特别地,如果 x , y , z ∈ R 3 x,y,z \in \mathbb{R}^3 x,y,zR3 代表一个三角形的三个顶点,那么由 { T x , T y , T z } \{Tx, Ty, Tz\} {Tx,Ty,Tz} 组成的三角形与之有相同的长度与角度。

变换矩阵的使用

与旋转矩阵类似,变换矩阵 T T T 也有三个主要通途:

  1. 表征一个刚体的位置与方向。
  2. 改变向量或坐标系的参考坐标系。
  3. 移动一个向量或坐标系。

如图3.14所示,有三个参考坐标系 { a } , { b } , { c } \{a\}, \{b\},\{c\} {a},{b},{c},和一个点 v v v

表征方向及位置
固定坐标系 { s } \{s\} {s} { a } \{a\} {a}重合,变换矩阵分别为 T s a = ( R s a , p s a ) , T s b = ( R s b , p s b ) , T s c = ( R s c , p s c ) T_{sa} = (R_{sa}, p_{sa}), T_{sb} = (R_{sb}, p_{sb}), T_{sc}=(R_{sc}, p_{sc}) Tsa=(Rsa,psa),Tsb=(Rsb,psb),Tsc=(Rsc,psc)。用如下矩阵表示:
R s a = [ 1 0 0 0 1 0 0 0 1 ] , R s b = [ 0 0 1 0 − 1 0 1 0 0 ] , R s c = [ − 1 0 0 0 0 1 0 1 0 ] . R_{sa} = \left[ \begin{matrix} 1 &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1 \end{matrix} \right], R_{sb} = \left[ \begin{matrix} 0 &amp; 0 &amp; 1 \\ 0 &amp; -1 &amp; 0 \\ 1 &amp; 0 &amp; 0 \end{matrix} \right], R_{sc} = \left[ \begin{matrix} -1 &amp; 0 &amp; 0 \\ 0 &amp; 0 &amp; 1 \\ 0 &amp; 1 &amp; 0 \end{matrix} \right]. Rsa=100010001,Rsb=001010100,Rsc=100001010.
原点位置相对于 { s } \{s\} {s} 写作:
p s a = [ 0 0 0 ] , p s b = [ 0 − 2 0 ] , p s a = [ − 1 1 0 ] . p_{sa} = \left[ \begin{matrix} 0 \\ 0 \\ 0 \end{matrix} \right], p_{sb} = \left[ \begin{matrix} 0 \\ -2 \\ 0 \end{matrix} \right], p_{sa} = \left[ \begin{matrix} -1 \\ 1 \\ 0 \end{matrix} \right]. psa=000,psb=020,psa=110.
由于 { a } \{a\} {a} { s } \{s\} {s} 一致,所以由 ( R s a , p s a ) (R_{sa},p_{sa}) (Rsa,psa) 构成的 T s a T_{sa} Tsa 是单位阵。
任何一个坐标系可以相对于任意一个坐标系来表示,并不只是 { s } \{s\} {s} ;比如 T b c = ( R b c , p b c ) T_{bc} = (R_{bc}, p_{bc}) Tbc=(Rbc,pbc) 表示 { b } \{b\} {b}相对于 { c } \{c\} {c}的位置及方向:
R b c = [ 0 1 0 0 0 − 1 − 1 0 0 ] , p b c = [ 0 − 3 − 1 ] . R_{bc} = \left[ \begin{matrix} 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; -1 \\ -1 &amp; 0 &amp; 0 \end{matrix} \right], p_{bc} = \left[ \begin{matrix} 0 \\ -3 \\ -1 \end{matrix} \right]. Rbc=001100010,pbc=031.
同样,对于任意坐标系 { d } \{d\} {d} { e } \{e\} {e},有:
T d e = T e d − 1 T_{de} = T_{ed}^{-1} Tde=Ted1
改变向量或坐标系的参考坐标系
同样可以用下标去除原则来进行切换,如对任意的坐标系 { a } \{a\} {a} { b } \{b\} {b} { c } \{c\} {c},或任意向量 v v v { b } \{b\} {b}中表示为 v b v_b vb,有:
T a b T b c = T a b / T b / c = T a c T a b v b = T a b / v b / = v a T_{ab}T_{bc} = T_{a{b\mkern-7mu/}}T_{{b\mkern-7mu/}c} = \quad T_{ac} \\ T_{ab}v_b = T_{a{b\mkern-7mu/}}v_{b\mkern-7mu/} = \quad v_a TabTbc=Tab/Tb/c=TacTabvb=Tab/vb/=va
其中, v a v_a va 是向量 v v v { a } \{a\} {a}中的表示。

移动(旋转和平移)一个向量或坐标系
变换矩阵 T T T 可以认为是 ( R , p ) = ( R o t ( w ^ , θ ) , p ) (R,p) = (Rot(\hat{w},\theta),p) (R,p)=(Rot(w^,θ),p) 组成的对,能够作用于一个坐标系使其绕轴 w ^ \hat{w} w^ 旋转 θ \theta θ 角度,再进行 p p p 平移,我们把一个只包含旋转的 4 × 4 4\times 4 4×4 矩阵记为:
R o t ( w ^ , θ ) = [ R 0 0 1 ] , Rot(\hat{w},\theta) = \left[ \begin{matrix} R &amp; 0 \\ 0 &amp; 1 \end{matrix} \right], Rot(w^,θ)=[R001],
同样定义一个只包含平移的矩阵为:
T r a n s ( p ) = [ 1 0 0 p x 0 1 0 p y 0 0 1 p z 0 0 0 1 ] . Trans(p) = \left[ \begin{matrix} 1 &amp; 0 &amp; 0 &amp; p_x \\ 0 &amp; 1 &amp; 0 &amp; p_y \\ 0 &amp; 0 &amp; 1 &amp; p_z \\ 0 &amp; 0 &amp; 0 &amp; 1 \end{matrix} \right]. Trans(p)=100001000010pxpypz1.
沿着单位向量 p ^ \hat{p} p^ 的方向移动 ∣ ∣ p ∣ ∣ ||p|| p 距离,也记为 T r a n s ( p ^ , ∣ ∣ p ∣ ∣ ) Trans(\hat{p}, ||p||) Trans(p^,p) p = p ^ ∣ ∣ p ∣ ∣ p = \hat{p}||p|| p=p^p
左乘还是右乘 T = ( R , p ) T = (R,p) T=(R,p) 决定了 w ^ , p \hat{w},p w^p 是在固定坐标系中,还是在刚体坐标系中。
(3.66) T s b ′ = T T s b = T r a n s ( p ) R o t ( w ^ , θ ) T s b ( f i x e d f r a m e ) = [ R p 0 1 ] [ R s b p s b 0 1 ] = [ R R s b R p s b + p 0 1 ] \begin{aligned} T_{sb&#x27;} &amp;= TT_{sb} = Trans(p)Rot(\hat{w},\theta)T_{sb} \quad \quad \quad (fixed \quad frame) \\ &amp;=\left[ \begin{matrix} R &amp; p \\ 0 &amp; 1 \end{matrix} \right] \left[ \begin{matrix} R_{sb} &amp; p_{sb} \\ 0 &amp; 1 \end{matrix} \right] = \left[ \begin{matrix} RR_{sb} &amp; Rp_{sb} + p \\ 0 &amp; 1 \end{matrix} \right] \tag{3.66} \end{aligned} Tsb=TTsb=Trans(p)Rot(w^,θ)Tsb(fixedframe)=[R0p1][Rsb0psb1]=[RRsb0Rpsb+p1](3.66)
(3.67) T s b ′ ′ = T s b T = T s b T r a n s ( p ) R o t ( w ^ , θ ) ( b o d y f r a m e ) = [ R s b p s b 0 1 ] [ R p 0 1 ] = [ R s b R R s b p + p s b 0 1 ] \begin{aligned} T_{sb&#x27;&#x27;} &amp;= T_{sb}T = T_{sb}Trans(p)Rot(\hat{w},\theta) \quad \quad \quad (body \quad frame) \\ &amp;=\left[ \begin{matrix} R_{sb} &amp; p_{sb} \\ 0 &amp; 1 \end{matrix} \right] \left[ \begin{matrix} R &amp; p \\ 0 &amp; 1 \end{matrix} \right] = \left[ \begin{matrix} R_{sb}R &amp; R_{sb}p + p_{sb} \\ 0 &amp; 1 \end{matrix} \right] \tag{3.67} \end{aligned} Tsb=TsbT=TsbTrans(p)Rot(w^,θ)(bodyframe)=[Rsb0psb1][R0p1]=[RsbR0Rsbp+psb1](3.67)
在固定坐标系下进行的变换(左乘 T T T),可以这样来解释:首先将 { b } \{b\} {b}坐标系绕着 { s } \{s\} {s}中的轴 w ^ \hat{w} w^ 进行 θ \theta θ 角度的旋转,再进行 { s } \{s\} {s}中的 p p p 平移,得到最终坐标系 { b ′ } \{b&#x27;\} {b}

而在刚体坐标系中的变换(右乘 T T T),解释为:先进行 { b } \{b\} {b}中的 p p p 平移,然后绕着新坐标系中的 w ^ \hat{w} w^ 旋转,得到 { b ′ ′ } \{b&#x27;&#x27;\} {b}

固定坐标系及刚体坐标系中的变换如下图3.15,其中 w ^ = ( 0 , 0 , 1 ) , θ = 90 ° , p = ( 0 , 2 , 0 ) \hat{w} = (0,0,1), \theta = 90°, p = (0,2,0) w^=(0,0,1),θ=90°,p=(0,2,0),于是:
在这里插入图片描述
T = ( R o t ( w ^ , θ ) , p ) = [ 0 − 1 0 0 1 0 0 2 0 0 1 0 0 0 0 1 ] . T = (Rot(\hat{w},\theta) ,p) = \left[ \begin{matrix} 0 &amp; -1 &amp; 0 &amp; 0 \\ 1 &amp; 0 &amp; 0 &amp; 2 \\ 0 &amp; 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 0 &amp; 1 \end{matrix} \right]. T=(Rot(w^,θ),p)=0100100000100201.
{ b } \{b\} {b}相对于 { s } \{s\} {s}为:
T s b = [ 0 0 1 0 0 − 1 0 − 2 1 0 0 0 0 0 0 1 ] , T_{sb} = \left[ \begin{matrix} 0 &amp; 0 &amp; 1 &amp; 0 \\ 0 &amp; -1 &amp; 0 &amp; -2 \\ 1 &amp; 0 &amp; 0 &amp; 0 \\ 0 &amp; 0 &amp; 0 &amp; 1 \end{matrix} \right], Tsb=0010010010000201,
针对固定坐标系,刚体坐标系的两个变换分别如下:
T T s b = T s b ′ = [ 0 1 0 2 0 0 1 2 1 0 0 0 0 0 0 1 ] , T s b T = T s b ′ ′ = [ 0 0 1 0 − 1 0 0 − 4 0 − 1 0 0 0 0 0 1 ] . TT_{sb} = T_{sb&#x27;} = \left[ \begin{matrix} 0 &amp; 1 &amp; 0 &amp; 2 \\ 0 &amp; 0 &amp; 1 &amp; 2 \\ 1 &amp; 0 &amp; 0 &amp; 0 \\ 0 &amp; 0 &amp; 0 &amp; 1 \end{matrix} \right], \quad T_{sb}T = T_{sb&#x27;&#x27;} = \left[ \begin{matrix} 0 &amp; 0 &amp; 1 &amp; 0 \\ -1 &amp; 0 &amp; 0 &amp; -4 \\ 0 &amp; -1 &amp; 0 &amp; 0 \\ 0 &amp; 0 &amp; 0 &amp; 1 \end{matrix} \right]. TTsb=Tsb=0010100001002201,TsbT=Tsb=0100001010000401.

旋量

我们现在考虑一个移动坐标系的线速度与角速度。如:
(3.68) T s b ( t ) = T ( t ) = [ R ( t ) p ( t ) 0 1 ] T_{sb}(t) = T(t) = \left[ \begin{matrix} R(t) &amp; p(t) \\ 0 &amp; 1 \end{matrix} \right] \tag{3.68} Tsb(t)=T(t)=[R(t)0p(t)1](3.68)
上式表达的是 { b } \{b\} {b}相对于 { s } \{s\} {s}的方向及位置。我们用 T T T 来替代 T s b T_{sb} Tsb
在前述章节,我们通过 R ˙ R − 1 \dot{R}R^{-1} R˙R1 R − 1 R ˙ R^{-1}\dot{R} R1R˙ 分别得到了在固定坐标系与刚体坐标系中的角速度向量的反对称矩阵表示。那对于变换矩阵 T T T呢?

让我们先看 T − 1 T ˙ T^{-1}\dot{T} T1T˙
(3.69) T − 1 T ˙ = [ R T − R T p 0 1 ] [ R ˙ p ˙ 0 0 ] = [ R T R ˙ R T p ˙ 0 0 ] = [ [ w b ] v b 0 0 ] . \begin{aligned} T^{-1}\dot{T} &amp;= \left[ \begin{matrix} R^T &amp; -R^Tp \\ 0 &amp; 1 \end{matrix} \right] \left[ \begin{matrix} \dot{R} &amp; \dot{p} \\ 0 &amp; 0 \end{matrix} \right] \\ &amp;=\left[ \begin{matrix} R^T\dot{R} &amp; R^T\dot{p} \\ 0 &amp; 0 \end{matrix} \right] \\ &amp;= \left[ \begin{matrix} [w_b] &amp; v_b \\ 0 &amp; 0 \end{matrix} \right]. \end{aligned} \tag{3.69} T1T˙=[RT0RTp1][R˙0p˙0]=[RTR˙0RTp˙0]=[[wb]0vb0].(3.69)
回忆下, R T R ˙ = [ w b ] R^T\dot{R} = [w_b] RTR˙=[wb] 正是相对于 { b } \{b\} {b}中的角速度的反对称阵表达。同样, p ˙ \dot{p} p˙ { b } \{b\} {b}的原点在 { s } \{s\} {s}中的线速度,而 R T p ˙ = v b R^T\dot{p} = v_b RTp˙=vb 是这个线速度相对于 { b } \{b\} {b}坐标系的表示。把这两项放在一起,我们可以认为 T − 1 T ˙ T^{-1}\dot{T} T1T˙ 表示的是相对于刚体坐标系的线速度与角速度。
自然的,我们会想到把结果的 w b , v b w_b, v_b wb,vb 结合成一个六维速度向量。我们定义刚体坐标系下的空间速度(spatial velocity)或者称(body twist)为:
(3.70) V b = [ w b v b ] ∈ R 6 . \mathcal{V}_b = \left[ \begin{matrix} w_b \\ v_b \end{matrix} \right] \in \mathbb{R}^6. \tag{3.70} Vb=[wbvb]R6.(3.70)
正如我们用一个反对称阵表示角速度向量一样,我们也用一个矩阵表示旋量:
(3.71) T − 1 T ˙ = [ V b ] = [ [ w b ] v b 0 0 ] ∈ s e ( 3 ) , T^{-1}\dot{T}= [\mathcal{V}_b] = \left[ \begin{matrix} [w_b] &amp; v_b \\ 0 &amp; 0 \end{matrix} \right] \in se(3), \tag{3.71} T1T˙=[Vb]=[[wb]0vb0]se(3)(3.71)
其中, [ w b ] ∈ s o ( 3 ) , v b ∈ R 3 [w_b] \in so(3), v_b \in \mathbb{R}^3 [wb]so(3),vbR3

让我们看看 T ˙ T − 1 \dot{T}T^{-1} T˙T1
(3.72) T ˙ T − 1 = [ R ˙ p ˙ 0 0 ] [ R T − R T p 0 1 ] = [ R ˙ R T p ˙ − R ˙ R T p ˙ 0 0 ] = [ [ w s ] v s 0 0 ] . \begin{aligned} \dot{T}T^{-1} &amp;= \left[ \begin{matrix} \dot{R} &amp; \dot{p} \\ 0 &amp; 0 \end{matrix} \right] \left[ \begin{matrix} R^T &amp; -R^Tp \\ 0 &amp; 1 \end{matrix} \right] \\ &amp;=\left[ \begin{matrix} \dot{R}R^T &amp; \dot{p}-\dot{R}R^T\dot{p} \\ 0 &amp; 0 \end{matrix} \right] \\ &amp;= \left[ \begin{matrix} [w_s] &amp; v_s \\ 0 &amp; 0 \end{matrix} \right]. \end{aligned} \tag{3.72} T˙T1=[R˙0p˙0][RT0RTp1]=[R˙RT0p˙R˙RTp˙0]=[[ws]0vs0].(3.72)
注意到,反对称阵 [ w s ] = R ˙ R T [w_s] = \dot{R}R^T [ws]=R˙RT 是在固定坐标系下的角速度,但是 v s = p ˙ − R ˙ R T p ˙ v_s = \dot{p}-\dot{R}R^T\dot{p} vs=p˙R˙RTp˙ 却不是刚体坐标系的原点在固定坐标系下的速度。如果我们写成:
(3.73) v s = p ˙ − w s × p = p ˙ + w s × ( − p ) , v_s = \dot{p} -w_s \times p = \dot{p} + w_s \times (-p), \tag{3.73} vs=p˙ws×p=p˙+ws×(p),(3.73)
v s v_s vs 的物理意义可以推断出:假设移动的刚体无限大, v s v_s vs 是指固定坐标系的原点作为刚体上的一点在此时的瞬时速度。如图3.17。
在这里插入图片描述
我们也将 w s , v s w_s, v_s ws,vs 写成一个六维旋量:
(3.74) V s = [ w s v s ] ∈ R 6 , [ V s ] = [ [ w s ] v s 0 0 ] = T ˙ T − 1 ∈ s e ( 3 ) , \mathcal{V}_s = \left[ \begin{matrix} w_s \\ v_s \end{matrix} \right] \in \mathbb{R}^6, \quad [\mathcal{V}_s] = \left[ \begin{matrix} [w_s] &amp; v_s \\ 0 &amp; 0 \end{matrix} \right] = \dot{T}T^{-1} \in se(3), \tag{3.74} Vs=[wsvs]R6,[Vs]=[[ws]0vs0]=T˙T1se(3),(3.74)
其中 [ V s ] [\mathcal{V}_s] [Vs] V s \mathcal{V}_s Vs 的矩阵表示。我们称 V s \mathcal{V}_s Vs 为空间坐标系下的空间速度或者空间旋量。

如果我们假设移动的刚体是无限大的,那么在 V s = ( w s , v s ) \mathcal{V}_s =(w_s, v_s) Vs=(ws,vs) V b = ( w b , v b ) \mathcal{V}_b =(w_b, v_b) Vb=(wb,vb) 有一个自然有趣的对称性。

  1. [ w b ] 是 在 { b } 坐 标 系 下 的 角 速 度 [w_b] 是在\{b\}坐标系下的角速度 [wb]{b} [ w s ] 是 在 { s } 坐 标 系 下 的 角 速 度 [w_s] 是在\{s\}坐标系下的角速度 [ws]{s}
  2. [ v b ] 是 { b } 坐 标 系 的 原 点 在 { b } 坐 标 系 下 的 线 速 度 , [ v s ] 是 { s } 的 原 点 在 { s } 坐 标 系 下 的 线 速 度 [v_b] 是\{b\}坐标系的原点在\{b\}坐标系下的线速度,[v_s] 是\{s\}的原点在\{s\}坐标系下的线速度 [vb]{b}{b}线[vs]{s}{s}线

我们可以从 V s \mathcal{V}_s Vs 推出 V b \mathcal{V}_b Vb
(3.75) [ V b ] = T − 1 T ˙ = T − 1 [ V s ] T . [\mathcal{V}_b] = T^{-1}\dot{T} = T^{-1}[\mathcal{V}_s]T. \tag{3.75} [Vb]=T1T˙=T1[Vs]T.(3.75)
反过来有:
(3.76) [ V s ] = T [ V b ] T − 1 . [\mathcal{V}_s] = T[\mathcal{V}_b]T^{-1}. \tag{3.76} [Vs]=T[Vb]T1.(3.76)
对式(3.76)展开有:
[ V s ] = [ R [ w b ] R T − R [ w b ] R T p + R v b 0 0 ] [\mathcal{V}_s] = \left[ \begin{matrix} R[w_b]R^T &amp; -R[w_b]R^Tp + Rv_b \\ 0 &amp; 0 \end{matrix} \right] [Vs]=[R[wb]RT0R[wb]RTp+Rvb0]
其中, R [ w ] R T = [ R w ] , [ w ] p = − [ p ] w R[w]R^T =[Rw],[w]p = -[p]w R[w]RT=[Rw][w]p=[p]w,可以整理成:
[ w s v s ] = [ R 0 [ p ] R R ] [ w b v b ] . \left[ \begin{matrix} w_s\\ v_s \end{matrix} \right] = \left[ \begin{matrix} R &amp; 0\\ [p]R &amp; R \end{matrix} \right] \left[ \begin{matrix} w_b\\ v_b \end{matrix} \right] . [wsvs]=[R[p]R0R][wbvb].
定义
给定一个矩阵 T = ( R , p ) ∈ S E ( 3 ) T = (R,p) \in SE(3) T=(R,p)SE(3),其伴随表示为:
[ A d T ] = [ R 0 [ p ] R R ] ∈ R 6 × 6 . [Ad_T] = \left[ \begin{matrix} R &amp; 0\\ [p]R &amp; R \end{matrix} \right] \in \mathbb{R}^{6 \times 6}. [AdT]=[R[p]R0R]R6×6.
对于任意的 V ∈ R 6 \mathcal{V} \in \mathbb{R}^6 VR6,与 T T T 关联的伴随表示为:
V ′ = [ A d T ] V , \mathcal{V &#x27;} = [Ad_T]\mathcal{V}, V=[AdT]V,
也可以写作:
V ′ = A d T ( V ) . \mathcal{V &#x27;} = Ad_T(\mathcal{V}). V=AdT(V).
对于 [ V ] ∈ s e ( 3 ) , V ∈ R 6 [\mathcal{V}] \in se(3), \mathcal{V} \in \mathbb{R}^6 [V]se(3),VR6,有:
[ V ′ ] = T [ V ] T − 1 . [\mathcal{V &#x27;}] = T[\mathcal{V}]T^{-1}. [V]=T[V]T1.
并且有如下性质:

  1. A d T 1 ( A d T 2 ( V ) ) = A d T 1 T 2 ( V ) Ad_{T_1}(Ad_{T_2}(\mathcal{V})) = Ad_{T_1T_2}(\mathcal{V}) AdT1(AdT2(V))=AdT1T2(V)
  2. [ A d T 1 ] [ A d T 2 ] ( V ) = [ A d T 1 T 2 ] V [Ad_{T_1}][Ad_{T_2}](\mathcal{V}) = [Ad_{T_1T_2}]\mathcal{V} [AdT1][AdT2](V)=[AdT1T2]V
  3. 对于任意 T ∈ S E ( 3 ) T \in SE(3) TSE(3) [ A d T ] − 1 = [ A d T − 1 ] [Ad_T]^{-1} = [Ad_{T^{-1}}] [AdT]1=[AdT1]

旋量小结

总结一下上面的旋量知识点。

定理
给定一个固定空间坐标系 {s},一个刚体坐标系 {b},和一个变换 T s b ( t ) ∈ S E ( 3 ) T_{sb}(t) \in SE(3) Tsb(t)SE(3), 其中:
(3.80) T s b ( t ) = [ R ( t ) p ( t ) 0 1 ] , T_{sb}(t) = \left[ \begin{matrix} R(t) &amp; p(t) \\ 0 &amp; 1 \end{matrix} \right] ,\tag{3.80} Tsb(t)=[R(t)0p(t)1],(3.80)
那么有:
(3.81) T s b − 1 T s b ˙ = [ V b ] = [ [ w b ] v b 0 0 ] ∈ s e ( 3 ) T_{sb}^{-1}\dot{T_{sb}} = [\mathcal{V}_b] = \left[ \begin{matrix} [w_b] &amp; v_b \\ 0 &amp; 0 \end{matrix} \right] \in se(3) \tag{3.81} Tsb1Tsb˙=[Vb]=[[wb]0vb0]se(3)(3.81)
同样有:
(3.82) T s b ˙ T s b − 1 = [ V s ] = [ [ w s ] v s 0 0 ] ∈ s e ( 3 ) \dot{T_{sb}}T_{sb}^{-1} = [\mathcal{V}_s] = \left[ \begin{matrix} [w_s] &amp; v_s \\ 0 &amp; 0 \end{matrix} \right] \in se(3) \tag{3.82} Tsb˙Tsb1=[Vs]=[[ws]0vs0]se(3)(3.82)
V s \mathcal{V}_s Vs V b \mathcal{V}_b Vb 的关系如下:
(3.83) V s = [ w s v s ] = [ R 0 [ p ] R R ] [ w b v b ] = [ A d T s b ] V b \mathcal{V}_s = \left[ \begin{matrix} w_s \\ v_s \end{matrix} \right] = \left[ \begin{matrix} R &amp; 0 \\ [p]R &amp; R \end{matrix} \right] \left[ \begin{matrix} w_b \\ v_b \end{matrix} \right] =[Ad_{T_{sb}}]\mathcal{V}_b \tag{3.83} Vs=[wsvs]=[R[p]R0R][wbvb]=[AdTsb]Vb(3.83)
(3.84) V b = [ w b v b ] = [ R T 0 − R T [ p ] R T ] [ w s v s ] = [ A d T b s ] V s \mathcal{V}_b = \left[ \begin{matrix} w_b \\ v_b \end{matrix} \right] = \left[ \begin{matrix} R^T &amp; 0 \\ -R^T[p] &amp; R^T \end{matrix} \right] \left[ \begin{matrix} w_s \\ v_s \end{matrix} \right] =[Ad_{T_{bs}}]\mathcal{V}_s \tag{3.84} Vb=[wbvb]=[RTRT[p]0RT][wsvs]=[AdTbs]Vs(3.84)
更一般的,对于任意两个坐标系 { c } , { d } \{c\}, \{d\} {c},{d},旋量的表达为:
V c = [ A d T c d ] V d , V d = [ A d T d c ] V c . \mathcal{V}_c = [Ad_{T_{cd}}]\mathcal{V}_d, \quad \mathcal{V}_d = [Ad_{T_{dc}}]\mathcal{V}_c. Vc=[AdTcd]Vd,Vd=[AdTdc]Vc.

旋量的螺旋解释

正如角速度 w w w 可以看做是 w ^ θ ˙ \hat{w}\dot{\theta} w^θ˙,旋量 V \mathcal{V} V 可以看做是旋量轴 S \mathcal{S} S 的旋转,且速度为 θ ˙ \dot{\theta} θ˙
旋量轴的运动与螺旋类似,绕着这跟轴转且伴随沿着轴的平移运动。旋量轴的一种表示为: S \mathcal{S} S { q , s ^ , h } \{q, \hat{s}, h\} {q,s^,h} 组成,其中 q ∈ R 3 q \in \mathbb{R}^3 qR3,是轴上的任意一点, s ^ \hat{s} s^ 是轴的单位向量, h h h 是螺距,表示的是线速度与角速度的比值。如图3.19。
在这里插入图片描述
V = ( w , v ) \mathcal{V} = (w,v) V=(w,v) 与之关联的绕轴 S \mathcal{S} S 的角速度为 θ ˙ \dot{\theta} θ˙,可以写作:
V = [ w v ] = [ s ^ θ ˙ − s ^ θ ˙ × q + h s ^ θ ˙ ] . \mathcal{V} = \left[ \begin{matrix} w \\ v \end{matrix} \right] = \left[ \begin{matrix} \hat{s}\dot{\theta} \\ -\hat{s}\dot{\theta} \times q + h\hat{s}\dot{\theta} \end{matrix} \right] . V=[wv]=[s^θ˙s^θ˙×q+hs^θ˙].
注意到,线速度是由两部分组成的:

  1. 沿着旋量轴的移动, h s ^ θ ˙ h\hat{s}\dot{\theta} hs^θ˙,
  2. 由于绕轴旋转产生的原点线性移动, − s ^ θ ˙ × q -\hat{s}\dot{\theta} \times q s^θ˙×q.

有如下定义:

  1. 如果 w = ̸ 0 w=\not0 w≠0, 则 S = V / ∣ ∣ w ∣ ∣ = ( w / ∣ ∣ w ∣ ∣ , v / ∣ ∣ w ∣ ∣ ) \mathcal{S} = \mathcal{V}/||w|| = (w/||w||, v/||w||) S=V/w=(w/w,v/w)。旋量轴 S \mathcal{S} S 就是用 V \mathcal{V} V 除以角速度向量的长度。角速度 θ ˙ = ∣ ∣ w ∣ ∣ \dot{\theta} = ||w|| θ˙=w, 且 S θ ˙ = V \mathcal{S}\dot{\theta} = \mathcal{V} Sθ˙=V
  2. 如果 w = 0 w=0 w=0,则 S = V / ∣ ∣ v ∣ ∣ = ( 0 , v / ∣ ∣ v ∣ ∣ ) \mathcal{S} = \mathcal{V}/||v|| = (0, v/||v||) S=V/v=(0,v/v)。沿着旋量轴的线速度 θ ˙ = ∣ ∣ v ∣ ∣ \dot{\theta} = ||v|| θ˙=v S θ ˙ = V \mathcal{S}\dot{\theta} = \mathcal{V} Sθ˙=V

定义
对于给定的一个参考坐标系,旋量轴 S \mathcal{S} S 写作:
S = [ w v ] ∈ R 6 , \mathcal{S} = \left[ \begin{matrix} w \\ v \end{matrix} \right] \in \mathbb{R}^6, S=[wv]R6,
要么,(i) ∣ ∣ w ∣ ∣ = 1 ||w|| = 1 w=1,要么 (ii) w = 0 , ∣ ∣ v ∣ ∣ = 1 w = 0, ||v||=1 w=0,v=1
如果(i)成立,那么 v = − w × q + h w v = -w \times q + hw v=w×q+hw,其中 q q q 是旋量轴上的一点, h h h 是螺距(如果h=0,意味着这个运动只有纯粹的绕轴旋转)。
如果(ii)成立,那么螺距是无限大,运动变成沿着轴的平移,且速度为 v v v

由于旋量轴只是单位化的旋量, S = ( w , v ) \mathcal{S} = (w,v) S=(w,v) 的矩阵表示 [ S ] [\mathcal{S}] [S] 为:
(3.85) [ S ] = [ [ w ] v 0 0 ] ∈ s e ( 3 ) , [ w ] = [ 0 − w 3 w 2 w 3 0 − w 1 − w 2 w 1 0 ] ∈ s o ( 3 ) [\mathcal{S}] = \left[ \begin{matrix} [w] &amp; v \\ 0 &amp; 0 \end{matrix} \right] \in se(3), \quad [w] = \left[ \begin{matrix} 0 &amp; -w_3 &amp; w_2 \\ w_3 &amp; 0 &amp; -w_1 \\ -w_2 &amp; w_1 &amp; 0 \end{matrix} \right] \in so(3) \tag{3.85} [S]=[[w]0v0]se(3),[w]=0w3w2w30w1w2w10so(3)(3.85)
当然,对于任意两个坐标系, { a } , { b } \{a\}, \{b\} {a},{b} 有:
S a = [ A d T a b ] S b , S b = [ A d T b a ] S a \mathcal{S}_a = [Ad_{T_{ab}}]\mathcal{S}_b, \quad \mathcal{S}_b = [Ad_{T_{ba}}]\mathcal{S}_a Sa=[AdTab]Sb,Sb=[AdTba]Sa

刚体移动的指数坐标表示

刚体移动的指数坐标

在前述章节,我们可以看到,任何平面刚体的移动总是可以绕着某个平面内的某个固定点选择得到(对于纯平移,这个点在无限远处)。对于空间的刚体移动,也有同样的结论,不过是绕着一根固定的旋量轴 S \mathcal{S} S
类似于旋转的指数坐标 w ^ θ \hat{w}\theta w^θ,我们定义一个六维的齐次变换指数坐标: S θ ∈ R 6 \mathcal{S}\theta \in \mathbb{R}^6 SθR6 S \mathcal{S} S 是旋量轴, θ \theta θ 是将坐标系从原点移动到 T T T 的值。
同样的有:
e x p : [ S ] θ ∈ s e ( 3 ) → T ∈ S E ( 3 ) l o g : T ∈ S E ( 3 ) → [ S ] θ ∈ s e ( 3 ) exp: [\mathcal{S}]\theta \in se(3) \to T \in SE(3) \\ log: T \in SE(3) \to [\mathcal{S}]\theta \in se(3) exp:[S]θse(3)TSE(3)log:TSE(3)[S]θse(3)

定义
S = ( w , v ) \mathcal{S} = (w,v) S=(w,v) 是旋量轴,如果 ∣ ∣ w ∣ ∣ = 1 ||w|| = 1 w=1,对于任意 θ ∈ R \theta \in \mathbb{R} θR, 有:
(3.88) e [ S ] θ = [ e [ w ] θ ( I θ + ( 1 − c o s θ ) [ w ] + ( θ − s i n θ ) [ w ] 2 ) v 0 1 ] . e^{[\mathcal{S}]\theta} = \left[ \begin{matrix} e^{[w]\theta} &amp; (I\theta+(1-cos\theta)[w] + (\theta-sin\theta)[w]^2)v \\ 0 &amp; 1 \end{matrix} \right]. \tag{3.88} e[S]θ=[e[w]θ0(Iθ+(1cosθ)[w]+(θsinθ)[w]2)v1].(3.88)
如果 ∣ ∣ w ∣ ∣ = 0 , ∣ ∣ v ∣ ∣ = 1 ||w|| = 0, ||v||=1 w=0,v=1,那么:
(3.89) e [ S ] θ = [ I v θ 0 1 ] . e^{[\mathcal{S}]\theta} = \left[ \begin{matrix} I &amp; v\theta \\ 0 &amp; 1 \end{matrix} \right]. \tag{3.89} e[S]θ=[I0vθ1].(3.89)

刚体移动的矩阵对数

如果给定一对 ( R , p ) ∈ S E ( 3 ) (R,p) \in SE(3) (R,p)SE(3),那么总能找到一个旋量轴 S = ( w , v ) \mathcal{S} = (w,v) S=(w,v) 和标量 θ \theta θ
(3.90) e [ S ] θ = [ R p 0 1 ] , e^{[\mathcal{S}]\theta} = \left[ \begin{matrix} R &amp; p \\ 0 &amp; 1 \end{matrix} \right], \tag{3.90} e[S]θ=[R0p1],(3.90)
比如,矩阵:
[ S ] θ = [ [ w ] θ v θ 0 0 ] ∈ s e ( 3 ) [\mathcal{S}]\theta = \left[ \begin{matrix} [w]\theta &amp; v\theta \\ 0 &amp; 0 \end{matrix} \right] \in se(3) [S]θ=[[w]θ0vθ0]se(3)
T = ( R , p ) T = (R,p) T=(R,p) 的矩阵对数。

算法
给定一对 ( R , p ) (R,p) (R,p),对应的矩阵 T ∈ S E ( 3 ) T \in SE(3) TSE(3),找到一个 θ ∈ [ 0 , π ] \theta \in [0,\pi] θ[0,π]和一个旋量轴 S = ( w , v ) ∈ R 6 \mathcal{S} =(w,v) \in \mathbb{R}^6 S=(w,v)R6,如此 e [ S ] θ = T e^{[\mathcal{S}]\theta} = T e[S]θ=T。向量 S θ ∈ R 6 \mathcal{S}\theta \in \mathbb{R}^6 SθR6 组成了矩阵 T T T 的指数坐标,而矩阵 [ S ] θ ∈ s e ( 3 ) [\mathcal{S}]\theta \in se(3) [S]θse(3) 是矩阵 T T T 的对数。

  1. 如果 R = I R = I R=I,那么使 w = 0 , v = p / ∣ ∣ p ∣ ∣ , θ = ∣ ∣ p ∣ ∣ w=0,v =p/||p||, \theta = ||p|| w=0,v=p/p,θ=p
  2. 其余情况,使用 S O ( 3 ) SO(3) SO(3) 上的矩阵对数来决定 R R R w ( S O ( 3 ) w(SO(3) w(SO(3)算法里写作 w ^ ) , θ \hat{w}),\theta w^),θ。那么:

(3.91) v = G − 1 ( θ ) p v = G^{-1}(\theta)p \tag{3.91} v=G1(θ)p(3.91)
其中,
(3.92) G − 1 ( θ ) = 1 θ I − 1 2 [ w ] + ( 1 θ − 1 2 c o t θ 2 ) [ w ] 2 G^{-1}(\theta) = \frac{1}{\theta}I - \frac{1}{2}[w] + (\frac{1}{\theta}-\frac{1}{2}cot\frac{\theta}{2})[w]^2 \tag{3.92} G1(θ)=θ1I21[w]+(θ121cot2θ)[w]2(3.92)

示例

一个刚体在平面 x s ^ − y s ^ \hat{x_s}-\hat{y_s} xs^ys^内运动。初始坐标系 { b } \{b\} {b}与最终坐标系 { c } \{c\} {c}如图3.20所以,可表达为:
在这里插入图片描述
T s b = [ c o s 30 ° − s i n 30 ° 0 1 s i n 30 ° c o s 30 ° 0 2 0 0 1 0 0 0 0 1 ] , T_{sb} = \left[ \begin{matrix} cos30° &amp; -sin30° &amp; 0 &amp; 1 \\ sin30° &amp; cos30° &amp; 0 &amp; 2 \\ 0 &amp; 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 0 &amp; 1 \end{matrix} \right], Tsb=cos30°sin30°00sin30°cos30°0000101201,
T s c = [ c o s 60 ° − s i n 60 ° 0 2 s i n 60 ° c o s 60 ° 0 1 0 0 1 0 0 0 0 1 ] , T_{sc} = \left[ \begin{matrix} cos60° &amp; -sin60° &amp; 0 &amp; 2 \\ sin60° &amp; cos60° &amp; 0 &amp; 1 \\ 0 &amp; 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 0 &amp; 1 \end{matrix} \right], Tsc=cos60°sin60°00sin60°cos60°0000102101,

由于运动发生在平面内,所以旋量轴与 z ^ s \hat{z}_s z^s共方向,且螺距为0。则旋量轴在固定坐标系内表示为: S = ( w , v ) \mathcal{S} = (w,v) S=(w,v),并且有如下形式:
w = ( 0 , 0 , w 3 ) , v = ( v 1 , v 2 , 0 ) . w = (0, 0, w_3), \\ v = (v_1, v_2, 0). w=(0,0,w3),v=(v1,v2,0).
我们寻找一个旋量运动使得 T s b T_{sb} Tsb 到达 T s c T_{sc} Tsc,如 T s c = e [ S ] θ T s b T_{sc} =e^{[\mathcal{S}]\theta}T_{sb} Tsc=e[S]θTsb或:
T s c T s b − 1 = e [ S ] θ , T_{sc}T_{sb}^{-1} = e^{[\mathcal{S}]\theta}, TscTsb1=e[S]θ

其中:
[ S ] = [ 0 ° − w 3 0 v 1 w 3 0 0 v 2 0 0 0 0 0 0 0 0 ] [\mathcal{S}] = \left[ \begin{matrix} 0° &amp; -w_3 &amp; 0 &amp; v_1 \\ w_3 &amp; 0 &amp; 0 &amp; v_2 \\ 0 &amp; 0 &amp; 0 &amp; 0 \\ 0 &amp; 0 &amp; 0 &amp; 0 \end{matrix} \right] [S]=0°w300w30000000v1v200
我们可以使用矩阵对数算法 T s c T s b − 1 T_{sc}T_{sb}^{-1} TscTsb1 来求 [ S ] , θ [\mathcal{S}],\theta [S]θ
[ S ] = [ 0 − 1 0 3.37 1 0 0 − 3.37 0 0 0 0 0 0 0 0 ] , S = [ w 1 w 2 w 3 v 1 v 2 v 3 ] = [ 0 0 1 3.37 − 3.37 0 ] , θ = π 6 r a d o r 30 ° . [\mathcal{S}] = \left[ \begin{matrix} 0 &amp; -1 &amp; 0 &amp; 3.37 \\ 1 &amp; 0 &amp; 0 &amp; -3.37 \\ 0 &amp; 0 &amp; 0 &amp; 0 \\ 0 &amp; 0 &amp; 0 &amp; 0 \end{matrix} \right], \mathcal{S} = \left[ \begin{matrix} w_1 \\ w_2 \\ w_3 \\ v_1 \\ v_2 \\ v_3 \end{matrix} \right] = \left[ \begin{matrix} 0 \\ 0 \\ 1 \\ 3.37 \\ -3.37 \\ 0 \end{matrix} \right], \theta = \frac{\pi}{6} rad \quad or \quad30°. [S]=0100100000003.373.3700,S=w1w2w3v1v2v3=0013.373.370,θ=6πrador30°.

  • 6
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值