Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

2.2 旋转矩阵

把 2.1 得到的 9 个方向余弦组织成一个矩阵,就得到机器人学最核心的工具——旋转矩阵。本节先给出它的定义与两条代数性质,再推导三个基本旋转(全章积木),最后用两个小例子兑现它的三重几何身份。本节内容对应第 1 周录播 2:05–2:18(幻灯片 07208 / 07715 / 08239);第 2 周开篇 0:02:47–0:05:21 另有一段复习(下方两处「第 2 周」时间点即出自该段)。

2.2.1 定义与两条代数性质

定义 2.2.1 · 旋转矩阵

把式 2.2 的 9 个方向余弦按列排成(3×3)矩阵

R=[x′y′z′]=[xx′yx′zx′xy′yy′zy′xz′yz′zz′](原书式 2.3)R=\begin{bmatrix}\boldsymbol x'&\boldsymbol y'&\boldsymbol z'\end{bmatrix} =\begin{bmatrix}x'_x & y'_x & z'_x\\ x'_y & y'_y & z'_y\\ x'_z & y'_z & z'_z\end{bmatrix}\qquad(\text{原书式 }2.3)

称为旋转矩阵:每一列就是固连系对应轴在参考系中的表示,故又称方向余弦阵(第 2 周录播 0:03:23:「它的每一个值实际上就是一个余弦值」)。

两条代数性质不必死记——从定义直接乘一遍就出来了(原书式 2.4–2.5)。注意 RTR^{\mathrm T} 的第 ii 行正是 RR 的第 ii 列,于是 RTRR^{\mathrm T}R 的 (i,j)(i,j) 元恰是第 ii 列与第 jj 列的点积。记三列为 c1=x′,c2=y′,c3=z′\boldsymbol c_1=\boldsymbol x',\boldsymbol c_2=\boldsymbol y',\boldsymbol c_3=\boldsymbol z',则

