SE(3)
- 又称: special Euclidean group, SE3, rigid-body transformation group
- 类别: Foundations & spatial maths › Frames & transforms
- 标签: lie-groups, rigid-body-motion, spatial-math, kinematics, pose-estimation
3D 空间中刚体运动构成的群,即所有旋转与所有平移的组合,通常写成 4×4 齐次变换矩阵。它描述位姿以及位姿的变化。
定义
SE(3),即三维特殊欧几里得群(special Euclidean group),包含所有刚体变换:一个取自 SO(3)(行列式为 +1 的 3×3 正交矩阵构成的群)的旋转 R,加上一个平移向量 p。把它写成 4×4 齐次矩阵(R 位于左上角,p 位于右侧一列,最下面一行为 [0 0 0 1])时,两个运动的复合就是矩阵乘法,其逆的旋转为 Rᵀ、平移为 −Rᵀp。SE(3) 的一个元素可以描述一个位姿,即一个坐标系相对于另一个坐标系的位置和姿态,也可以描述把点从一个坐标系带到另一个坐标系的一次运动。它有六个自由度,三个转动自由度和三个平移自由度;"特殊"一词意味着排除了反射。
SE(3) 是一个李群(Lie group),即一个本身也是群的光滑弯曲空间,而且它不是向量空间:把两个位姿相加,或逐元素地平均矩阵,都得不到一个有效的位姿。它在单位元处的切空间,即李代数 se(3),由组合了角速度和线速度的六维运动旋量(twist)组成。指数映射把运动旋量变成变换,对数映射则把它映射回去。这些映射是以下内容的基础:运动学中的指数积公式;SLAM 和位姿图求解器中使用的流形上优化,其中的更新以小的运动旋量形式施加;以及位姿的正确插值和不确定性表示。它的平面对应物 SE(2) 有三个自由度,即 x、y 和航向,用于移动机器人和被约束在平面内的物体,例如夹在夹爪两个平行夹指之间的物体。
SE(3) 中的位姿可以存储为齐次矩阵,存储为一个旋转(旋转矩阵、单位四元数或轴角)加一个平移向量,存储为对偶四元数,或用运动旋量坐标存储。在学习中,输出位姿的网络必须谨慎处理旋转部分,因为四元数对每个旋转覆盖两次,而且有些参数化是不连续的。SE(3) 等变(SE(3)-equivariant)网络把该群的对称性内建到结构中,因此当输入场景被旋转或平移时,它们的输出会一致地随之变换。
为何重要
机器人中的每一个坐标系、传感器外参、末端执行器目标和物体位姿都是 SE(3) 的元素。把它当作一个群,而不是十二个相互独立的数,可以避免旋转矩阵漂移、复合顺序错误和无效平均等常见错误,并使优化和不确定性估计正确无误。
主要应用
- 正运动学和末端执行器位姿目标
- SLAM、视觉里程计和位姿图优化
- 用于抓取的物体位姿估计
- 在位姿之间插值轨迹
- 标定传感器外参
- 面向操作的等变学习
实际应用
在一个拾取任务中,正运动学给出夹爪在基座坐标系中的位姿,手眼标定给出相机在夹爪坐标系中的位姿,位姿估计器给出物体在相机坐标系中的位姿。物体在基座坐标系中的位姿就是这三个变换按此顺序的乘积,而一致的坐标系命名约定可以防止把顺序弄混。在融合多个位姿估计时,团队在 SO(3) 上平均旋转,例如使用四元数平均或在切空间中迭代求均值,而不是平均矩阵元素。Sophus、manif 以及 ROS 中的 tf2 等库可以处理这些运算。
常见误解
- 位姿可以逐元素地平均或插值 — 结果通常不是一个有效的旋转;平均和插值必须遵守群结构
- SE(3) 只是把 SO(3) 和一个平移向量并排放在一起 — 元素是相同的,但在复合运动时旋转会作用于平移,因此复合规则不同
- 欧拉角加位置是一种安全的通用表示 — 它们能覆盖 SE(3),但存在奇异性;四元数或旋转矩阵可以避免这些奇异性
谁需要了解
- 处理坐标系的机器人软件工程师
- SLAM 和状态估计工程师
- 运动学和操作工程师
- 预测位姿的机器学习研究人员
相关技术
- SO(3)
- 李代数 se(3)(Lie Algebra se(3))
- 齐次变换矩阵(Homogeneous Transformation Matrix)
- 四元数(Quaternions)
- Sophus
- tf2
相关术语
相关项目
- AprilTag: The standard visual fiducial marker system for robot localization and pose estimation
- MoveIt 2: Motion planning framework for ROS 2 robot arms, with kinematics and collision checking
- manif: Header-only C++ Lie theory library for robotics state estimation
- PyRoki: Modular Python toolkit for kinematic optimization across CPU, GPU, and TPU via JAX
- PyPose: PyTorch library for differentiable robotics with deep learning and Lie group optimization
- DART: C++ physics engine for articulated rigid body dynamics and robotics simulation