机器人学导论 · 交互式学习平台 · 第四课

04 螺旋运动与齐次变换指数Screw Motion & Twists — 螺旋轴 · 旋量 · 矩阵指数

知识清单 K06–K07体系 李泽湘 / MLS §2.3承接 02–03 → 06 指数积
04.0引言WHY SCREW

1 前两节留下的同一个空缺

02 的 gg 和 03 的 RR 有一个共同点:它们描述的都是到位之后的样子。给一个 RR,你说不出它是怎么转过来的;给一个 gg,你说不出末端走的是直线还是弧线。

可机械臂不是瞬移的。关节从 00 转到 θ\theta,末端的轨迹是一条连续曲线。要描述“过程”,就得把 03 的 (ω,θ)(\omega,\theta) 从“转动”推广到“整个刚体的位移”——这就是本课要造的螺旋。

2 一条定理把转动和移动统一起来

Chasles 定理:任何刚体位移都可以分解成绕某一根轴的转动加上沿这根轴的平移——一次拧螺丝。轴、转角 θ\theta、沿轴位移 dd 三个量就够,比 gg 里那些数少得多,而且每个都能在图上指出来。

二维里它退化成“绕某点转”,三维才是真正的螺旋:转的同时还在沿轴前进,每个点的轨迹是一条螺旋线。本课全在三维。

3 本课两件事

第一件:把这条螺旋写成六个数 ξ=(v,ω)\xi = (v,\omega),叫旋量(twist)。第二件:把 ξ\xi 塞进一个 4×44\times4 的反对称矩阵 ξ^\hat\xi,取指数 eξ^θe^{\hat\xi\theta},一次算出整段位移。

它和 03 是同一个故事多了一维:03 的 ω^\hat\omega 是 3×33\times3,这里的 ξ^\hat\xi 是 4×44\times4;03 的 Rodrigues 三项式在这里变成“一块 3×33\times3 加一列平移”。

下一节讲正运动学时,把一串 eξ^iθie^{\hat\xi_i\theta_i} 连乘起来就是整条机械臂——所谓指数积,乘的就是本课造的这个东西。所以这一节看着抽象,其实是后面所有内容的零件车间。

4 前置,三样就够

03 的 Rodrigues 与 hat 算子(含 ω^3=−ω^\hat\omega^{3} = -\hat\omega 那条链);02 的 gg 与齐次坐标(点是 1,方向是 0);再加一个三维直觉:绕轴转动时,点的速度同时垂直于轴和半径。

不需要新的数学工具。指数的定义、分块矩阵的乘法、叉积——全是前三节用过的东西,只是尺寸大了一号。

04.1螺旋轴与旋量SCREW AXIS · TWIST

1 纯转动时,每个点画一个圆

轴固定、刚体绕它转:每个点到轴的距离不变,所以它在垂直于轴的平面里画圆,圆心是它在轴上的投影。轴上的点原地不动——它们速度为零,这是“轴”这个字的全部含义。

一旦加上沿轴的平移,圆的圆心开始沿轴匀速移动,圆被拉成螺旋线。拧螺丝就是这个动作:转一圈前进一个螺距。

2 速度场:一个式子管住所有点

设轴过点 rr、方向为单位向量 ω\omega、螺距为 hh(每转 11 弧度沿轴前进 hh)。任意点 qq 的速度由两块叠成——绕轴的圆周切向,加上沿轴的那一份:

q˙=ω×(q−r)+h ω\dot q = \omega\times(q-r) + h\,\omega

第一项垂直于 ω\omega、也垂直于 q−rq-r,是圆周速度;第二项沿轴。两块互相垂直,所以速度大小是两者平方和开根。

螺旋线 · 圆被拉成螺旋Ctrl+拖 = 平移 右键拖 = 转视角
螺距 h 0.35 扫过的角 θ 180°
圆与螺旋的关系h 控制高度

灰虚线是 h = 0 的整圆:点到轴的距离不变,只在垂直平面里绕。红线的每个点都比圆上的对应点高出 hθ,于是圆被拉成螺旋;每转一圈沿轴升高 2πh。把 h 拖到 0,红线与灰线重合。

读法d = hθ

粗黑线是从当前点到轴的垂足,长度恒定——这正是“转动”不改变半径的意思;改变的只有沿轴的那一截。

把括号拆开,会掉出一个和 pp 无关的常向量:

q˙=ω×q+(h ω−ω×r)⏟v\dot q = \omega\times q + \underbrace{(h\,\omega - \omega\times r)}_{v}

