李群 · 李代数 · 四元数 · 具身智能

一张"全景地图"

0. 先建立一个画面:它们为什么要放在一起学?

你已经知道 ChatGPT 这类大模型——它活在屏幕里,吃文本、吐文本,很聪明,但没有身体

**具身智能(Embodied AI)**问的是一个更野的问题:

如果把 AI 装进一个有眼睛、有手脚、有轮子的物理身体里——让它从"会说"变成"会做"——数学上你需要什么?

答案是:你首先得让机器精确知道自己身体在哪儿、朝哪、怎么动。而"旋转"和"刚体运动"这回事,远比你直觉以为的狡猾——它不是普通的 xyz 空间,不能直接加加减减。于是李群 / 李代数 / 四元数就登场了。

一句话串起来:

概念 在具身智能里的角色
具身智能 🎯 目标场景:有身体的AI,感知→决策→行动的闭环
李群(SO(3)/SE(3)) 🌍 "合法姿态"住的空间——旋转和刚体运动的真身
李代数(so(3)/se(3)) 📐 把弯曲的姿态空间局部摊平成线性空间,让你可以求导、优化
四元数 💾 一种具体的、无奇点的编码方式,用来在计算中存旋转

一、具身智能——AI 长出"身体"之后

1.1 一句话定义

具身智能 = 智能体通过物理本体与真实环境实时交互,形成「感知 → 决策 → 行动 → 再感知」的闭环,从中学习与完成任务。

  • 离身智能(disembodied):ChatGPT、文生图……它们是"脑",但没有身体,不与物理世界直接交互。像一个博学的军师,能运筹帷幄,但不能亲自上阵
  • 具身智能(embodied):人形机器人、机械臂、自动驾驶、无人机……它们有本体(硬件载体)+ 感知器(相机/激光/IMU)+ 执行器(电机/轮子),必须在真实物理规则下干活。

举个具体例子:你说"我渴了",具身智能体需要完成

听懂语义 → 定位自己 → 走到厨房 → 识别杯子和水壶
→ 规划抓取姿态 → 倒水(控制力矩/关节角度)→ 递给你 → 全程不洒不撞

这条链路上,每一步都在和三维空间打交道——而三维空间里的姿态,就是李群的地盘。

1.2 为什么国家层面也在押注它?

2025 年"具身智能"首次写入中国政府工作报告,与量子科技、6G并列;2026 年连续第二年写入。底层逻辑很简单:

上一波 AI 革命征服了信息空间(文字、图像、代码);下一波要征服的是物理空间(操作、移动、制造、服务)。谁能把"会想的脑"和"听话的身体"无缝缝合,谁就掌握下一代生产力。


二、李群(Lie Group)——"合法旋转"住在一个弯曲的空间里

2.1 从"旋转矩阵"说起

三维空间里把一个物体转一下,可以用一个 3×3 矩阵 R 表示。但不是随便哪个 3×3 矩阵都配叫旋转——它必须满足:

RTR=I且det⁡R=+1 R^T R = I \quad \text{且} \quad \det R = +1 RTR=IdetR=+1

  • RTR=IR^T R=IRTR=I正交性)→ 旋转不改变长度、不产生拉伸扭曲
  • det⁡R=+1\det R = +1detR=+1特殊)→ 排除镜像翻转,保留右手系方向

所有满足这两条的矩阵组成的集合,叫 SO(3)——三维特殊正交群(Special Orthogonal Group)

再加一个平移向量 ttt,拼成一个 4×4 齐次矩阵,就叫 SE(3)——三维特殊欧氏群,描述完整的刚体位姿(位置 + 朝向)。

2.2 为什么说它是一个"群"?

因为旋转可以复合撤销

群公理 旋转矩阵的表现
闭合性 两个旋转叠起来 R1R2R_1 R_2R1R2,还是合法旋转
单位元 单位矩阵 III(不转)
逆元 R−1=RTR^{-1}=R^TR1=RT(反向旋转)
结合律 (R1R2)R3=R1(R2R3)(R_1 R_2)R_3 = R_1(R_2 R_3)(R1R2)R3=R1(R2R3)

所以 SO(3) 是一个。但它不只是群——它还是一个光滑流形(你可以连续地从一个旋转滑到另一个,像在球面表面滑动)。

