Part I · 第 5 章 刚体运动与李群 · 5.5

李代数与 hat / vee

群是弯的,群在单位元处的切空间却是平的。对 SO(3),这个平地就是三维的角速度向量;对 SE(3),是六维的速度旋量 twist。hat 把向量变成矩阵,vee 把矩阵变回向量;李括号记录了"先动 A 再动 B"和"先动 B 再动 A"的差别,它在小量上就是叉积。

约 25 分钟 前置:1.8 叉积 · 5.3 齐次变换与 SE(3) · 5.4 为什么需要李群 5 个交互

    1为什么机器人需要它

    陀螺仪读出的是三个数 \((\omega_x, \omega_y, \omega_z)\),不是旋转矩阵。一个机械臂关节的速度、一个轮式机器人的"速度和转弯率",也都是几个数。它们有个共同点:可以相加、可以乘以时间、可以放进滤波器的状态里。上一节说过,姿态 \(R\) 和位姿 \(T\) 做不到这些,所以我们需要一个专门放"速度"的向量空间,并且知道它怎么和群对应。这个向量空间就是李代数。

    它在机器人学里无处不在:陀螺积分(5.6 节)、EKF 里的姿态误差状态和协方差(5.7、5.9 节)、机械臂的运动学和雅可比(3.4 节、5.10 节)、因子图优化里的"增量" \(\delta\)(6.9、6.10 节),统统都是李代数里的向量。本节介绍它的两个成员:\(\so\)(三维旋转的速度)和 \(\se\)(刚体的速度,即 twist),以及在向量和矩阵之间来回转换的 hat 和 vee。

    2直觉:旋转的"速度"是一个叉积

    刚体绕过原点的一根轴以角速度 \(\boldsymbol\omega\) 转动:转轴方向是 \(\boldsymbol\omega\) 的方向,转得多快是 \(\|\boldsymbol\omega\|\)(弧度每秒),方向由右手定则确定。物体上位置为 \(\mathbf p\) 的点,速度是 \(\boldsymbol\omega \times \mathbf p\)(1.8 节):垂直于转轴和 \(\mathbf p\),离转轴越远越快,转轴上的点不动。

    叉积是线性的,所以每个 \(\boldsymbol\omega\) 对应一个 \(3\times3\) 矩阵 \(\skew{\boldsymbol\omega}\),使得 \(\skew{\boldsymbol\omega}\,\mathbf p = \boldsymbol\omega\times\mathbf p\)。这个把向量变成矩阵的操作叫 hat,写作 \(\boldsymbol\omega^\wedge\);反过来读出向量叫 vee,写作 \(\Omega^\vee\)。下面拖动 \(\boldsymbol\omega\),看每个格点的速度箭头,和矩阵的每个元素是怎么随 \(\boldsymbol\omega\) 变的。

    FIG 1so(3):角速度向量 ω 与矩阵 ω^
    拖动画面旋转视角
    紫色粗箭头是 \(\boldsymbol\omega\)(转轴,长度正比于转速)。青色小箭头是格点处的速度 \(\boldsymbol\omega\times\mathbf p\);不带颜色的圆点和箭头是你用 \(\mathbf p\) 滑块选的测试点及其速度。矩阵 \(\skew{\boldsymbol\omega}\) 里,红、绿、蓝依次来自 \(\omega_1, \omega_2, \omega_3\),正负号和位置固定:对角线是 0,且关于对角线反对称。
    试一试
    • 令 \(\boldsymbol\omega = (0, 0, 1)\)。所有箭头在 \(xy\) 平面里绕 \(z\) 轴逆时针转圈。读一读矩阵:只剩哪两个元素非零?
    • 令 \(\boldsymbol\omega\) 非零,再用 \(\mathbf p\) 滑块把测试点放到转轴上(\(\mathbf p\parallel\boldsymbol\omega\),\(\|\mathbf p\| > 0.5\))。它的速度是 0:转轴上的点不动。
    核心洞见

    \(\so\) 里的元素有两种等价的写法:3 维向量 \(\boldsymbol\omega\)(方便存储、相加、放进状态向量),和3×3 反对称矩阵 \(\skew{\boldsymbol\omega}\)(方便和群里的矩阵相乘)。hat 和 vee 在二者之间翻译。上一节从 \(R\T R = I\) 推出的"\(\dot R(0)\) 是反对称矩阵",现在有了名字:它就是 \(\boldsymbol\omega^\wedge\)。

    3动手玩:从曲线读出速度,与李括号

    从旋转曲线 R(t) 读出角速度

    给你一条旋转曲线 \(R(t)\),怎样得到角速度?对它求导得 \(\dot R\),它不是反对称矩阵,但 \(R\T\dot R\) 和 \(\dot R R\T\) 是:

    $$ \skew{\boldsymbol\omega_b} = R\T\dot R \quad(\text{body frame}), \qquad \skew{\boldsymbol\omega_s} = \dot R R\T \quad(\text{space / world frame}), \qquad \boldsymbol\omega_s = R\,\boldsymbol\omega_b. $$

    它们读出的是同一个角速度矢量的两套坐标:世界系的 \(\boldsymbol\omega_s\) 和机体系的 \(\boldsymbol\omega_b\),正如 5.1 节同一个点在 W 和 B 里有不同读数。陀螺仪是装在机体上的,它读出的是 \(\boldsymbol\omega_b\)。下面的实验里,机体沿一条随时间变化的欧拉角曲线运动,数值求导得 \(\dot R\),再读出两个角速度。

    FIG 2从 Ṙ 读出 ω(机体系与世界系)
    拖动画面旋转视角
    紫色箭头是物理上的角速度矢量(只有一个)。浅色细线是它在世界轴(红绿蓝虚线)和在机体轴(实线)上的分量,分别对应 \(\boldsymbol\omega_s\) 和 \(\boldsymbol\omega_b\) 的三个读数。青色细线是机体的 \(x\) 轴尖端走过的轨迹。右侧第三行检查两件事:\(R\T\dot R\) 的对称部分确实是 0(数值误差内),以及 \(\boldsymbol\omega_s = R\boldsymbol\omega_b\)。
    试一试
    • 拖动时间,找一个时刻使 \(\|\boldsymbol\omega_s - \boldsymbol\omega_b\| > 0.8\):同一个矢量,两套读数差得很远。
    • 切换到"纯绕 z"曲线:任何时候 \(\boldsymbol\omega_s = \boldsymbol\omega_b\),为什么?

    李括号:小运动的"不可交换度"

    5.4 节的 FIG 2 里,先绕 \(x\) 转 \(a\) 再绕 \(y\) 转 \(b\),和反过来,夹角约是 \(ab\)。把这个观察精确化:取两个小的角速度 \(\mathbf a = \varepsilon\mathbf A\)、\(\mathbf b = \varepsilon\mathbf B\),做群的换位"先 \(\mathbf a\),再 \(\mathbf b\),再倒着撤销 \(\mathbf a\),再撤销 \(\mathbf b\)"。如果它们可交换,结果就是单位旋转。实际上结果是一个小的旋转,它的转轴-转角向量近似等于 \(\mathbf a\times\mathbf b\),也就是 hat 之后矩阵的换位子 \([\mathbf a^\wedge, \mathbf b^\wedge] = \mathbf a^\wedge\mathbf b^\wedge - \mathbf b^\wedge\mathbf a^\wedge\) 的 vee。这个 \(\mathbf a\times\mathbf b\) 就是 \(\so\) 的李括号。

    FIG 3群的换位子 ≈ 李括号 a × b
    拖动画面旋转视角
    琥珀 = \(\mathbf a = \varepsilon\mathbf A\),紫 = \(\mathbf b = \varepsilon\mathbf B\),青 = \(\mathbf a\times\mathbf b\),绿 = 群换位子的 Log:\(\mathbf c = \Log\big(\Exp(\mathbf a)\Exp(\mathbf b)\Exp(-\mathbf a)\Exp(-\mathbf b)\big)\)(这里先用 5.6 节的 Exp 和 Log,把它们当作"旋转向量 ↔ 旋转"的转换即可)。右侧表格列出 \(\varepsilon\) 减半时相对误差 \(\|\mathbf c - \mathbf a\times\mathbf b\|/\|\mathbf a\times\mathbf b\|\) 的变化:每次大约减半,说明误差比 \(\varepsilon^2\) 高一阶。
    试一试
    • 令 \(\mathbf A = (1,0,0)\)、\(\mathbf B = (0,1,0)\),把 \(\varepsilon\) 减到 0.1 以下:绿色箭头几乎盖住青色箭头,相对误差小于 10%。
    • 让 \(\mathbf B\) 与 \(\mathbf A\) 平行(例如 \(\mathbf B = 2\mathbf A\))。叉积为 0,换位子也精确为 0:绕同一根轴的旋转总是可交换的。

    se(3):加上平移,得到 twist

    刚体的速度有 6 个数:角速度 \(\boldsymbol\omega\) 和线速度 \(\mathbf v\),合起来是 twist \(\boldsymbol\xi = (\boldsymbol\omega, \mathbf v) \in \R^6\)(旋转在前,与 5.6 节、Modern Robotics 一致)。它的 hat 是一个 \(4\times4\) 矩阵 \(\boldsymbol\xi^\wedge = \begin{bmatrix}\skew{\boldsymbol\omega} & \mathbf v\\ \mathbf 0\T & 0\end{bmatrix}\),作用在齐次点 \((\mathbf p, 1)\) 上,得到 \((\boldsymbol\omega\times\mathbf p + \mathbf v,\ 0)\):点 \(\mathbf p\) 的速度。注意 \(\mathbf v\) 是"此刻位于原点的那个物体点"的速度,不一定是物体原点(一般位置)的速度。

    FIG 4se(3):twist ξ = (ω, v) 的速度场
    拖动画面旋转视角
    青色小箭头是各个格点的速度 \(\boldsymbol\omega\times\mathbf p + \mathbf v\)。紫色箭头是 \(\boldsymbol\omega\),紫色虚线是"螺旋轴":当 \(\boldsymbol\omega\ne0\) 时,轴上最近原点的点是 \(\mathbf q = \boldsymbol\omega\times\mathbf v/\|\boldsymbol\omega\|^2\),轴上的点只沿轴方向运动。琥珀色小箭头从原点指出 \(\mathbf v\)。
    试一试
    • 保持 \(\boldsymbol\omega\ne0\),调 \(\mathbf v\),让测试点 \(\mathbf p\) 的速度恰好为 0。这时 \(\mathbf v\) 应等于什么?(答案:\(-\boldsymbol\omega\times\mathbf p\)。)
    • 令 \(\boldsymbol\omega = 0\):每个格点的箭头一模一样,这是纯平移,螺旋轴在无穷远。

    4再看数学

    提示:把鼠标悬停在公式中带底色的符号上,FIG 1 或 FIG 4 中对应的量会被高亮。

    hat 与 vee(\(\so\))

    $$ \hl{w}{\cw{\boldsymbol\omega}} = \begin{bmatrix}\omega_1\\\omega_2\\\omega_3\end{bmatrix}\ \xrightarrow{\ (\cdot)^\wedge\ }\ \boldsymbol\omega^\wedge = \skew{\boldsymbol\omega} = \begin{bmatrix} 0 & -\omega_3 & \omega_2 \\ \omega_3 & 0 & -\omega_1 \\ -\omega_2 & \omega_1 & 0 \end{bmatrix}, \qquad \Omega^\vee = (\Omega_{32},\ \Omega_{13},\ \Omega_{21}), \qquad \skew{\boldsymbol\omega}\,\hl{p}{\mathbf p} = \boldsymbol\omega\times\mathbf p. $$

    \(\so = \{\Omega \in \R^{3\times3} : \Omega\T = -\Omega\}\) 是所有反对称矩阵的集合,是一个 3 维的向量空间,hat 与 vee 是它与 \(\R^3\) 之间的线性同构。(本课程、Modern Robotics、Barfoot 都用这个符号,Solà 的 micro Lie theory 写作 \([\boldsymbol\omega]_\times\);约定一致。)

    生成元(基)

    取三根坐标轴方向的单位角速度,得到 \(\so\) 的三个生成元,它们正是基本旋转 \(R_x(\theta), R_y(\theta), R_z(\theta)\) 在 \(\theta=0\) 处的导数:

    $$ G_1 = \ci{\skew{\hat{\mathbf e}_1}} = \begin{bmatrix}0&0&0\\0&0&-1\\0&1&0\end{bmatrix},\quad G_2 = \cj{\skew{\hat{\mathbf e}_2}} = \begin{bmatrix}0&0&1\\0&0&0\\-1&0&0\end{bmatrix},\quad G_3 = \ck{\skew{\hat{\mathbf e}_3}} = \begin{bmatrix}0&-1&0\\1&0&0\\0&0&0\end{bmatrix}, \qquad \boldsymbol\omega^\wedge = \omega_1G_1 + \omega_2G_2 + \omega_3G_3. $$

    例如 \(\frac{d}{d\theta}R_z(\theta)\big|_{0} = \begin{bmatrix}-\sin\theta&-\cos\theta&0\\\cos\theta&-\sin\theta&0\\0&0&0\end{bmatrix}_{\theta=0} = G_3\)。李代数中的任何元素都是生成元的线性组合,所以"3 个自由度"一目了然。

    曲线读出的速度

    对 \(R\T R = I\) 求导(5.4 节):\(R\T\dot R\) 反对称,所以 \(\dot R = R\,\boldsymbol\omega_b^\wedge\);同理 \(\dot R R\T\) 反对称,\(\dot R = \boldsymbol\omega_s^\wedge R\)。比较两式:\(\boldsymbol\omega_s^\wedge = R\,\boldsymbol\omega_b^\wedge R\T = (R\boldsymbol\omega_b)^\wedge\),即 \(\boldsymbol\omega_s = R\boldsymbol\omega_b\)(FIG 2)。\(\dot R = R\boldsymbol\omega_b^\wedge\) 是 5.6 节陀螺积分 \(R_{k+1} = R_k\Exp(\boldsymbol\omega\,dt)\) 的出发点:群元素乘上李代数元素,得到切向量。

    李括号

    李代数除了加法、数乘,还带一个运算:李括号,对矩阵李代数就是换位子 \([A, B] = AB - BA\)。它衡量"\(A\)、\(B\) 不可交换的程度"。对 \(\so\),换位子仍然是反对称的,并且

    $$ \big[\boldsymbol\omega_1^\wedge,\ \boldsymbol\omega_2^\wedge\big] = (\boldsymbol\omega_1\times\boldsymbol\omega_2)^\wedge, \qquad [G_1, G_2] = G_3,\ \ [G_2, G_3] = G_1,\ \ [G_3, G_1] = G_2. $$

    证明用雅可比恒等式 \(\mathbf a\times(\mathbf b\times\mathbf x) - \mathbf b\times(\mathbf a\times\mathbf x) = (\mathbf a\times\mathbf b)\times\mathbf x\)(对任意 \(\mathbf x\) 成立,把它写成矩阵形式就是上式)。李括号还有一个更几何的含义,就是 FIG 3:群的换位子 \(e^{\mathbf a}e^{\mathbf b}e^{-\mathbf a}e^{-\mathbf b} = \exp\big([\mathbf a, \mathbf b] + O(\varepsilon^3)\big)\)。\(\se\) 的李括号为

    $$ \big[\boldsymbol\xi_1^\wedge,\ \boldsymbol\xi_2^\wedge\big]^\vee = \begin{bmatrix}\boldsymbol\omega_1\times\boldsymbol\omega_2\\ \boldsymbol\omega_1\times\mathbf v_2 - \boldsymbol\omega_2\times\mathbf v_1\end{bmatrix} = \underbrace{\begin{bmatrix}\skew{\boldsymbol\omega_1} & \mathbf 0\\ \skew{\mathbf v_1} & \skew{\boldsymbol\omega_1}\end{bmatrix}}_{\operatorname{ad}_{\boldsymbol\xi_1}}\boldsymbol\xi_2. $$

    这个 \(6\times6\) 矩阵 \(\operatorname{ad}_{\boldsymbol\xi}\) 叫李括号的矩阵形式("小伴随"),5.8 节的伴随 Ad 是它的指数版本。这里的分块顺序对应 \((\boldsymbol\omega, \mathbf v)\);若换成平移在前,分块的行和列都要对调,得到 \(\begin{bmatrix}\skew{\boldsymbol\omega_1} & \skew{\mathbf v_1}\\ \mathbf 0 & \skew{\boldsymbol\omega_1}\end{bmatrix}\)。

    \(\se\) 的 hat、生成元与 se(2)

    $$ \boldsymbol\xi = \begin{bmatrix}\boldsymbol\omega\\ \hl{v}{\mathbf v}\end{bmatrix}\xrightarrow{\ (\cdot)^\wedge\ }\boldsymbol\xi^\wedge = \begin{bmatrix}\skew{\boldsymbol\omega} & \mathbf v\\ \mathbf 0\T & 0\end{bmatrix},\qquad \boldsymbol\xi^\wedge\begin{bmatrix}\mathbf p\\1\end{bmatrix} = \begin{bmatrix}\boldsymbol\omega\times\mathbf p + \mathbf v\\ 0\end{bmatrix}, \qquad \mathrm{se}(2):\ \boldsymbol\xi = \begin{bmatrix}\omega\\ v_x\\ v_y\end{bmatrix}\mapsto\begin{bmatrix}0&-\omega&v_x\\ \omega&0&v_y\\0&0&0\end{bmatrix}. $$

    \(\se\) 有 6 个生成元:三个转动 \(\begin{bmatrix}G_i&\mathbf 0\\\mathbf 0\T&0\end{bmatrix}\),三个平移 \(\begin{bmatrix}0&\hat{\mathbf e}_i\\\mathbf 0\T&0\end{bmatrix}\),所以它是 6 维的,与 \(\SE\) 的维数相同(5.4 节)。群的切向量和速度的关系是 \(\dot T = T\,\boldsymbol\xi^\wedge\)(\(\boldsymbol\xi\) 在机体系里表示的 twist,\(T^{-1}\dot T = \boldsymbol\xi^\wedge\)),5.8 节会讲怎样在机体系 twist 和世界系 twist 之间转换。

    5机器人中的它:差速小车的 twist

    两个驱动轮的小车,轮距 \(b\),左右轮线速度 \(v_l, v_r\)。车体中心的前进速度 \(v = (v_r + v_l)/2\),转弯角速度 \(\omega = (v_r - v_l)/b\)。在机体系里,这辆车的运动就是一个 \(\mathrm{se}(2)\) 的 twist \(\boldsymbol\xi = (\omega, v, 0)\):不会侧滑,所以 \(v_y = 0\)。位姿满足 \(\dot T = T\,\boldsymbol\xi^\wedge\)。

    常数 twist 的运动是什么样?如果 \(\omega\ne0\),是一个圆:圆心在机体系里是 \((0, v/\omega)\)(瞬时转动中心),半径 \(|v/\omega|\)。\(\omega = 0\) 时是直线(圆心在无穷远),\(v = 0\) 时是原地转(圆心就是车体中心)。这正是 5.6 节的"螺旋运动"在平面里的版本。

    FIG 5差速小车:轮速 → twist → 轨迹
    拖动小车可以重新放置
    琥珀色曲线是小车走过的轨迹,紫色虚圆是瞬时转动中心画出的圆,紫点是圆心 \((0, v/\omega)\) 在世界里的位置。轨迹由恒定 twist 下 \(\dot T = T\boldsymbol\xi^\wedge\) 的精确解(平面里的指数映射,下一节展开)逐步算出。把滑块拖到 \(v_l = v_r\) 时圆心跑到无穷远。
    试一试
    • 让两个轮速相等:\(\omega = 0\),twist 是纯平移,路径是直线。
    • 让左右轮速大小相等、方向相反:\(v = 0\),原地转,圆心就在车体中心。
    • 调出半径正好为 1 m 的圆周运动(误差 ±5 cm)。提示:\(R = \tfrac{b}{2}\tfrac{v_r+v_l}{v_r-v_l}\)。
    真实系统里

    IMU 的陀螺仪直接给出 \(\boldsymbol\omega_b\),是李代数 \(\so\) 里的向量;轮式里程计从编码器算出 \(\mathrm{se}(2)\) 的 twist,再积分得到位姿(5.6 节);机械臂的末端 twist 是关节速度的线性函数 \(\boldsymbol\xi = J(\mathbf q)\dot{\mathbf q}\)(3.4 节机器人雅可比)。状态估计里,姿态的误差状态 \(\delta\boldsymbol\theta\) 和位姿的误差状态 \(\delta\boldsymbol\xi\in\R^6\) 就是李代数元素,它们的协方差是 \(3\times3\) 或 \(6\times6\) 的普通矩阵(5.9 节)。库的符号:Sophus 的 SO3::hat / vee、GTSAM 的 Pose3::Logmap / Expmap、Eigen 里自己写的 skew(),都是同一个东西。

    6常见误区

    误区 1:把 \(\dot R\) 当成角速度,或忘了它不是反对称的

    \(\dot R\) 是切向量,位置依赖于 \(R\);反对称的是 \(R\T\dot R\) 或 \(\dot R R\T\)。所以 \(\dot R\) 本身不能 vee。读出角速度时一定要乘回 \(R\T\)(机体系)或 \(R\T\) 的另一侧(世界系)。

    误区 2:分不清机体系与世界系的角速度

    \(\boldsymbol\omega_s = R\boldsymbol\omega_b\)。陀螺仪读的是 \(\boldsymbol\omega_b\);控制器里用的角速度,有的在机体系(姿态环),有的在世界系(某些任务空间控制),弄错就会导致"小车倾斜后才出现的"方向错误。变量名里写清楚(omega_body、omega_world),和 5.1 节的坐标系命名纪律一样。

    误区 3:twist 的分量顺序、以及 v 的含义

    本课程和 Modern Robotics 用 \((\boldsymbol\omega, \mathbf v)\);Barfoot、Solà、Sophus 用 \((\mathbf v, \boldsymbol\omega)\)(5.6 节误区 5)。另外,twist 里的 \(\mathbf v\) 不一般是"物体原点的速度":机体系 twist 里它恰好是机体原点的速度(机体系读数),世界系 twist 里却是"此刻位于世界原点的那个物体点"的速度,两者相差 \(\boldsymbol\omega\times\mathbf t\)。

    误区 4:以为换位子精确等于叉积

    矩阵换位子 \([\mathbf a^\wedge, \mathbf b^\wedge]\) 精确等于 \((\mathbf a\times\mathbf b)^\wedge\),这是李代数里的恒等式。但群的换位子 \(e^{\mathbf a}e^{\mathbf b}e^{-\mathbf a}e^{-\mathbf b}\) 只在小量下近似 \(\exp(\mathbf a\times\mathbf b)\),误差是 \(\varepsilon^3\) 阶(FIG 3)。大旋转的"可交换程度"要用完整的 BCH 公式。

    7小练习

    1. \(\boldsymbol\omega = (1, 2, 3)\) 的 hat \(\boldsymbol\omega^\wedge\) 是?
    hat 的固定模式:第 1 行 \((0, -\omega_3, \omega_2)\),第 2 行 \((\omega_3, 0, -\omega_1)\),第 3 行 \((-\omega_2, \omega_1, 0)\)。选项 A 是它的转置(符号反了,相当于 \(-\boldsymbol\omega\) 的 hat);选项 D 是对称矩阵,不是 hat。
    2. \(\boldsymbol\omega = (0,0,1)\),一个点在 \(\mathbf p = (1, 0, 0)\)。它的瞬时速度 \(\boldsymbol\omega\times\mathbf p\) 是?
    \((0,0,1)\times(1,0,0) = (0\cdot0 - 1\cdot0,\ 1\cdot1 - 0\cdot0,\ 0) = (0, 1, 0)\)。右手定则:绕 \(z\) 轴逆时针转,\(x\) 轴上的点向 \(+y\) 方向运动。
    3. 生成元 \(G_1, G_2, G_3\) 的李括号 \([G_1, G_2]\) 等于?
    \([\hat{\mathbf e}_1^\wedge, \hat{\mathbf e}_2^\wedge] = (\hat{\mathbf e}_1\times\hat{\mathbf e}_2)^\wedge = \hat{\mathbf e}_3^\wedge = G_3\)。如果括号是 0,两个转动就可交换,而绕 \(x\) 与绕 \(y\) 转动显然不可交换。
    4. twist \(\boldsymbol\xi = (\boldsymbol\omega, \mathbf v)\),\(\boldsymbol\omega = (0,0,2)\),\(\mathbf v = (0,-2,0)\)。哪个点的速度恰好为 0?
    点 \(\mathbf p\) 的速度是 \(\boldsymbol\omega\times\mathbf p + \mathbf v\)。\(\mathbf p = (1,0,0)\):\((0,0,2)\times(1,0,0) = (0,2,0)\),加上 \(\mathbf v\) 得 0。这正是螺旋轴上最近原点的点 \(\mathbf q = \boldsymbol\omega\times\mathbf v/\|\boldsymbol\omega\|^2 = (1,0,0)\)。原点的速度是 \(\mathbf v \ne 0\)。
    5. \(\so\) 和 \(\se\) 的维数分别是?
    李代数的维数等于对应李群作为流形的维数(5.4 节):\(\SO\) 是 3,\(\SE\) 是 6。矩阵虽然是 \(3\times3\)、\(4\times4\),但反对称(以及最后一行为 0)的约束把独立元素个数压到了 3 和 6。

    8延伸阅读

    • K. Lynch & F. Park, Modern Robotics, Ch. 3.2–3.3 — 角速度、\(\so\)、twist 与 \(\se\)(本课记号与它一致)
    • J. Solà, J. Deray, D. Atchuthan, "A micro Lie theory for state estimation in robotics", arXiv:1812.01537, §2 — 李群、李代数、hat/vee 与李括号的简明总结(平移在前)
    • T. Barfoot, State Estimation for Robotics, Ch. 7 — \(\so\)、\(\se\) 的矩阵李代数与换位子
    • R. Murray, Z. Li, S. Sastry, A Mathematical Introduction to Robotic Manipulation, Ch. 2 — 刚体运动与 twist 的经典处理
    • 3Blue1Brown, "Cross products in the light of linear transformations" — 叉积为什么是一个线性变换(hat 的几何来源)