于是速度场是 qq 的线性函数:q˙=ω×q+v\dot q = \omega\times q + v。 这意味着螺旋移动的速度向量是关于 qq 的线性函数,才写得出矩阵乘法——这是下一节能取指数的全部前提。

3 旋量:把六个数打包

定义 ξ=(v,ω)∈R6\xi = (v,\omega)\in\mathbb{R}^{6}。顺序是 (v,ω)(v,\omega),平移在前、转轴在后——这是 MLS 的约定,考试按教材写,别和 (ω,v)(\omega,v) 混。顺序一换,后面每一个矩阵都要重排。

两个分量各自的读法:ω\omega 是转轴方向,长度取 11(角速度大小另算);vv 是原点的速度——把 q=0q=0 代进 q˙=ω×q+v\dot q = \omega\times q + v,右边只剩 vv。

这里有个高频误解:vv 不是轴的位置。轴的位置是几何量,vv 是速度量;换个原点,vv 就变。它实际是“转轴不过原点所欠下的那笔平移”。

4 从 ξ\xi 反读螺距与轴

把 vv 沿轴分解:v=h ω+(−ω×r)v = h\,\omega + (-\omega\times r)。前一项平行于轴,后一项垂直于轴——两边点乘 ω\omega,垂直项消失:

h=ωTv(∣ω∣=1)h = \omega^{\mathsf{T}}v \qquad (|\omega| = 1)

轴的位置则藏在垂直项里。取 ω×v\omega\times v:由 v=hω−ω×rv = h\omega - \omega\times r 得 ω×v=r−ω(ωTr)\omega\times v = r - \omega(\omega^{\mathsf{T}}r),正好是 rr 垂直于轴的那一部分——也就是轴上离原点最近的那个点。所以

r⊥=ω×vr_{\perp} = \omega\times v

走一遍数:轴过 (2,0,0)(2,0,0)、方向 z^\hat z、螺距 00。原点在轴的 −x-x 侧,绕 +z+z 转时它的速度指向 −y-y:v=−ω×r=(0,−2,0)v = -\omega\times r = (0,-2,0)。反算 h=ωTv=0h = \omega^{\mathsf T}v = 0,ω×v=(2,0,0)\omega\times v = (2,0,0),回到轴上那个点。

5 三个退化情形,考试最爱考

h=0h=0:纯转动。注意轴仍可以不过原点——这时 v=−ω×r≠0v = -\omega\times r \neq 0,只有 r=0r=0 才是 v=0v=0。

ω=0\omega=0:纯平移。没有转轴,vv 就是平移方向(取单位向量时,θ\theta 就是走过的距离)。

r=0r=0:轴过原点,此时 v=hωv = h\omega,与 ω\omega 平行,两种分量合成一条沿轴的直线运动。

常见错误
  • 把旋量写成 (ω,v)(\omega,v)。顺序反了,ξ^\hat\xi 的分块位置跟着错,一取指数就得出个歪掉的变换。
  • 把 vv 当成“轴的坐标”。最典型的后果:看到 h=0h=0、v≠0v\neq0,误判成“轴过原点”。
  • 算 h=ωTvh=\omega^{\mathsf T}v 之前没把 ω\omega 单位化。hh 会差一个 ∣ω∣2|\omega|^{2}。
  • 以为圆周分量和沿轴分量会互相干扰。它们正交,可以分开算、分开验。
离开本节前,合上文字回答
  • ω=z^\omega = \hat z、轴过 (0,2,0)(0,2,0)、h=0h=0,写出 ξ\xi。
  • ξ=(v,ω)\xi=(v,\omega) 满足 h=0h=0 但 v≠0v\neq0,几何上是什么意思?
  • ω=0\omega=0 时,速度场 q˙=ω×q+v\dot q = \omega\times q + v 变成什么?
04.2齐次变换的指数FROM TWIST TO MATRIX

1 与 03 完全平行的构造

03 是 q˙=ω^q⇒R=eω^θ\dot q = \hat\omega q \Rightarrow R = e^{\hat\omega\theta}。这里换成整段位移:g˙=ξ^g⇒g(θ)=eξ^θ\dot g = \hat\xi g \Rightarrow g(\theta) = e^{\hat\xi\theta}。要做的只是把 ξ=(v,ω)\xi=(v,\omega) 摆进一个 4×44\times4:

ξ^=[ω^v00]\hat\xi = \begin{bmatrix} \hat\omega & v \\ 0 & 0 \end{bmatrix}