“李群”= 群 + 光滑流形:元素既能做乘法复合,又在几何上形成一个可以微积分的光滑曲面。

2.3 关键直觉:SO(3) 是弯曲的,不是普通欧氏空间

想象地球仪的表面——你可以顺着表面连续滑动(光滑),但你不能走直线穿进太空

SO(3) 里每个"点"就是一个旋转姿态。你在它上面可以乘、可以取逆,但——

⚠️ 不能直接加! R1+R2R_1 + R_2R1+R2 的结果不再是旋转矩阵,它会把空间扭曲变形,物理意义上完全报废。

而几乎所有优化算法(梯度下降、LM、Bundle Adjustment……)的默认操作都是:当前估计 + 增量。在弯曲空间上直接加,等于在南半球地图上画直线——走不通。

这就逼出了下一个概念。


三、李代数(Lie Algebra)——把弯曲摊平,让你可以"加增量"

3.1 核心想法:站在单位元附近看"无穷小转动"

与其在弯曲的 SO(3) 球面上硬做加减,不如在每个点切一刀,用切平面来做局部线性近似——就像用地图(平面)来描述地球(球面)。

单位旋转 III 处的切空间,记作 so(3)\mathfrak{so}(3)so(3),它的元素是反对称矩阵

ω∧=[0−ωzωyωz0−ωx−ωyωx0]⟺ω⃗=(ωx,ωy,ωz) \omega^\wedge = \begin{bmatrix}0 & -\omega_z & \omega_y \\ \omega_z & 0 & -\omega_x \\ -\omega_y & \omega_x & 0\end{bmatrix} \quad \Longleftrightarrow \quad \vec{\omega}=(\omega_x,\omega_y,\omega_z) ω= 0ωzωyωz0ωxωyωx0 ω =(ωx,ωy,ωz)

那个三维向量 ω⃗\vec{\omega}ω 就是——角速度。(绕轴 u^\hat{u}u^,大小 ∥ω⃗∥\|\vec{\omega}\|ω 表示转得多快)

3.2 指数映射:从"每秒转多少"回到"旋转本身"

R=exp⁡(θ u^∧)\boxed{R = \exp(\theta\, \hat{u}^\wedge)}R=exp(θu^)

这就是罗德里格斯公式的李群语言版:角轴 (u^,θ)(\hat{u}, \theta)(u^,θ) → 旋转矩阵 RRR

反过来,对数映射:从旋转矩阵 RRR 解出轴+角。

所以你干活时就有了标准套路:

李群上不能直接加  →  退到李代数(切空间)做加减/求导/优化
                   →  用 exp() 把结果卷回李群,保证姿态永远合法

工程写法通常是扰动模型

  • 左扰动:Rnew=exp⁡(δθ∧) RR_{\text{new}} = \exp(\delta\theta^\wedge)\,RRnew=exp(δθ)R
  • 右扰动:Rnew=R exp⁡(δθ∧)R_{\text{new}} = R\,\exp(\delta\theta^\wedge)Rnew=Rexp(δθ)

其中 δθ∈R3\delta\theta \in \mathbb{R}^3δθR3 是李代数里的微小增量,可以做 δθ←δθ−α⋅grad\delta\theta \leftarrow \delta\theta - \alpha\cdot\text{grad}δθδθαgrad 之类的常规优化。

3.3 一句话记住

李群 = 真实的、弯曲的姿态空间(只能乘)
李代数 = 它摊平后的局部线性工作区(可以加减求导)
exp / log = 两者之间升降电梯


四、四元数(Quaternion)——旋转的"球面坐标",躲开欧拉角的坑

4.1 欧拉角的致命伤:万向锁

你可能用过 (俯仰, 横滚, 偏航) / (pitch, roll, yaw) 表示姿态。但它有个著名 bug:

当俯仰角 = ±90° 时,横滚轴和偏航轴对齐,丢失一个自由度——万向锁(Gimbal Lock)。飞机/机器人在这个姿态附近会突然"不知道怎么转",控制器发疯。

4.2 四元数怎么解决的

四元数长这样:

q=w+xi+yj+zk=(w,  v⃗),w2+x2+y2+z2=1(单位四元数)q = w + xi + yj + zk = (w,\;\vec{v}),\quad w^2+x^2+y^2+z^2=1 \text{(单位四元数)}q=w+xi+yj+zk=(w,v ),w2+x2+y2+z2=1(单位四元数)

