02 的 和 03 的 有一个共同点:它们描述的都是到位之后的样子。给一个 ,你说不出它是怎么转过来的;给一个 ,你说不出末端走的是直线还是弧线。
可机械臂不是瞬移的。关节从 转到 ,末端的轨迹是一条连续曲线。要描述“过程”,就得把 03 的 从“转动”推广到“整个刚体的位移”——这就是本课要造的螺旋。
Chasles 定理:任何刚体位移都可以分解成绕某一根轴的转动加上沿这根轴的平移——一次拧螺丝。轴、转角 、沿轴位移 三个量就够,比 里那些数少得多,而且每个都能在图上指出来。
二维里它退化成“绕某点转”,三维才是真正的螺旋:转的同时还在沿轴前进,每个点的轨迹是一条螺旋线。本课全在三维。
第一件:把这条螺旋写成六个数 ,叫旋量(twist)。第二件:把 塞进一个 的反对称矩阵 ,取指数 ,一次算出整段位移。
它和 03 是同一个故事多了一维:03 的 是 ,这里的 是 ;03 的 Rodrigues 三项式在这里变成“一块 加一列平移”。
下一节讲正运动学时,把一串 连乘起来就是整条机械臂——所谓指数积,乘的就是本课造的这个东西。所以这一节看着抽象,其实是后面所有内容的零件车间。
03 的 Rodrigues 与 hat 算子(含 那条链);02 的 与齐次坐标(点是 1,方向是 0);再加一个三维直觉:绕轴转动时,点的速度同时垂直于轴和半径。
不需要新的数学工具。指数的定义、分块矩阵的乘法、叉积——全是前三节用过的东西,只是尺寸大了一号。
轴固定、刚体绕它转:每个点到轴的距离不变,所以它在垂直于轴的平面里画圆,圆心是它在轴上的投影。轴上的点原地不动——它们速度为零,这是“轴”这个字的全部含义。
一旦加上沿轴的平移,圆的圆心开始沿轴匀速移动,圆被拉成螺旋线。拧螺丝就是这个动作:转一圈前进一个螺距。
设轴过点 、方向为单位向量 、螺距为 (每转 弧度沿轴前进 )。任意点 的速度由两块叠成——绕轴的圆周切向,加上沿轴的那一份:
第一项垂直于 、也垂直于 ,是圆周速度;第二项沿轴。两块互相垂直,所以速度大小是两者平方和开根。
灰虚线是 h = 0 的整圆:点到轴的距离不变,只在垂直平面里绕。红线的每个点都比圆上的对应点高出 hθ,于是圆被拉成螺旋;每转一圈沿轴升高 2πh。把 h 拖到 0,红线与灰线重合。
粗黑线是从当前点到轴的垂足,长度恒定——这正是“转动”不改变半径的意思;改变的只有沿轴的那一截。
把括号拆开,会掉出一个和 无关的常向量:
于是速度场是 的线性函数:。 这意味着螺旋移动的速度向量是关于 的线性函数,才写得出矩阵乘法——这是下一节能取指数的全部前提。
定义 。顺序是 ,平移在前、转轴在后——这是 MLS 的约定,考试按教材写,别和 混。顺序一换,后面每一个矩阵都要重排。
两个分量各自的读法: 是转轴方向,长度取 (角速度大小另算); 是原点的速度——把 代进 ,右边只剩 。
这里有个高频误解: 不是轴的位置。轴的位置是几何量, 是速度量;换个原点, 就变。它实际是“转轴不过原点所欠下的那笔平移”。
把 沿轴分解:。前一项平行于轴,后一项垂直于轴——两边点乘 ,垂直项消失:
轴的位置则藏在垂直项里。取 :由 得 ,正好是 垂直于轴的那一部分——也就是轴上离原点最近的那个点。所以
走一遍数:轴过 、方向 、螺距 。原点在轴的 侧,绕 转时它的速度指向 :。反算 ,,回到轴上那个点。
:纯转动。注意轴仍可以不过原点——这时 ,只有 才是 。
:纯平移。没有转轴, 就是平移方向(取单位向量时, 就是走过的距离)。
:轴过原点,此时 ,与 平行,两种分量合成一条沿轴的直线运动。
03 是 。这里换成整段位移:。要做的只是把 摆进一个 :
这个摆法不是凑的。把它左乘 :
左上正是 03 的 ,右上正是 04.1 的 。两块都对上,说明 是被微分方程逼出来的形状。底行必须全零: 的底行要恒为 ,否则积分出来的 最后一行会漂离 ,就不再是齐次变换了。
解 (初值 )得 。按 分块,右上就是这一段位移的平移量:
左上就是 03 的 Rodrigues,一个字都不用改。右上两项各管一件事: 是沿轴走的那一段(长度 ); 是补差额的那一项。这个式子成立的前提是 。
补什么差额?轴过原点时 ,于是 ,那一项自动消失,剩下的就是 ——干净利落。轴不过原点时 里有垂直分量,这项负责把“绕的不是原点”这个事实补回去。
灰虚线是 只转的落点:刚体绕轴转过 θ,位置由 R 决定。红箭头是沿轴走的那一段 hωθ。两者相加就是平移列 p——指数矩阵右上角那一列。
把滑块拖到 0:两段位移都消失,刚体回到灰线位置,整块矩阵变成 I。这是最快的验算方式。
① 左上必然是 ,这是 03 的原样搬运。② 沿轴那一份必然是 ,因为沿轴的速度就是 ,而且它在转动下不变。③ 剩下的一项必须在“轴过原点”时为零,而轴过原点意味着 ,所以它只能带 作因子。
三条对完,右上写成 是唯一同时满足的形状。推不出来时,用 再验一次:两项都趋于零,整块退回 。
时,、、,整个式子塌成
正是 02.2 的纯平移。注意它和上一式是同一块矩阵位置的两个分支,不是两种变换:左上块从旋转塌成 ,右上从“圆周 + 沿轴”塌成一条 。所以代码里只需要一个函数、一个分支判断,不需要两套。
:整块是 ,不含任何位移。左上块:任意 、 下都满足 、——但它只管左上。
别拿 去验 :带平移的变换不是正交矩阵,这条一定不成立,验了只会以为自己算错。
复合封闭:两个这样的矩阵相乘,底行仍是 ,左上仍是正交块——形状不变。下一节把一串指数连乘,靠的就是这个封闭性。
下面三块是从上到下的一条链,不是三个并列的答案。读的顺序就是造它的顺序。
第一块,旋量。 竖排六行,上三行 、下三行 ;旁边给螺距 与沿轴位移 。先看这两个数——它们是图上能量出来的量,也是判断“这是纯转还是螺旋”的依据。
第二块,指数。 数值:左上按列上色(红 、深灰 、浅灰 ),右上是平移列;上面一行是同一条式子的解析形式,用来把“哪一项变成了哪个数”对上号。
第三块,退化。同一个槽位换成 时的 。它和上面那块只差左上角:整块变成 ,右上一列变成直线。学生卡住的地方从来是这个分支,不是透视角度。
画布上三层叠在一起:细黑是转轴,红是螺旋线,浅灰虚线是同一个 下的纯转动对照( 的轨迹)。红手柄改 ,轴上的黑手柄分别拖 (轴位置)与 (轴方向);下方两条滑块改螺距 与转动半径 。三块一起动;点“退化为纯旋转”看红线塌到圆上,点“退化为纯平移”看它拉成一条直线。
螺距 h 与沿轴位移 d = hθ 在这里实时显示。
左上 = 03 的 Rodrigues(三列按 \(x/y/z\) 上色);右上一列 = 圆周位移项与沿轴位移 \(h\theta\) 之和。
同一块位置,左上塌成 I,右上只剩 vθ。
规则。三道题,覆盖三处最容易错的地方:把轴位置写成 、忘记退化分支、把旋量顺序记反。做完即时反馈,解析里指回对应小节。