欧拉角的代价是奇点与多支解。本节换一种 4 参数表示——角和轴:绕任意单位轴 r 转 ϑ。它没有解析奇点(除 sinϑ=0),而且对姿态轨迹规划很友好:轴固定、角单调,插值直观(例 2.5.C)。录播 0:21:53–0:30:07。
定义 2.5.1 · 角和轴表示
任一旋转都可由旋转轴的单位向量 r=[rx ry rz]T(相对参考系 O-xyz)与旋转角 ϑ(绕 r 逆时针为正)共同表示,记作 R(ϑ,r)。两者合起来共 4 个参数(1+3),超出了最简表示的 3 个,故为非最简表示;但 r 受单位模长约束 rx2+ry2+rz2=1(原书式 2.29),扣掉这一约束后独立参数恰好仍是 3 个。
困难在于:我们只会写绕坐标轴的基本旋转。思路(原书图 2.10)是先把 r 转到与 z 轴重合,再绕 z 转 ϑ,最后转回原位。由于全部步骤都绕固定坐标系的轴进行,按 原理 2.3.B 应一律左乘(录播 0:25:05–0:25:51 老师特别强调「这一次都是绕固定坐标转,是一次左乘」,与 ZYZ 的右乘形成对照):
- 绕 z 转 −α,再绕 y 转 −β:把 r 转到与 z 一致;
- 绕 z 转 ϑ(此时就绕着原轴 r 转);
- 绕 y 转 β,再绕 z 转 α:把轴转回 r 的初始指向。
R(ϑ,r)=Rz(α)Ry(β)Rz(ϑ)Ry(−β)Rz(−α)(原书式 2.24)
其中 α,β 由 r 的分量决定(几何关系见图 2.10):
sinα=rx2+ry2ry,cosα=rx2+ry2rx,sinβ=rx2+ry2,cosβ=rz.
下图左给出 α,β 的几何定义——α 是 r 在 xy 面投影的方位角,β 是仰角;下图右把五步序列画成一张流程图,说的就是「把轴借到 z 上、转完再还回去」。
角和轴表示(本教程绘):左图定义 (ϑ,r) 的几何——α,β 定轴、ϑ 定角;右图给出「借轴—转角—还轴」的五步序列。因为每一步都绕固定轴,整条链按 原理 2.3.B 依次左乘。
把它们代入式 2.24,α,β 全部消去,便得到只依赖 (ϑ,r) 的显式矩阵(原书式 2.25,即 Rodrigues 公式)。原书把这一步推导留作习题 2.4,本编在下方直接给出完整推导;2.5.3 还会交代它的泰勒级数来历。
R(ϑ,r)=rx2(1−cϑ)+cϑrxry(1−cϑ)+rzsϑrxrz(1−cϑ)−rysϑrxry(1−cϑ)−rzsϑry2(1−cϑ)+cϑryrz(1−cϑ)+rxsϑrxrz(1−cϑ)+rysϑryrz(1−cϑ)−rxsϑrz2(1−cϑ)+cϑ
结构记忆法
对角线 = ri2(1−cϑ)+cϑ;非对角 = rirj(1−cϑ) ± 「剩余那根轴的分量 × sϑ」,反对称部分的符号由叉积 r× 决定。校验两个特例:r=z 时退化为 Rz(ϑ);ϑ=0 时退化为 I3。
推导这九个元素不必硬乘五个矩阵。先立一件工具,再走五步。
定义 2.5.2 · 叉乘算子 S(ω)(反对称矩阵)
对任意三维向量 ω,定义 3×3 矩阵
S(ω)=0ωz−ωy−ωz0ωxωy−ωx0,满足 S(ω)p≡ω×p (∀p∈R3).
(逐列验证:第 1 列 S(ω)x=ω×x=[0,ωz,−ωy]T,恰为矩阵的第 1 列;其余两列同法。)S(ω) 满足 ST(ω)=−S(ω),即反对称矩阵:对角线恒为零、非对角元素镜像反号;此外还有 S(ω)=−S(−ω)。第 3 章将证明 S(ω) 正是角速度的矩阵化身(定义 3.1.2);本节先把它当作「把叉积装进矩阵代数」的纯工具。
证明 · 从五步合成到 Rodrigues 矩阵(本编补充,对应原书习题 2.4)
第 0 步(工具:旋转保持叉积)。 对任意 R∈SO(3) 与向量 a,b,c,混合积只差一个 detR=1 的因子:
(Ra×Rb)⋅(Rc)=det[RaRbRc]=det(R)det[abc]=(a×b)⋅c.
令 c 取遍全部向量(Rc 随之取遍全部向量),两个关于 c 的线性函数处处相等,只能有 Ra×Rb=R(a×b)。翻译成叉乘算子,即共轭恒等式:对任意 ω,
RS(ω)RT=S(Rω).
(两边作用于同一任意向量 p 核验:左 =R(ω×RTp)=(Rω)×(RRTp)=(Rω)×p= 右。)
第 1 步(后两步 = 转置)。 记 M≜Rz(α)Ry(β)(前两步之逆)。由 Rk(−ϑ)=RkT(ϑ)(式 2.9),五步乘积的后两个因子 Ry(−β)Rz(−α)=RyT(β)RzT(α)=(Rz(α)Ry(β))T=MT,故
R(ϑ,r)=Rz(α)Ry(β)Rz(ϑ)Ry(−β)Rz(−α)=MRz(ϑ)MT.
第 2 步(M 的第三列就是 r)。 Ry(β)z=[sβ,0,cβ]T=[ρ,0,rz]T(ρ≜rx2+ry2),再左乘 Rz(α) 并用上面 α,β 的三角关系:
Mz=Rz(α)ρ0rz=ρcαρsαrz=rxryrz=r.
「把 r 借到 z 上、转完再还回去」的矩阵语言就是:M 把 z 轴送到 r 上(因此也把绕 z 的旋转共轭成绕 r 的旋转)。
第 3 步(把 Rz(ϑ) 拆成三件套)。 由式 2.6 直接展开:
Rz(ϑ)=cϑI+sϑS(z)+(1−cϑ)zzT
(cϑI 给对角、sϑS(z) 给左下 2×2 的反对称块、(1−cϑ)zzT 把右下角补成 1,逐块相加即还原式 2.6)。
第 4 步(相似变换逐件搬运)。 把第 3 步代入第 1 步:第一件 MMT=I 原样;第三件用第 2 步 M(zzT)MT=(Mz)(Mz)T=rrT;中间一件用共轭恒等式(取 ω=z)MS(z)MT=S(Mz)=S(r)。合并得紧凑形式
R(ϑ,r)=cϑI+(1−cϑ)rrT+sϑS(r).
第 5 步(逐元素写出)。 (rrT)ij=rirj 给全部「rirj(1−cϑ)」项;S(r) 的非对角元素给 ±sϑ 项(符号按 S(r)p=r×p 的约定)。逐元素展开即式 2.25。两个免费校验:r=z 时三件套与第 3 步逐件相同,退化为 Rz(ϑ);ϑ=0 时 cϑ=1、sϑ=0,退化为 I3。□
□
紧凑形式 cϑI+(1−cϑ)rrT+sϑS(r) 把式 2.25 的九个元素打包成三件「行李」——下节求逆解、下小节的指数映射都要用它。
定理 2.5.A · 表示不唯一(原书式 2.26)
R(−ϑ,−r)=R(ϑ,r).
即「绕 −r 转 −ϑ」与「绕 r 转 ϑ」是同一旋转——四参数组 (ϑ,r) 与 (−ϑ,−r) 对应同一矩阵,表示不唯一。这也是后续单位四元数(把「半角 + 轴」打包)试图修复的缺陷之一(2.4.5 预告框)。
逆问题:已知 R=[rij],反求 (ϑ,r)。只需对紧凑形式算两个量即可(推导直接可查,公式不必硬背)。
取迹——S(r) 对角线为零、tr(rrT)=rx2+ry2+rz2=1,轴被消去:
trR=3cϑ+(1−cϑ)⋅1=1+2cϑ⟹cosϑ=2r11+r22+r33−1(原书式 2.27)
取反对称部分——cϑI 与 (1−cϑ)rrT 都是对称矩阵,作差 R−RT 后只剩反对称件:
R−RT=2sϑS(r)⟹r=2sinϑ1r32−r23r13−r31r21−r12(sinϑ=0, 原书式 2.28)
(右端就是把 S(r)=2sϑR−RT 的三个独立元素抄成向量。)
定理 2.5.B · 逆解的失效情形
当 sinϑ=0(即 ϑ=0 或 π)时式 2.28 失去意义,须直接从 R 出发单独处理:
- ϑ=0(不旋转):R=I3,任何单位向量都可充当 r——轴完全任意,表示奇异;
- ϑ=π:cosϑ=−1、sϑ=0,反对称部分消失(R=RT 对称),须改从对称部分求解:紧凑形式此时为 R=2rrT−I3,故 ri2=(rii+1)/2,轴由对角线恢复、只差整体符号(两组解 ±r 都合法,公式见原书习题 2.5,本编习题 B4 给出推导)。
例 2.5.C · 规划视角的优劣账(新增;录播 0:22:56–0:23:06)
老师:「这种方式在规划或者其他方面是有优(势)的」——姿态插值时 ϑ 线性增长、r 保持固定,末端就像「绕定轴匀速转身」,也不会有欧拉角奇点;代价则是 4 参数非最简、(0,±π) 处逆解失效、表示不唯一。工程上的折中做法是:规划用角和轴「想」,存储与控制用旋转矩阵或四元数「算」。
2.5.1 用五步合成推出了 Rodrigues 公式,2.5.2 反解出了 (ϑ,r)。本小节换一副眼镜重看同一件事:把「绕 r 转 ϑ」想象成「以恒定角速度转过 ϑ 这么多」,Rodrigues 公式就变成矩阵指数(指数映射),逆解公式则变成它的逆(对数映射)。这副眼镜的回报立刻就能看到——第 3 章的角速度 ω、四元数的「半角打包」(2.6)乃至 SE(3) 的螺旋运动(2.7 末注),用的全都是同一套语言。
定义 2.5.3 · 李代数 so(3)
全体 3×3 反对称矩阵构成的集合
so(3)≜{S∈R3×3: ST=−S}
称为 SO(3) 的李代数(Lie algebra)。由 定义 2.5.2,每个 S∈so(3) 形如 S(ω) 且与 ω∈R3 一一对应——这一对操作常记作装帽 / 摘帽(hat / vee):
ω^=S(ω)∈so(3),(S(ω))∨=ω∈R3,
(不少教材把 S(ω) 写成 [ω]× 或 ω^。)因此 so(3) 是一个 3 维向量空间——对加法与数乘封闭——一组自然基(生成元)是
Sx=S(x)=0000010−10,Sy=S(y)=00−1000100,Sz=S(z)=010−100000,
任何 S(ω)=ωxSx+ωySy+ωzSz——「绕三根坐标轴的无穷小旋转」按分量组合出任意方向的无穷小旋转。
为什么说 so(3) 是 SO(3) 的「微分版本」(切空间)? 把紧凑形式按小角度 δ 展开(cδ≈1、sδ≈δ):
R(δ,r)=I+δS(r)+O(δ2),
同理由式 2.6–2.8 逐个验证 Rk(δ)=I+δSk+O(δ2)。无穷小旋转 = 单位阵 + 李代数元素;反过来,任何可微姿态轨迹 R(t) 的一阶差商 (R(δ)−I)/δ 的极限必落在 so(3) 里(第 3 章 定理 3.1.A 把这件事做成 R˙=S(ω)R)。用 2.2 的图像说:SO(3) 是一张 3 维曲面,so(3) 就是它在单位元 I 处的切平面——所有「一阶姿态变化」的居所。
定理 2.5.D · 指数映射——Rodrigues 公式的第二来历
对单位轴 r(∣r∣=1)、任意角 ϑ,矩阵指数
exp(ϑS(r))≜I+ϑS+2!ϑ2S2+3!ϑ3S3+⋯,S=S(r)
收敛且有闭式
exp(ϑS(r))=I+sinϑS+(1−cosϑ)S2.
代入 S2=rrT−I,即紧凑形式 cϑI+(1−cϑ)rrT+sϑS(r)——与 证明 五步合成的结果逐元素相同。于是
R(ϑ,r)=exp(ϑS(r)),
映射 exp:so(3)→SO(3) 称为 (so(3) 的)指数映射;ϑS(r) 称为 R(ϑ,r) 的指数坐标。
证明 · 幂次三循环 + 正弦余弦级数
幂次关系。 对 S=S(r)、∣r∣=1,作用到任意向量 p 上用二重叉积公式 r×(r×p)=(r⋅p)r−p(拉格朗日公式):
S2p=r×(r×p)=(rrT−I)p⟹S2=rrT−I,
再乘一次 S:S3p=r×((r⋅p)r−p)=−r×p(r 叉自己为零),故
S3=−S.
幂次就此「三循环」:S, S2, −S, −S2, S, …
级数按奇偶分家。 把 exp(ϑS) 的各项按含 S 还是 S2 归堆(S4=−S2、S5=S,依此循环):
exp(ϑS)=I+(ϑ−3!ϑ3+5!ϑ5−⋯)S+(2!ϑ2−4!ϑ4+⋯)S2=I+sinϑS+(1−cosϑ)S2,
两个括号正是 sinϑ 与 1−cosϑ 的泰勒级数。□
□
定理 2.5.E · 对数映射——逆解公式的来历
设 R∈SO(3) 且 sinϑ=0(ϑ=0,π)。则
logR=ϑS(r)=2sinϑϑ(R−RT),ϑ=arccos2trR−1,
称对数映射 log:SO(3)→so(3)——就是 2.5.2 两条逆解公式(式 2.27–2.28)的打包写法:「帽子」ϑS(r) 的摘帽结果即 (ϑ,r)。
失效点与 exp 的多值性一致:ϑ=0 时 exp(0)=I 对任意 r 成立(零元对应所有轴——对数不唯一,即 定理 2.5.B 的表示奇异);ϑ=π 时 R=2rrT−I 对称,r 与 −r 同样合法(对数二值),须从对角线 ri2=(rii+1)/2 恢复(习题 B4)。
指数 / 对数映射(本教程绘):左——SO(3) 示意为曲面,so(3) 是它在单位元 I 处的切平面;ϑS(r) 是切平面内的向量,exp「沿曲面转 ϑ」把它送到 R(ϑ,r),log 沿原路返回。右——(ϑ,r) 装帽进 so(3)、经 exp 到 SO(3);角速度 ω 也住在 so(3)(第 3 章 R˙=S(ω)R)。
这套语言买了什么(与全书的接口)
-
两条推导路合流:五步合成(几何,证明)与泰勒级数(分析,定理 2.5.D)殊途同归到 R(ϑ,r)=exp(ϑS(r))。以后见「Rodrigues 公式」,两副眼镜随取随用。
-
角速度住在 so(3) 里:第 3 章将证明 R˙=S(ω)R(定理 3.1.A)——姿态轨迹的一阶增量除以 dt 得到的正是李代数元素。「ω 不是任何『角度向量』的导数」(3.6.3 的注意点)在这副眼镜里的解释:旋转不可交换(2.3),不同时刻的无穷小旋转不能简单累加出一条「角度坐标」。
-
不可交换的残留物 = 李括号:so(3) 不止是向量空间,还自带一种乘法——李括号 [A,B]=AB−BA。在 so(3) 上:作用到任意 p,S(a)S(b)p=a×(b×p)=b(a⋅p)−(a⋅b)p,即 S(a)S(b)=baT−(a⋅b)I;与交换 a,b 的结果相减,常数项抵消:
[S(a),S(b)]=S(a)S(b)−S(b)S(a)=baT−abT=S(a×b).
so(3) 的李括号就是叉积——「代数」二字的含义所在,也是 2.3 的旋转不可交换在无穷小层面留下的痕迹(括号不为零)。
-
SE(3) 有同款:2.7 的齐次变换群 SE(3) 有自己的李代数 se(3)(见该节末注),指数映射给出螺旋运动——后续章节的「空间速度 / 旋量」即源于此。
默写点 · 合上书再写(主动回忆)
不看正文与速查卡,先写出下面几条,再展开核对。写不出来就说明这一节还没「拿走」。
- 写出把任意轴 r 转到 z 轴的五步左乘序列。
- 由 R 求 ϑ 与 r 的公式各是什么(各自用 R 的哪部分)?
- ϑ=0 与 ϑ=π 各出什么问题?
- 写出 Rodrigues 紧凑形式与 exp(ϑS(r)) 的闭式;S(r) 的幂次有何规律?
核对
Rz(α)Ry(β)Rz(ϑ)Ry(−β)Rz(−α)——全绕固定轴,左乘。
取迹求角:cosϑ=(r11+r22+r33−1)/2;取反对称部分求轴:r=2sϑ1[r32−r23, r13−r31, r21−r12]T。
ϑ=0:R=I,轴完全任意(表示奇异);ϑ=π:R=RT、反对称部分为零,轴无法由该式恢复,须用对称部分(ri2=(rii+1)/2)另解。
紧凑形式 cϑI+(1−cϑ)rrT+sϑS(r);exp(ϑS)=I+sinϑS+(1−cosϑ)S2;幂次三循环 S2=rrT−I、S3=−S——级数因此折成 sin / cos。
- 一条主线:任意旋转 = 一根轴 + 一个角 → 借 z 轴五步左乘合成 → 消去 α,β 得 Rodrigues 矩阵(紧凑形式 cI+(1−c)rrT+sS(r))→ 迹求角、反对称部分求轴。
- 李代数一句话:R(ϑ,r)=exp(ϑS(r)),逆解 = log;角速度 ω 也住在 so(3)(第 3 章 R˙=S(ω)R)。
- 失效点:ϑ=0 轴任意(exp 零元多值);ϑ=π 反对称部分为零(log 二值,从对角线恢复);(ϑ,r)≡(−ϑ,−r) 不唯一。
常见错误清单 · 自查三条
- 把五步序列写成右乘——每一步都绕固定轴,必须左乘(对照 ZYZ 的右乘,录播 0:25:40 专门对比过);
- 由式 2.28 求 r 后忘记归一化校验 ∣r∣=1——它是检验 R 是否为合法旋转矩阵的免费手段;
- 认为 4 个参数「比欧拉角多所以更差」——多 1 个参数换来的是无奇点(ϑ=0,π 时)与规划友好性,参数个数与表示质量不是一回事。