(RTR)ij=ciTcj=ci⋅cj={∥ci∥2=1,i=j0,i≠j⟹RTR=I3,R−1=RT.(R^{\mathrm T}R)_{ij}=\boldsymbol c_i^{\mathrm T}\boldsymbol c_j=\boldsymbol c_i\cdot\boldsymbol c_j =\begin{cases}|\boldsymbol c_i|^2=1,& i=j\[1mm] 0,& i\ne j\end{cases} \qquad\Longrightarrow\qquad R^{\mathrm T}R=I_3,\qquad R^{-1}=R^{\mathrm T}.

对照上式逐项读:单位模长给对角线的 11,两两垂直给非对角的 00——所谓正交性,就是「三列构成标准正交组」的矩阵说法。

行列式也一步到位:对 RTR=I3R^{\mathrm T}R=I_3 取行列式,得 (det⁡R)2=1(\det R)^2=1,故 det⁡R=±1\det R=\pm1。

两个符号各有归属。det⁡R=−1\det R=-1 对应把某一根轴镜像翻转的「照镜子」坐标系(左手系);而右手系的固连坐标系总可以连续转回与参考系重合,det⁡\det 是元素的连续函数、途中不可能从 +1+1 跳到 −1-1,故右手系必为 det⁡R=+1\det R=+1。据此定义:

定义 2.2.2 · 特殊正交群 SO(3)

SO(3)={R∈R3×3: RTR=I3, det⁡(R)=1}.SO(3)=\{R\in\mathbb{R}^{3\times3}:\ R^TR=I_3,\ \det(R)=1\}.

把维数推广一步:SO(m)SO(m) 的列是标准正交向量(单位长且两两正交),行列式也取 1;空间旋转取 m=3m=3,平面旋转取 m=2m=2(原书 orthonormal)。

9 个量、6 个约束、3 个独立参数

RR 表面上有 9 个元素,但三列模长为 1 给出 3 个约束,两两垂直再给出 3 个约束,一共 6 个约束压掉 6 个自由度,独立参数只剩 3 个(第 2 周录播 0:04:41「我们说它是九个量」→ 0:05:16「其实只有三个独立的元素」)。这本账是 2.4 欧拉角(3 参数)与 2.5 角和轴(4 参数)的出发点,也是 2.10 操作空间取最简表示的理由。

为什么叫「群」——顺便预定的两个词:李群与李代数

群(group)是带一种「乘法」的集合,满足四条公理:封闭性(任意两元之积仍在集合内)、结合律、存在单位元、每个元存在逆元。

SO(3)SO(3) 逐条兑现:两个旋转之积仍满足 RTR=IR^{\mathrm T}R=I、det⁡=+1\det=+1(封闭);矩阵乘法天然结合;I3I_3 是单位元;R−1=RTR^{-1}=R^{\mathrm T} 仍是旋转矩阵(有逆)。

像 SO(3)SO(3) 这样元素还能连续光滑变化的群称为李群(Lie group,挪威数学家 Sophus Lie 的姓音译「李」)——直观图像:全体姿态构成一个 3 维的光滑「曲面」,机器人转动时 R(t)R(t) 就在这张曲面上滑动。

这张曲面在单位元 I3I_3 处的切平面(无穷小旋转的世界)称为 SO(3)SO(3) 的李代数,记作 so(3)so(3)(小写)。它是 2.5.3 的主角——角和轴、Rodrigues 公式,以及第 3 章的角速度,都会在那里统一成「指数映射 / 对数映射」一对操作。此处只需先把名词立住:读到 SO(3)SO(3) 时,知道「它是一个元素可以连续变化的群」就够了。

2.2.2 基本旋转

参考系 O-xyzO\text{-}xyz 绕某一根坐标轴转过一个角,就得到 O′-x′y′z′O'\text{-}x'y'z'——这类单轴旋转是后面所有复合旋转的积木。约定逆时针方向为正(原书)。

先以绕 zz 轴转 α\alpha 为例(图 2.2),按定义逐列写出新轴在参考系中的投影:

x′=[cαsα0],y′=[−sαcα0],z′=[001]  ⟹  Rz(α)=[cα−sα0sαcα0001](原书式 2.6)\boldsymbol x'=\begin{bmatrix}c_\alpha\ s_\alpha\ 0\end{bmatrix},\quad \boldsymbol y'=\begin{bmatrix}-s_\alpha\ c_\alpha\ 0\end{bmatrix},\quad \boldsymbol z'=\begin{bmatrix}0\0\1\end{bmatrix} ;\Longrightarrow; R_z(\alpha)=\begin{bmatrix}c_\alpha & -s_\alpha & 0\ s_\alpha & c_\alpha & 0\ 0&0&1\end{bmatrix}\qquad(\text{原书式 }2.6)

录播 2:07–2:08 老师逐列带推:「前三列就是这个单位向量在三个轴上的投影——在 xx 轴上投影是多少?就是 cos⁡α\cos\alpha;在 yy 轴上呢?就是 sin⁡α\sin\alpha;在 zz 轴上呢?是 00。」

看懂上图(本教程绘),Rz(α)R_z(\alpha) 的每个元素就都有了出处:从 +z+z 端往下看,x′\boldsymbol x' 在 xx 轴上的投影是 cos⁡α\cos\alpha,在 yy 轴上的投影是 sin⁡α\sin\alpha——左图的三个彩色标注与右图矩阵里的彩色元素一一对应。

绕 z 轴基本旋转的几何与矩阵 左图从 z 轴正端俯视:x′ 转过角 α,其在 x 轴投影为 cosα、在 y 轴投影为 sinα;y′ 的投影给出 −sα 与 cα。右图为 Rz(α) 矩阵,彩色元素与左图彩色标注一一对应,第三行第三列钉住为 0 0 1。 绕 z 转 α:从 +z 端往下看 Rz(α) = 左图几何的矩阵化 x y x′ y′ cα sα −sα α 逆时针为正 同一张图既给出 x′ 列、也给出 y′ 列——两列合起来就是 Rz(α) cα −sα 0 sα cα 0 0 0 1 第 1 列 = x′ 的三轴投影,第 2 列 = y′ 的三轴投影 第 3 行 / 列 = [0 0 1]:绕谁转,谁不动(记忆钩子)
绕 z 基本旋转的几何 → 矩阵(本教程绘):逐列投影给出 Rz(α)R_z(\alpha) 的全部元素;蓝 / 绿 / 金三色把左图的 cα,sα,−sαc_\alpha,s_\alpha,-s_\alpha 与右图矩阵元素对应起来,第三行第三列的「钉住」结构对应「绕谁转谁不动」。

同样方法可得绕 yy 轴转 β\beta、绕 xx 轴转 γ\gamma 的矩阵(原书式 2.7–2.8):

Ry(β)=[cβ0sβ010−sβ0cβ],Rx(γ)=[1000cγ−sγ0sγcγ]R_y(\beta)=\begin{bmatrix}c_\beta & 0 & s_\beta\ 0&1&0\ -s_\beta & 0 & c_\beta\end{bmatrix},\qquad R_x(\gamma)=\begin{bmatrix}1&0&0\ 0&c_\gamma & -s_\gamma\ 0&s_\gamma & c_\gamma\end{bmatrix}

另有一条常用关系——负角旋转等于转置(原书式 2.9):

Rk(−ϑ)=RkT(ϑ),k=x,y,z.R_k(-\vartheta)=R_k^T(\vartheta),\qquad k=x,y,z .

几何意义与记忆法

Rk(ϑ)R_k(\vartheta) 描述「把参考系的三根轴调到与刚体坐标系一致,需要绕哪个单轴转多少」——这就是它作为姿态描述的含义(原书)。记忆:绕谁转,谁那一行/列就是 [0 0 1][0\ 0\ 1] 型的「钉住」结构,其余 2×2 是平面内的 c,sc,s 旋转块(符号按右手准则)。

为什么从基本旋转出发

任意复杂姿态都可由这三次基本旋转复合得到——这是 2.4 欧拉角表示的出发点(录播 2:09:「让这三个基本旋转转三次,就可以得到一个任意的指向」)。而「三次怎么乘」正是 2.3 要回答的合成规则。

2.2.3 向量的表示:坐标变换

有了三个基本旋转,接着看旋转矩阵如何作用于向量。先从两系原点重合的最简情形说起(图 2.3):空间中同一点 PP 在两个系中的坐标分别为 p\boldsymbol p 与 p′\boldsymbol p'。由式 2.3 可得(原书式 2.10):

p=R p′.\boldsymbol p=R,\boldsymbol p' .

原理 2.2.A · 坐标变换与逆变换

RR 是「把同一点在动系中的坐标换算到参考系」的变换矩阵。由正交性,逆变换白送(原书式 2.11):

p′=RTp.\boldsymbol p'=R^T\boldsymbol p .

例 2.1(原书)· 绕 z 轴转动后的坐标关系

两系只相差一个绕 zz 轴的转角 α\alpha。令 p=(ρx,ρy,ρz)\boldsymbol p=(\rho_x,\rho_y,\rho_z)、p′=(ρx′,ρy′,ρz′)\boldsymbol p'=(\rho'_x,\rho'_y,\rho'_z),由平面上的简单几何关系直接写出:

ρx=ρx′cos⁡α−ρy′sin⁡α,ρy=ρx′sin⁡α+ρy′cos⁡α,ρz=ρz′.\rho_x=\rho'_x\cos\alpha-\rho'_y\sin\alpha,\qquad \rho_y=\rho'_x\sin\alpha+\rho'_y\cos\alpha,\qquad \rho_z=\rho'_z .

即 p=Rz(α)p′\boldsymbol p=R_z(\alpha)\boldsymbol p'——同一个式 2.6 的矩阵既描述两系指向,又描述原点重合时的坐标换算(原书据此把「姿态描述」与「坐标变换」两种解释打通)。

2.2.4 旋转算子与三重几何身份

同一个乘积 p=Rp′\boldsymbol p=R\boldsymbol p',还有第二种读法:把 RR 当算子用,在同一坐标系内把向量「转过去」。因 RR 正交,乘积 p=Rp′\boldsymbol p=R\boldsymbol p' 与 p′\boldsymbol p' 模长相等——证明只需一步(原书):

∥p∥2=p′TRTR p′=p′Tp′=∥p′∥2.|\boldsymbol p|^2=\boldsymbol p'^T R^TR,\boldsymbol p'=\boldsymbol p'^T\boldsymbol p'=|\boldsymbol p'|^2 .

