具身智能入门——李群、 李代数、 四元数
李群 · 李代数 · 四元数 · 具身智能
一张"全景地图"
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且detR=+1 R^T R = I \quad \text{且} \quad \det R = +1 RTR=I且detR=+1
- RTR=IR^T R=IRTR=I(正交性)→ 旋转不改变长度、不产生拉伸扭曲
- detR=+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^TR−1=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\|=1∥q∥=1 就能保持合法性,比强制 RTR=IR^T R=IRTR=I 更省事
- 两个旋转复合 = 四元数乘法(比 3×3 矩阵乘法便宜)
但也带来一个 quirky 点:双倍覆盖——qqq 和 −q-q−q 代表同一个旋转(因为 θ/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 升到 RRR 或 qqq | 抓住"电梯"概念 |
| 第⑤步 | 看一个 SLAM/机器人库(OpenVINS / Sophus)里 SO3::exp(dθ) 怎么用 |
见到工程真容 |
前置知识只需要:线性代数(矩阵乘法、转置、特征值)+ 基础微积分(导数、泰勒展开 ex≈1+xe^x\approx 1+xex≈1+x)。不需要先修微分几何——那是后来的事。
如果你告诉我你目前数学进度(线代到哪章、有没有学过C++/Python),我可以接着给你:
- 一份 60 行的 Python 脚本,把
欧拉角 ↔ 旋转矩阵 ↔ 四元数 ↔ so(3)增量全打通,跑起来看数值; - 或者从你专业方向(CS/自动化/数学/机械)出发,告诉你这四样东西在你以后的课表里分别在哪门课正式出现、分别用什么教材最友好。
更多推荐


所有评论(0)