刚体位形 T ∈ S E ( 3 ) T\in SE(3) T∈SE(3) 描述“刚体在哪里、朝哪里”。
如果刚体正在运动,怎样描述它的瞬时速度?
直觉上会想看 T ˙ \dot T T˙,但 T ˙ \dot T T˙ 本身并不是一个好用的刚体速度表示。这和 3.2 里的角速度完全类似:旋转矩阵 R ( t ) R(t) R(t) 描述姿态, R ˙ \dot R R˙ 描述姿态变化,但真正能读出角速度的是:
R ˙ R − 1 = [ ω s ] , R − 1 R ˙ = [ ω b ] \dot R R^{-1}=[\omega_s], \qquad R^{-1}\dot R=[\omega_b] R˙R−1=[ωs],R−1R˙=[ωb]
现在把 R R R 换成完整的刚体位形 T T T,自然会问:
T ˙ T − 1 和 T − 1 T ˙ \dot T T^{-1} \quad\text{和}\quad T^{-1}\dot T T˙T−1和T−1T˙
会不会也有类似的速度含义?答案是:会。它们给出的就是刚体的运动旋量,也就是 twist。
先记住本文的主线:
twist 是刚体瞬时速度的 6 维表达,前三维是角速度,后三维是线速度项;同一个运动可以有不同的 twist 表达,区别在于用哪个参考系表达,以及线速度项对应哪个点。
一、从运动中的齐次变换矩阵开始
设 { s } \{s\} {s} 是固定参考系, { b } \{b\} {b} 是固定在刚体上的物体参考系。下面把刚体在时刻 t t t 的位形写出来:
T s b ( t ) = T ( t ) = [ R ( t ) p ( t ) 0 1 ] T_{sb}(t)=T(t)= \begin{bmatrix} R(t)&p(t)\\ 0&1 \end{bmatrix} Tsb(t)=T(t)=[R(t)0p(t)1]
其中:
- R ( t ) R(t) R(t) 表示 { b } \{b\} {b} 相对 { s } \{s\} {s} 的姿态;
- p ( t ) p(t) p(t) 表示 { b } \{b\} {b} 原点在 { s } \{s\} {s} 中的位置;
- p ˙ ( t ) \dot p(t) p˙(t) 是 { b } \{b\} {b} 原点的速度,并且用 { s } \{s\} {s} 表达。
对 T T T 求导:
T ˙ = [ R ˙ p ˙ 0 0 ] \dot T= \begin{bmatrix} \dot R&\dot p\\ 0&0 \end{bmatrix} T˙=[R˙0p˙0]
最后一行变成 [ 0 0 0 0 ] [0\ 0\ 0\ 0] [0 0 0 0],因为齐次变换矩阵最后一行 [ 0 0 0 1 ] [0\ 0\ 0\ 1] [0 0 0 1] 是常数。
原书接下来考察两个量:
T − 1 T ˙ , T ˙ T − 1 T^{-1}\dot T, \qquad \dot T T^{-1} T−1T˙,T˙T−1
它们不是随便凑出来的。前者对应 R − 1 R ˙ R^{-1}\dot R R−1R˙,会得到物体坐标表达的速度;后者对应 R ˙ R − 1 \dot R R^{-1} R˙R−1,会得到空间坐标表达的速度。
二、 T − 1 T ˙ T^{-1}\dot T T−1T˙:物体运动旋量
先看 T − 1 T ˙ T^{-1}\dot T T−1T˙。因为:
T − 1 = [ R T − R T p 0 1 ] T^{-1}= \begin{bmatrix} R^T&-R^T p\\ 0&1 \end{bmatrix} T−1=[RT0−RTp1]
所以:
T − 1 T ˙ = [ R T − R T p 0 1 ] [ R ˙ p ˙ 0 0 ] = [ R T R ˙ R T p ˙ 0 0 ] T^{-1}\dot T =\begin{bmatrix} R^T&-R^T p\\ 0&1 \end{bmatrix} \begin{bmatrix} \dot R&\dot p\\ 0&0 \end{bmatrix} =\begin{bmatrix} R^T\dot R&R^T\dot p\\ 0&0 \end{bmatrix} T−1T˙=[RT0−RTp1][R˙0p˙0]=[RTR˙0RTp˙0]
这里有两部分:
R T R ˙ = [ ω b ] , v b = R T p ˙ R^T\dot R=[\omega_b], \qquad v_b=R^T\dot p RTR˙=[ωb],vb=RTp˙
ω b \omega_b ωb 是角速度在 { b } \{b\} {b} 中的表达。 v b v_b vb 是 { b } \{b\} {b} 原点速度在 { b } \{b\} {b} 中的表达,因为 p ˙ \dot p p˙ 原本用 { s } \{s\} {s} 表达,左乘 R T R^T RT 后改写到了 { b } \{b\} {b} 中。
于是:
T − 1 T ˙ = [ [ ω b ] v b 0 0 ] = [ V b ] T^{-1}\dot T =\begin{bmatrix} [\omega_b]&v_b\\ 0&0 \end{bmatrix} = [V_b] T−1T˙=[[ωb]0vb0]=[Vb]
其中:
V b = [ ω b v b ] ∈ R 6 V_b= \begin{bmatrix} \omega_b\\ v_b \end{bmatrix} \in\mathbb{R}^6 Vb=[ωbvb]∈R6
这里不是又推导出了一个新物理量,而是在做一个记号约定。矩阵 [ V b ] [V_b] [Vb] 里真正独立的信息只有 6 个数:左上角的反对称矩阵 [ ω b ] [\omega_b] [ωb] 由 3 个数决定,右上角的 v b v_b vb 也是 3 个数。把这两部分按“角速度在前、线速度在后”的顺序排成一列,就得到 V b V_b Vb。
也就是说,下面两种写法表达的是同一个 twist:
[ V b ] = [ [ ω b ] v b 0 0 ] ⟺ V b = [ ω b v b ] [V_b]= \begin{bmatrix} [\omega_b]&v_b\\ 0&0 \end{bmatrix} \quad\Longleftrightarrow\quad V_b= \begin{bmatrix} \omega_b\\ v_b \end{bmatrix} [Vb]=[[ωb]0vb0]⟺Vb=[ωbvb]
V b V_b Vb 就是 body twist,也就是物体坐标表达的运动旋量。
可以把它读成:
V b V_b Vb 描述同一个刚体运动,但所有速度量都站在当前物体参考系 { b } \{b\} {b} 里看。
三、 T ˙ T − 1 \dot T T^{-1} T˙T−1:空间运动旋量
再看另一个乘法顺序:
T ˙ T − 1 = [ R ˙ p ˙ 0 0 ] [ R T − R T p 0 1 ] \dot T T^{-1} =\begin{bmatrix} \dot R&\dot p\\ 0&0 \end{bmatrix} \begin{bmatrix} R^T&-R^T p\\ 0&1 \end{bmatrix} T˙T−1=[R˙0p˙0][RT0−RTp1]
展开得到:
T ˙ T − 1 = [ R ˙ R T p ˙ − R ˙ R T p 0 0 ] \dot T T^{-1} =\begin{bmatrix} \dot R R^T&\dot p-\dot R R^T p\\ 0&0 \end{bmatrix} T˙T−1=[R˙RT0p˙−R˙RTp0]
其中:
R ˙ R T = [ ω s ] \dot R R^T=[\omega_s] R˙RT=[ωs]
这是角速度在固定参考系 { s } \{s\} {s} 中的表达。右上角定义为:
v s = p ˙ − [ ω s ] p = p ˙ − ω s × p = p ˙ + ω s × ( − p ) v_s=\dot p-[\omega_s]p =\dot p-\omega_s\times p =\dot p+\omega_s\times(-p) vs=p˙−[ωs]p=p˙−ωs×p=p˙+ωs×(−p)
于是:
T ˙ T − 1 = [ [ ω s ] v s 0 0 ] = [ V s ] \dot T T^{-1} =\begin{bmatrix} [\omega_s]&v_s\\ 0&0 \end{bmatrix} = [V_s] T˙T−1=[[ωs]0vs0]=[Vs]
其中:
V s = [ ω s v s ] ∈ R 6 V_s= \begin{bmatrix} \omega_s\\ v_s \end{bmatrix} \in\mathbb{R}^6 Vs=[ωsvs]∈R6
V s V_s Vs 就是 spatial twist,也就是空间坐标表达的运动旋量。
四、为什么 v s v_s vs 不是 p ˙ \dot p p˙