这个摆法不是凑的。把它左乘 gg:

ξ^ g=[ω^v00][Rp01]=[ω^Rω^p+v00]\hat\xi\,g = \begin{bmatrix} \hat\omega & v \\ 0 & 0 \end{bmatrix} \begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix} = \begin{bmatrix} \hat\omega R & \hat\omega p + v \\ 0 & 0 \end{bmatrix}

左上正是 03 的 R˙=ω^R\dot R = \hat\omega R,右上正是 04.1 的 q˙=ω^q+v\dot q = \hat\omega q + v。两块都对上,说明 ξ^\hat\xi 是被微分方程逼出来的形状。底行必须全零:ξ^g\hat\xi g 的底行要恒为 (0,0,0,0)(0,0,0,0),否则积分出来的 gg 最后一行会漂离 (0,0,0,1)(0,0,0,1),就不再是齐次变换了。

2 指数算出整段位移

解 g˙=ξ^g\dot g = \hat\xi g(初值 g(0)=Ig(0)=I)得 g(θ)=eξ^θg(\theta) = e^{\hat\xi\theta}。按 3+13+1 分块,右上就是这一段位移的平移量:

eξ^θ=[Rp01],R=eω^θ,p=(I−eω^θ) ω^v+ωωTv θe^{\hat\xi\theta} = \begin{bmatrix} R & p \\ 0 & 1 \end{bmatrix}, \qquad R = e^{\hat\omega\theta}, \quad p = (I - e^{\hat\omega\theta})\,\hat\omega v + \omega\omega^{\mathsf{T}}v\,\theta

左上就是 03 的 Rodrigues,一个字都不用改。右上两项各管一件事:ωωTv θ=hωθ\omega\omega^{\mathsf T}v\,\theta = h\omega\theta 是沿轴走的那一段(长度 d=hθd = h\theta);(I−eω^θ)ω^v(I-e^{\hat\omega\theta})\hat\omega v 是补差额的那一项。这个式子成立的前提是 ∣ω∣=1|\omega| = 1。

补什么差额?轴过原点时 v=hωv = h\omega,于是 ω^v=ω×(hω)=0\hat\omega v = \omega\times(h\omega) = 0,那一项自动消失,剩下的就是 R q0+hθ ωR\,q_0 + h\theta\,\omega——干净利落。轴不过原点时 vv 里有垂直分量,这项负责把“绕的不是原点”这个事实补回去。

指数:先转,再沿轴走Ctrl+拖 = 平移 右键拖 = 转视角
转角 θ 90°
两段位移各管一件事p = (I−R)ω̂v + hωθ

灰虚线是 只转的落点:刚体绕轴转过 θ,位置由 R 决定。红箭头是沿轴走的那一段 hωθ。两者相加就是平移列 p——指数矩阵右上角那一列。

θ = 0 时退回单位阵

把滑块拖到 0:两段位移都消失,刚体回到灰线位置,整块矩阵变成 I。这是最快的验算方式。

3 不用背,按三条边界现推

① 左上必然是 eω^θe^{\hat\omega\theta},这是 03 的原样搬运。② 沿轴那一份必然是 hωθh\omega\theta,因为沿轴的速度就是 hωh\omega,而且它在转动下不变。③ 剩下的一项必须在“轴过原点”时为零,而轴过原点意味着 ω^v=0\hat\omega v = 0,所以它只能带 ω^v\hat\omega v 作因子。

三条对完,右上写成 (I−eω^θ)ω^v+ωωTvθ(I-e^{\hat\omega\theta})\hat\omega v + \omega\omega^{\mathsf T}v\theta 是唯一同时满足的形状。推不出来时,用 θ→0\theta \to 0 再验一次:两项都趋于零,整块退回 II。

4 退化:ω=0\omega = 0 的那一支

ω→0\omega\to0 时,eω^θ→Ie^{\hat\omega\theta}\to I、ω^v→0\hat\omega v\to0、ωωTvθ→0\omega\omega^{\mathsf T}v\theta\to0,整个式子塌成

eξ^θ=[Ivθ01]e^{\hat\xi\theta} = \begin{bmatrix} I & v\theta \\ 0 & 1 \end{bmatrix}

正是 02.2 的纯平移。注意它和上一式是同一块矩阵位置的两个分支,不是两种变换:左上块从旋转塌成 II,右上从“圆周 + 沿轴”塌成一条 vθv\theta。所以代码里只需要一个函数、一个分支判断,不需要两套。