例 2.2(原书)· xy 平面内的向量旋转

xyxy 平面上的向量 p′\boldsymbol p' 绕 zz 轴转 α\alpha 得 p\boldsymbol p,其分量仍为

px=px′cos⁡α−py′sin⁡α,py=px′sin⁡α+py′cos⁡α,pz=pz′  ⟹  p=Rz(α)p′.p_x=p'_x\cos\alpha-p'_y\sin\alpha,\qquad p_y=p'_x\sin\alpha+p'_y\cos\alpha,\qquad p_z=p'_z\;\Longrightarrow\;\boldsymbol p=R_z(\alpha)\boldsymbol p' .

形式上与例 2.1 完全相同,但语义不同:这里是同一个系内把向量旋转,那里是两个系之间换算坐标(原书特别区分了这两种用法)。

定理 2.2.B · 旋转矩阵的三重几何身份

同一个 RR 有三种等价解读:

  1. 姿态描述——两个坐标系之间的相对指向,列向量为动系轴在参考系中的方向余弦;
  2. 坐标变换——同一点在两系(原点重合)下坐标之间的变换,p=Rp′\boldsymbol p=R\boldsymbol p';
  3. 旋转算子——同一坐标系内把一个向量旋转到新方向的算子。

录播 2:16–2:18 老师收束这三点时强调:「它本质上就是固连坐标系的单位向量在参考坐标系里的三个投影,三个单位向量所以是九个投影」——定义简单,但后面要大量使用。

默写点 · 合上书再写(主动回忆)

不看正文与速查卡,先写出下面几条,再展开核对。写不出来就说明这一节还没「拿走」。

  1. 默写 Rx(ϑ)R_x(\vartheta)、Ry(ϑ)R_y(\vartheta)、Rz(ϑ)R_z(\vartheta)。
  2. 写出旋转矩阵的三条性质(正交性、行列式、独立参数)。
  3. 旋转矩阵的三重身份是什么?各举一例。
核对

见公式速查卡 A2 节——注意 RyR_y 的 sin⁡\sin 项符号与 Rx,RzR_x,R_z 相反。

RTR=IR^{\mathrm T}R=I(即 R−1=RTR^{-1}=R^{\mathrm T})、det⁡R=+1\det R=+1、独立参数 3 个。

姿态描述(说工具相对法兰的朝向)/ 坐标变换(把相机系坐标搬到基座系)/ 旋转算子(把刀尖向量绕刀轴转 30°30°)。

2.2 小结与常见错误

  • 一条主线:9 个方向余弦 → 按列成阵 RR(式 2.3)→ 正交性给 R−1=RTR^{-1}=R^T 与 3 个独立参数 → 基本旋转 Rx,Ry,RzR_x,R_y,R_z 是积木 → 同一矩阵三重身份(姿态 / 变换 / 算子)。
  • 两个数字:9−6=39-6=3(独立参数,9 个量、6 个约束、3 个独立参数);det⁡R=+1\det R=+1(右手系)。
  • 一个打通:例 2.1(例 2.1,坐标变换)与例 2.2(例 2.2,旋转算子)形式同、语义异——读公式先问「同一点还是同一个系」。
常见错误清单 · 自查三条
  1. 把 R−1=RTR^{-1}=R^T 当废话——它来自正交性(原理 2.2.A),是「逆变换白送」的根源,务必能自己推;
  2. 混淆「姿态描述」与「坐标变换」:R10R_1^0 的列是系 1 的轴在系 0 中的像(把系 1 坐标搬到系 0),上下标读反就全错;
  3. 认为 det⁡R\det R 取 ±1\pm1 无所谓——det⁡=−1\det=-1 是左手系(含镜像),不属于 SO(3)SO(3),用它会得到「照镜子」的假姿态。