图 1:原书 Figure 3.17。实线是当前刚体位置,虚线是下一瞬间的位置。 p ˙ \dot p p˙ 是 { b } \{b\} {b} 原点的速度, v s v_s vs 是当前落在 { s } \{s\} {s} 原点处的那个刚体点速度。
这是本节最容易误解的地方。
{ b } \{b\} {b} 原点速度在 { s } \{s\} {s} 中的表达是 p ˙ \dot p p˙, { s } \{s\} {s} 原点相对 { b } \{b\} {b} 原点位移是 − p -p −p,角速度是 ω s \omega_s ωs。两点相对位置决定的速度差是 ω s × ( − p ) \omega_s\times(-p) ωs×(−p),因此:
v s = p ˙ + ω s × ( − p ) v_s=\dot p+\omega_s\times(-p) vs=p˙+ωs×(−p)
也就是:
v s = p ˙ − ω s × p v_s=\dot p-\omega_s\times p vs=p˙−ωs×p
这正好和前面从矩阵乘法得到的右上角一致。
所以 v s v_s vs 的物理意义就是原书说的:如果把运动刚体想象成无限大,那么 v s v_s vs 是这个刚体上当前位于固定系原点的那个点的瞬时速度,并且用 { s } \{s\} {s} 表达。
这样看, V s V_s Vs 和 V b V_b Vb 的对应关系就清楚了:
- ω s \omega_s ωs:角速度用 { s } \{s\} {s} 表达;
- ω b \omega_b ωb:角速度用 { b } \{b\} {b} 表达;
- v s v_s vs:当前位于 { s } \{s\} {s} 原点的刚体点速度,用 { s } \{s\} {s} 表达;
- v b v_b vb:当前位于 { b } \{b\} {b} 原点的刚体点速度,用 { b } \{b\} {b} 表达。
五、 s e ( 3 ) se(3) se(3):twist 的矩阵形式
不管是 V s V_s Vs 还是 V b V_b Vb,只要写成:
V = [ ω v ] V= \begin{bmatrix} \omega\\ v \end{bmatrix} V=[ωv]
它的矩阵形式就是:
[ V ] = [ [ ω ] v 0 0 ] ∈ s e ( 3 ) [V]= \begin{bmatrix} [\omega]&v\\ 0&0 \end{bmatrix} \in se(3) [V]=[[ω]0v0]∈se(3)
展开为:
[ V ] = [ 0 − ω 3 ω 2 v 1 ω 3 0 − ω 1 v 2 − ω 2 ω 1 0 v 3 0 0 0 0 ] [V]= \begin{bmatrix} 0&-\omega_3&\omega_2&v_1\\ \omega_3&0&-\omega_1&v_2\\ -\omega_2&\omega_1&0&v_3\\ 0&0&0&0 \end{bmatrix} [V]= 0ω3−ω20−ω30ω10ω2−ω100v1v2v30
这里的方括号有两层用法:
- 对三维向量 ω \omega ω, [ ω ] [\omega] [ω] 是 3 × 3 3\times3 3×3 反对称矩阵;
- 对六维向量 V = ( ω , v ) V=(\omega,v) V=(ω,v), [ V ] [V] [V] 是 4 × 4 4\times4 4×4 矩阵。
可以把关系记成:
S O ( 3 ) ↔ s o ( 3 ) , S E ( 3 ) ↔ s e ( 3 ) SO(3)\leftrightarrow so(3), \qquad SE(3)\leftrightarrow se(3) SO(3)↔so(3),SE(3)↔se(3)
S E ( 3 ) SE(3) SE(3) 里放刚体位形, s e ( 3 ) se(3) se(3) 里放刚体速度的矩阵表示。
六、空间 twist 和物体 twist 怎样互相转换
同一个刚体运动,可以写成 V s V_s Vs,也可以写成 V b V_b Vb。它们不是两个运动,而是同一个运动的两套坐标。
从矩阵形式出发:
[ V s ] = T [ V b ] T − 1 , [ V b ] = T − 1 [ V s ] T [V_s]=T[V_b]T^{-1}, \qquad [V_b]=T^{-1}[V_s]T [Vs]=T[Vb]T−1,[Vb]=T−1[Vs]T
把第一条展开成向量形式:
[ ω s v s ] = [ R 0 [ p ] R R ] [ ω b v b ] \begin{bmatrix} \omega_s\\ v_s \end{bmatrix} =\begin{bmatrix} R&0\\ [p]R&R \end{bmatrix} \begin{bmatrix} \omega_b\\ v_b \end{bmatrix} [ωsvs]=[R[p]R0R][ωbvb]
中间这个 6 × 6 6\times6 6×6 矩阵叫 伴随板换矩阵 (adjoint representation):
[ A d T ] = [ R 0 [ p ] R R ] [Ad_T]= \begin{bmatrix} R&0\\ [p]R&R \end{bmatrix} [AdT]=[R[p]R0R]
这里的 [ p ] [p] [p] 和 [ ω ] [\omega] [ω] 一样,表示由三维向量 p p p 构造出的反对称矩阵。
因此:
V s = [ A d T s b ] V b , V b = [ A d T b s ] V s V_s=[Ad_{T_{sb}}]V_b, \qquad V_b=[Ad_{T_{bs}}]V_s Vs=[AdTsb]Vb,Vb=[AdTbs]Vs
如果把第二条写成完整矩阵,就是:
V b = [ R T 0 − R T [ p ] R T ] V s V_b =\begin{bmatrix} R^T&0\\ -R^T[p]&R^T \end{bmatrix} V_s Vb=[RT−RT[p]0RT]Vs
更一般地,若同一个 twist 在 { d } \{d\} {d} 中的表达是 V d V_d Vd,要改写成 { c } \{c\} {c} 中的表达,则:
V c = [ A d T c d ] V d V_c=[Ad_{T_{cd}}]V_d Vc=[AdTcd]Vd
这条公式的下标读法和齐次变换矩阵一致:
T c d T_{cd} Tcd 表示 { d } \{d\} {d} 相对 { c } \{c\} {c} 的位形,所以它可以把 V d V_d Vd 改写成 V c V_c Vc。
这里要注意, A d T Ad_T AdT 改变的是同一个 twist 的坐标表达,不是在创造一个新的刚体运动。
七、例 3.23:小车的两个 twist 表达
原书用一个三轮小车例子说明:同一个瞬时运动,看参考系不同,twist 的数字会不同。

