1. 刚体运动与位姿表示
-
机器人末端执行器(机械臂手爪、无人车、无人机机体等)的位姿 = 位置 + 姿态。
-
传统表示:
- 位置:三维向量
- 姿态:旋转矩阵 或四元数
但如果只把它们拼在一起,会遇到运算复杂、非线性强的问题。
👉 更自然的做法:
-
用 李群 来描述机器人在空间中的运动:
- :旋转群
- :平移
这样,一个矩阵就统一表示了机器人位姿,群运算就是连续的“组合运动”。
2. 速度与加速度:李代数的作用
-
李群 的切空间就是它的 李代数 。
-
元素是一个 4×4 的矩阵(通常压缩为 6 维向量),叫做 twist(运动旋量):
- :角速度
- :线速度
👉 意义:李代数自然对应 速度空间,机器人控制中的角速度/线速度就落在这里。
3. 指数映射与运动积分
-
指数映射: 把速度(李代数)积分成位姿(李群)。
-
机器人执行小时间步的运动:
这就是在李群上做“积分”,比欧拉积分在欧几里得空间更自然,避免了旋转矩阵正交性丢失。
4. 线性化与优化
在 SLAM / 视觉里程计 / 状态估计中:
- 位姿的误差不能直接在欧几里得空间里相加(因为旋转空间是非线性的)。
- 使用李代数,可以把误差“拉回”到切空间 ,做线性近似和优化。
例如:
- 误差状态卡尔曼滤波 (ESKF):把姿态误差放在李代数里更新,保证一致性。
- 非线性优化 (bundle adjustment, pose graph optimization):增量更新在李代数空间做,再通过指数映射回到李群。
5. 常见应用总结
- 运动学建模:机械臂用 乘法表示连杆组合。
- 动力学与控制:角速度、线速度 = 李代数元素。
- SLAM/视觉里程计:优化时的增量更新在李代数上进行。
- 路径规划与轨迹跟踪:在李群上插值和积分。
- 传感器融合:IMU 测得的角速度、加速度自然落在李代数里。
📌 一句话总结:
- 李群(比如 )提供了机器人“位姿”的自然表示。
- 李代数(比如 )则提供了“速度与误差”的线性空间工具。 二者结合,让机器人学中的运动建模、状态估计和控制都变得既严谨又高效。
Q&A
如果我需要对多自由度的机械臂求逆动力学,是否可以用到李群
可以的,而且李群 / 李代数在多自由度机械臂的逆动力学中用得越来越多,尤其在现代机器人学的几何方法(Geometric Mechanics, Geometric Control)里。
🔹 1. 背景:逆动力学问题
- 逆动力学:已知机械臂的关节角、速度、加速度,求出实现该运动所需的关节力矩。
- 传统做法:用 Euler–Lagrange 或 Newton–Euler 方法。
- 这些方法基于坐标系/矩阵推导,写起来复杂,容易丢掉几何不变性。
🔹 2. 李群/李代数方法的优势
机械臂运动属于 刚体运动组合,天然落在李群 上。 李群方法提供了一种更简洁、结构化的描述:
- 位姿:每个连杆的位姿 。
- 速度:关节速度映射到李代数 ,得到 twist。
- 加速度:用李代数上的导数(伴随表示 Adjoint / Lie bracket)来处理。
- 动力学方程:写成李群上的递推形式,结构更清晰。
🔹 3. 常用方法
(1) 乘法积公式(Product of Exponentials, POE)
机械臂正运动学:
- :第 个关节的 twist
- :初始末端位姿
用李群指数映射直接表达各关节对末端位姿的贡献。
(2) 递归 Newton–Euler 算法的李群版本
- 在李群框架下,用 伴随映射 (Adjoint, Ad) 来描述速度、加速度在不同坐标系之间的转换。
- 比传统 Denavit-Hartenberg 符号更简洁。
- 递推计算复杂度仍然是 ,但公式更几何化。
(3) Lie group variational integrator
- 用李群上的变分法推导动力学方程(基于 Lagrangian),数值稳定性更好。
🔹 4. 为什么适合逆动力学?
在逆动力学里,我们需要大量操作:
- 坐标变换(旋转 + 平移)
- 速度/加速度的传播
- 惯量的变换 这些运算在李群 / 李代数框架下可以统一写成:
- :伴随变换(速度在坐标系之间的变换)
- :李代数的对易子(描述科氏项、惯性耦合)
- :关节的 twist 方向
这些公式结构清晰,而且直接来自李群理论,比传统写法更直观。
🔹 5. 实际应用
现代机器人学教材(Murray, Li, Sastry 《A Mathematical Introduction to Robotic Manipulation》)几乎都是用李群方法来描述机械臂运动学和动力学。
数值实现:目前主流的机器人库(如
Pinocchio、Drake)都采用了李群/李代数框架来做正/逆动力学。好处:
- 保证旋转矩阵始终在 上(避免数值漂移)
- 公式统一,适合多自由度复杂机器人
- 更自然地处理耦合项、科氏力、离心力
✅ 结论: 是的,李群/李代数方法非常适合做多自由度机械臂的逆动力学。它能让推导更简洁,避免数值误差,同时和控制、优化等后续环节无缝衔接。
基于 李群/李代数框架 和基于原来那种 旋转平移矩阵 的算法相比,好处是什么
🔹 1. 表达的统一性
-
传统方法
- 把旋转用 矩阵 ,平移用 向量 。
- 位姿 。
- 速度、加速度需要单独定义公式,常常分成“角速度 + 线速度”。
-
李群/李代数方法
- 位姿直接在 上(齐次矩阵群)。
- 速度、加速度自然落在李代数 (用 twist 向量统一描述)。
- “旋转 + 平移 + 速度 + 加速度”统一在同一个代数框架下。
👉 好处:描述更紧凑、统一,不用在不同公式间切换。
🔹 2. 保持几何一致性
-
传统方法
- 用数值积分更新旋转矩阵时,可能逐渐失去正交性()。
- 需要额外的归一化或正交化步骤。
-
李群/李代数方法
-
更新位姿用指数映射:
-
保证结果始终在 或 上。
-
👉 好处:数值稳定,保证旋转矩阵正交性,避免漂移。
🔹 3. 误差建模更自然
-
传统方法
- 姿态误差要在欧几里得空间里“近似展开”,容易引入不一致。
- SLAM、滤波、优化时需要手工设计姿态扰动模型。
-
李群/李代数方法
- 误差自然定义在李代数(切空间)上,可以线性近似。
- 更新时用指数映射回李群。
- 这就是 SLAM / VIO 中常用的 误差状态卡尔曼滤波(ESKF) 的基础。
👉 好处:误差建模严谨,优化收敛性更好。
🔹 4. 运算公式更简洁
-
传统方法
- 转换不同坐标系下的速度/加速度,需要写大量矩阵运算。
- 科氏项、离心力等公式复杂,容易出错。
-
李群/李代数方法
-
统一用 伴随 (Adjoint) 和 对易子 (Lie bracket) 来表示:
-
一组公式搞定全部关节。
-
👉 好处:结构统一,推导简化,更易扩展到高自由度机器人。
🔹 5. 可扩展性与数值效率
-
传统方法
- 每增加自由度,推导和实现都要重新写很多公式。
- 高自由度系统时,代码复杂度上升快。
-
李群/李代数方法
- 公式递归形式统一,适合高自由度机器人(例如 humanoid、柔性机械臂)。
- 已有高性能实现(
Pinocchio,Drake等库),数值效率和稳定性优于传统方法。
👉 好处:适合复杂系统,代码简洁且可维护。
🔹 总结对比表
| 方面 | 传统旋转/平移矩阵方法 | 李群/李代数方法 |
|---|---|---|
| 表达 | 分开处理旋转和平移 | 统一在 |
| 数值稳定性 | 可能丢失正交性 | 始终在群上 |
| 误差建模 | 需要欧几里得近似 | 自然在李代数上 |
| 公式 | 各种特殊公式,复杂 | Adjoint + Lie bracket,统一 |
| 可扩展性 | 高自由度时推导繁琐 | 递归统一,扩展方便 |
| 应用 | 传统机械臂足够 | 现代 SLAM, humanoid, 高精度控制 |
✅ 一句话总结: 李群/李代数方法最大的优势是 数学统一性 + 几何一致性 + 数值稳定性,特别适合 高自由度、复杂场景、需要严谨误差处理 的机器人学问题。