5 三条体检

θ=0\theta = 0:整块是 II,不含任何位移。左上块:任意 ξ\xi、θ\theta 下都满足 RTR=IR^{\mathsf T}R = I、det⁡R=1\det R = 1——但它只管左上。

别拿 gTg=Ig^{\mathsf T}g = I 去验 eξ^θe^{\hat\xi\theta}:带平移的变换不是正交矩阵,这条一定不成立,验了只会以为自己算错。

复合封闭:两个这样的矩阵相乘,底行仍是 (0,0,0,1)(0,0,0,1),左上仍是正交块——形状不变。下一节把一串指数连乘,靠的就是这个封闭性。

6 面板怎么用:三块纵向读

下面三块是从上到下的一条链,不是三个并列的答案。读的顺序就是造它的顺序。

第一块,旋量。ξ=(v,ω)\xi=(v,\omega) 竖排六行,上三行 vv、下三行 ω\omega;旁边给螺距 hh 与沿轴位移 d=hθd = h\theta。先看这两个数——它们是图上能量出来的量,也是判断“这是纯转还是螺旋”的依据。

第二块,指数。4×44\times4 数值:左上按列上色(红 xx、深灰 yy、浅灰 zz),右上是平移列;上面一行是同一条式子的解析形式,用来把“哪一项变成了哪个数”对上号。

第三块,退化。同一个槽位换成 ω=0\omega=0 时的 [I, vθ; 0, 1][I,\ v\theta;\ 0,\ 1]。它和上面那块只差左上角:整块变成 II,右上一列变成直线。学生卡住的地方从来是这个分支,不是透视角度。

画布上三层叠在一起:细黑是转轴,红是螺旋线,浅灰虚线是同一个 θ\theta 下的纯转动对照(h=0h=0 的轨迹)。红手柄改 θ\theta,轴上的黑手柄分别拖 rr(轴位置)与 ω\omega(轴方向);下方两条滑块改螺距 hh 与转动半径 ρ\rho。三块一起动;点“退化为纯旋转”看红线塌到圆上,点“退化为纯平移”看它拉成一条直线。

常见错误
  • 拿 gTg=Ig^{\mathsf T}g = I 验 eξ^θe^{\hat\xi\theta}。它不是正交矩阵,验不过是对的。
  • 丢掉 (I−eω^θ)ω^v(I-e^{\hat\omega\theta})\hat\omega v,只写 R p0+hωθR\,p_0 + h\omega\theta。轴不过原点时,算出来的点会系统性少一段圆弧。
  • 螺距与沿轴位移混用:d=hθd = h\theta,θ\theta 用弧度,别代角度。
  • ω\omega 没单位化就套这个式子。式子的前提就写在右边那行 ∣ω∣=1|\omega|=1。
离开本节前,合上文字回答
  • θ=0\theta = 0 时 eξ^θe^{\hat\xi\theta} 是什么?为什么?
  • 轴过原点、h=1h=1、θ=2\theta=2,平移部分是多大?
  • 为什么 eξ^θe^{\hat\xi\theta} 的左上块必须是旋转矩阵,而整块不是?
Screw axis · twist · ghost◎ 红手柄 = 扫 θ ● 黑手柄 = 拖轴位置 r / 轴方向 ω
螺距 h 0.35 转动半径 ρ 0.90
旋量 · 平移分量与转轴θ = 0°
转轴方向 平移分量(原点速度)

螺距 h 与沿轴位移 d = hθ 在这里实时显示。

指数 · 分块对照g live

左上 = 03 的 Rodrigues(三列按 \(x/y/z\) 上色);右上一列 = 圆周位移项与沿轴位移 \(h\theta\) 之和。

退化 · 转轴归零纯平移

同一块位置,左上塌成 I,右上只剩 vθ。

04.3小测CHECK

规则。三道题,覆盖三处最容易错的地方:把轴位置写成 vv、忘记退化分支、把旋量顺序记反。做完即时反馈,解析里指回对应小节。

Q1轴过点 \(r=(2,0,0)\)、方向 \(\omega=\hat z\)、螺距 \(h=0\)。旋量里的 \(v\) 是?
Q2\(\omega=0\)、\(v=(0,0,1)\)、\(\theta=3\)。\(e^{\hat\xi\theta}\) 的平移列是?
Q3某旋量满足 \(h=0\) 但 \(v\neq 0\)。它在几何上是什么?
0/ 3 · 答对即刻计入