图 2:原书 Figure 3.18。小车底盘的瞬时运动可以看成绕平面内某点 r r r 的转动。
图中小车绕平面内一点 r r r 做瞬时转动,角速度大小为:
w = 2 rad/s w=2\ \text{rad/s} w=2 rad/s
固定系里:
r s = ( 2 , − 1 , 0 ) , ω s = ( 0 , 0 , 2 ) r_s=(2,-1,0), \qquad \omega_s=(0,0,2) rs=(2,−1,0),ωs=(0,0,2)
物体系里:
r b = ( 2 , − 1.4 , 0 ) , ω b = ( 0 , 0 , − 2 ) r_b=(2,-1.4,0), \qquad \omega_b=(0,0,-2) rb=(2,−1.4,0),ωb=(0,0,−2)
ω b \omega_b ωb 的第三个分量是负数,是因为图中 z ^ b \hat z_b z^b 指向纸内,而 z ^ s \hat z_s z^s 指向纸外。
对应的位形矩阵为:
T s b = [ − 1 0 0 4 0 1 0 0.4 0 0 − 1 0 0 0 0 1 ] T_{sb}= \begin{bmatrix} -1&0&0&4\\ 0&1&0&0.4\\ 0&0&-1&0\\ 0&0&0&1 \end{bmatrix} Tsb= −1000010000−1040.401
因为纯转动时 v = − ω × r = r × ω v=-\omega\times r=r\times\omega v=−ω×r=r×ω,所以:
v s = r s × ω s = ( − 2 , − 4 , 0 ) v_s=r_s\times\omega_s=(-2,-4,0) vs=rs×ωs=(−2,−4,0)
v b = r b × ω b = ( 2.8 , 4 , 0 ) v_b=r_b\times\omega_b=(2.8,4,0) vb=rb×ωb=(2.8,4,0)
于是:
V s = [ 0 0 2 − 2 − 4 0 ] , V b = [ 0 0 − 2 2.8 4 0 ] V_s= \begin{bmatrix} 0\\ 0\\ 2\\ -2\\ -4\\ 0 \end{bmatrix}, \qquad V_b= \begin{bmatrix} 0\\ 0\\ -2\\ 2.8\\ 4\\ 0 \end{bmatrix} Vs= 002−2−40 ,Vb= 00−22.840
它们看起来不一样,但描述的是同一个小车瞬时运动。二者可以通过:
V s = [ A d T s b ] V b V_s=[Ad_{T_{sb}}]V_b Vs=[AdTsb]Vb
互相验证。
八、twist 的螺旋轴解释
到这里,twist 已经可以作为“刚体速度”来用了。原书接着给出一个更几何的解释:twist 可以看成沿某条螺旋轴的运动速度。
角速度可以写成:
ω = ω ^ θ ˙ \omega=\hat\omega\dot\theta ω=ω^θ˙
其中 ω ^ \hat\omega ω^ 是单位旋转轴, θ ˙ \dot\theta θ˙ 是绕轴转动的角速度大小。
类似地,twist 也可以写成:
V = S θ ˙ V=S\dot\theta V=Sθ˙
这里 S S S 是螺旋轴, θ ˙ \dot\theta θ˙ 是沿这条螺旋轴运动的速度尺度。