对应一个绕轴 u^\hat{u}u^θ\thetaθ 的旋转:

q=(cos⁡θ2,  u^sin⁡θ2)q = \left(\cos\frac{\theta}{2},\; \hat{u}\sin\frac{\theta}{2}\right)q=(cos2θ,u^sin2θ)

关键点:

  • 没有万向锁(全局合法)
  • 只用 4 个数(vs 旋转矩阵 9 个,且有 6 个隐式约束)
  • 只要做一次归一化 ∥q∥=1\|q\|=1q=1 就能保持合法性,比强制 RTR=IR^T R=IRTR=I 更省事
  • 两个旋转复合 = 四元数乘法(比 3×3 矩阵乘法便宜)

但也带来一个 quirky 点:双倍覆盖——qqq−q-qq 代表同一个旋转(因为 θ/2\theta/2θ/2(θ+2π)/2(\theta+2\pi)/2(θ+2π)/2 差一个符号),所以做插值、平均时要小心处理符号歧义。

4.3 四元数 vs 李群/李代数的关系

它们不是竞争关系,而是不同层

李群 SO(3)  ←→  单位四元数 S³  (双覆盖:2个q↔1个旋转)
    ↑                ↑
  旋转的真身        一种具体编码/计算实现

李代数 so(3)  ←→  纯虚四元数 ℝ³  (角速度/旋转向量住这里)
    ↑                ↑
  切空间/工作区     做优化、求导、积分的真战场

简单说:四元数是 SO(3) 的好用的"计算外壳",李代数是你做数学推导时脱掉壳看到的骨骼


五、把它们放回具身智能:一张完整脉络图

环境(桌子/杯子/人)
    ↓ 传感器(相机/RGB-D/激光/IMU)
    ↓
┌─────────────────────────────┐
│  前端感知:检测物体、估计自己的位姿  │
│  位姿 = SE(3) 元素                  │ ← 李群住这儿
│  实现为:四元数+平移 或 旋转矩阵      │ ← 四元数住这儿
└──────────────┬──────────────────────┘
               │ 位姿不准 → 需要优化
               ↓
  后端优化(Bundle Adjustment / 因子图 / 滑窗滤波)
  "当前估计 + δθ"  → δθ ∈ so(3)/se(3)  ← 李代数住这儿
  exp(δθ^) 卷回 SE(3),保证合法         ← exp/log 电梯
               ↓
      决策规划(路径/抓取位姿)
               ↓
      控制(给电机发指令)→ 物理执行
               ↓
          新的观测 → 闭环 → 学习进化

这就是为什么具身智能的教材/论文/代码里,这三个数学对象几乎永远结伴出现:你描述的姿态是李群,你优化的增量在李代数,你存的数值是四元数(或矩阵)。


六、你该怎么学(不劝退版路线)

阶段 做什么 目标
第①步 亲手玩旋转矩阵:验证 RTR=IR^T R=IRTR=I,试试用 R1+R2R_1+R_2R1+R2 会怎样崩掉 相信"不能直接加"
第②步 从轴角 (u^,θ)(\hat{u},\theta)(u^,θ) 手动推罗德里格斯公式 理解旋转的最朴素参数化
第③步 写一小段代码:欧拉角↔旋转矩阵↔四元数互转,观察万向锁 感性认识为何需要四元数/李群
第④步 理解 exp/log 桥梁:李代数 ω⃗\vec{\omega}ω → 用 exp 升到 RRRqqq 抓住"电梯"概念
第⑤步 看一个 SLAM/机器人库(OpenVINS / Sophus)里 SO3::exp(dθ) 怎么用 见到工程真容

前置知识只需要:线性代数(矩阵乘法、转置、特征值)+ 基础微积分(导数、泰勒展开 ex≈1+xe^x\approx 1+xex1+x)。不需要先修微分几何——那是后来的事。


如果你告诉我你目前数学进度(线代到哪章、有没有学过C++/Python),我可以接着给你:

  1. 一份 60 行的 Python 脚本,把 欧拉角 ↔ 旋转矩阵 ↔ 四元数 ↔ so(3)增量 全打通,跑起来看数值;
  2. 或者从你专业方向(CS/自动化/数学/机械)出发,告诉你这四样东西在你以后的课表里分别在哪门课正式出现、分别用什么教材最友好。
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