图 3:原书 Figure 3.19。螺旋轴可以由轴上一点 q q q、单位方向 s ^ \hat s s^ 和螺距 h h h 描述。
一条螺旋轴可以先用三部分描述:
- q q q:螺旋轴上的任意一点;
- s ^ \hat s s^:螺旋轴的单位方向;
- h h h:螺距,也就是沿轴方向线速度与绕轴角速度的比值。
如果刚体以角速度大小 θ ˙ \dot\theta θ˙ 绕这条轴运动,同时沿轴方向平移,那么对应的 twist 为:
V = [ ω v ] = [ s ^ θ ˙ − ( s ^ θ ˙ ) × q + h s ^ θ ˙ ] V= \begin{bmatrix} \omega\\ v \end{bmatrix} =\begin{bmatrix} \hat s\dot\theta\\ -(\hat s\dot\theta)\times q+h\hat s\dot\theta \end{bmatrix} V=[ωv]=[s^θ˙−(s^θ˙)×q+hs^θ˙]
也就是说:
ω = s ^ θ ˙ , v = − ( s ^ θ ˙ ) × q + h s ^ θ ˙ \omega=\hat s\dot\theta, \qquad v=-(\hat s\dot\theta)\times q+h\hat s\dot\theta ω=s^θ˙,v=−(s^θ˙)×q+hs^θ˙
v v v 是两部分之和:
- h s ^ θ ˙ h\hat s\dot\theta hs^θ˙:沿螺旋轴方向的平移速度;
- − ( s ^ θ ˙ ) × q -(\hat s\dot\theta)\times q −(s^θ˙)×q:绕螺旋轴转动时,参考系原点产生的线速度。
第一项沿着 s ^ \hat s s^,第二项垂直于 s ^ \hat s s^。
反过来,对于任意一个一般 twist:
V = [ ω v ] V= \begin{bmatrix} \omega\\ v \end{bmatrix} V=[ωv]
只要 ω ≠ 0 \omega\neq0 ω=0,都可以找到一条等效螺旋轴和一个速度尺度:
s ^ = ω ∥ ω ∥ , θ ˙ = ∥ ω ∥ , h = s ^ T v θ ˙ = ω T v ∥ ω ∥ 2 \hat s=\frac{\omega}{\|\omega\|}, \qquad \dot\theta=\|\omega\|, \qquad h=\frac{\hat s^T v}{\dot\theta} =\frac{\omega^T v}{\|\omega\|^2} s^=∥ω∥ω,θ˙=∥ω∥,h=θ˙s^Tv=∥ω∥2ωTv
如果 ω = 0 \omega=0 ω=0,就是纯平移。这种情况看成螺距 h h h 为无穷大:
s ^ = v ∥ v ∥ , θ ˙ = ∥ v ∥ \hat s=\frac{v}{\|v\|}, \qquad \dot\theta=\|v\| s^=∥v∥v,θ˙=∥v∥
这里的 θ ˙ \dot\theta θ˙ 不再是角速度,而是沿 s ^ \hat s s^ 方向的线速度大小。
由于 h h h可能无穷大, q q q也不具备唯一性,书中决定不使用 { q , s ^ , h } \{q,\hat s,h\} {q,s^,h},把螺旋轴本身也写成一个 6 维向量 S = ( ω , v ) S=(\omega,v) S=(ω,v)。这就是 normalized screw axis,也就是归一化螺旋轴。
归一化的目的,是把“轴的几何信息”和“速度大小”分开:
V = S θ ˙ V=S\dot\theta V=Sθ˙
具体分两种情况。
如果一般 twist V = ( ω , v ) V=(\omega,v) V=(ω,v) 有旋转分量,即 ω ≠ 0 \omega\neq0 ω=0,则:
S = V ∥ ω ∥ = [ ω / ∥ ω ∥ v / ∥ ω ∥ ] , θ ˙ = ∥ ω ∥ S=\frac{V}{\|\omega\|} =\begin{bmatrix} \omega/\|\omega\|\\ v/\|\omega\| \end{bmatrix}, \qquad \dot\theta=\|\omega\| S=∥ω∥V=[ω/∥ω∥v/∥ω∥],θ˙=∥ω∥
也就是说, S S S 的角速度部分已经被除成单位向量。为了贴合原书记号,接下来把归一化后的 S S S 仍写成 S = ( ω , v ) S=(\omega,v) S=(ω,v),那么它满足:
∥ ω ∥ = 1 \|\omega\|=1 ∥ω∥=1
如果一般 twist 是纯平移,即 ω = 0 \omega=0 ω=0,则:
S = V ∥ v ∥ = [ 0 v / ∥ v ∥ ] , θ ˙ = ∥ v ∥ S=\frac{V}{\|v\|} =\begin{bmatrix} 0\\ v/\|v\| \end{bmatrix}, \qquad \dot\theta=\|v\| S=∥v∥V=[0v/∥v∥],θ˙=∥v∥
同样,如果把归一化后的 S S S 仍写成 S = ( ω , v ) S=(\omega,v) S=(ω,v),它满足:
ω = 0 , ∥ v ∥ = 1 \omega=0, \qquad \|v\|=1 ω=0,∥v∥=1
所以“单位螺旋轴”满足两种情况之一:
- ∥ ω ∥ = 1 \|\omega\|=1 ∥ω∥=1;
- ω = 0 \omega=0 ω=0 且 ∥ v ∥ = 1 \|v\|=1 ∥v∥=1。
这里也要注意一个符号习惯:原书用 ( ω , v ) (\omega,v) (ω,v) 同时表示一般 twist V V V 和归一化螺旋轴 S S S。区别在上下文里判断: V V V 不要求归一化, S S S 必须满足上面的两种条件之一。
螺旋轴的矩阵形式和 twist 一样:
[ S ] = [ [ ω ] v 0 0 ] ∈ s e ( 3 ) [S]= \begin{bmatrix} [\omega]&v\\ 0&0 \end{bmatrix} \in se(3) [S]=[[ω]0v0]∈se(3)
螺旋轴和 twist 一样,也可以用 adjoint 改写参考系。若 S b S_b Sb 是螺旋轴在 { b } \{b\} {b} 中的表达,要写成 { a } \{a\} {a} 中的表达,则:
S a = [ A d T a b ] S b S_a=[Ad_{T_{ab}}]S_b Sa=[AdTab]Sb
反过来:
S b = [ A d T b a ] S a S_b=[Ad_{T_{ba}}]S_a Sb=[AdTba]Sa
这和 twist 的坐标变换完全一致,因为螺旋轴本质上就是归一化后的 twist。
小结
第一,机器人学不用单独的 T ˙ \dot T T˙ 表示刚体速度,而是把它和 T − 1 T^{-1} T−1 组合起来:
T − 1 T ˙ = [ V b ] , T ˙ T − 1 = [ V s ] T^{-1}\dot T=[V_b], \qquad \dot T T^{-1}=[V_s] T−1T˙=[Vb],T˙T−1=[Vs]
这样得到的 [ V b ] [V_b] [Vb] 和 [ V s ] [V_s] [Vs] 都是 s e ( 3 ) se(3) se(3) 中的矩阵表示。
第二,twist 本身是 6 维向量:
V = [ ω v ] V= \begin{bmatrix} \omega\\ v \end{bmatrix} V=[ωv]
前三维是角速度,后三维是线速度项。 V b V_b Vb 是物体坐标表达, V s V_s Vs 是空间坐标表达。
第三,最容易错的是 v s v_s vs。它不是 { b } \{b\} {b} 原点速度 p ˙ \dot p p˙,而是当前位于 { s } \{s\} {s} 原点处的那个刚体点速度:
v s = p ˙ − ω s × p v_s=\dot p-\omega_s\times p vs=p˙−ωs×p
这个结论要贴着 Figure 3.17 看:从 { b } \{b\} {b} 原点走到 { s } \{s\} {s} 原点的位移是 − p -p −p,所以多出来的旋转速度是 ω s × ( − p ) \omega_s\times(-p) ωs×(−p)。
第四,同一个刚体速度可以换参考系表达,换法由 adjoint 矩阵给出:
V s = [ A d T s b ] V b , [ A d T ] = [ R 0 [ p ] R R ] V_s=[Ad_{T_{sb}}]V_b, \qquad [Ad_T]= \begin{bmatrix} R&0\\ [p]R&R \end{bmatrix} Vs=[AdTsb]Vb,[AdT]=[R[p]R0R]
第五,twist 还有一个螺旋轴解释:
V = S θ ˙ V=S\dot\theta V=Sθ˙
也就是把“沿哪条螺旋轴运动”和“运动得多快”分开。归一化螺旋轴 S S S 满足 ∥ ω ∥ = 1 \|\omega\|=1 ∥ω∥=1,或者在纯平移时满足 ω = 0 , ∥ v ∥ = 1 \omega=0,\|v\|=1 ω=0,∥v∥=1。
如果只记一句话,可以记:
T ∈ S E ( 3 ) T\in SE(3) T∈SE(3) 描述刚体位形, V ∈ R 6 V\in\mathbb{R}^6 V∈R6 描述刚体瞬时速度, [ V ] ∈ s e ( 3 ) [V]\in se(3) [V]∈se(3) 是 twist 的矩阵表示, A d T Ad_T AdT 负责在不同参考系之间改写 twist。
后面的 3.3.3 会继续沿着这条线走:既然 V V V 是速度,那么把一个常量 twist 沿时间积分,就会得到刚体运动的指数坐标表示。
参考资料
- Kevin M. Lynch and Frank C. Park, Modern Robotics: Mechanics, Planning, and Control, Section 3.3.2 Twists.
- Lynch and Park, Modern Robotics 2019 preprint PDF. 文中图片为该 PDF 中 3.3.2 节相关原书图的局部截图。

2637

被折叠的 条评论
为什么被折叠?



