6D rotation representation
- 又称: 6D rotation, continuous 6D rotation representation
- 类别: Foundations & spatial maths › Frames & transforms
- 标签: rotations, pose-estimation, deep-learning, spatial-math, so3
把一个 3D 旋转编码为两个 3D 向量,即其旋转矩阵的前两列,使神经网络能够预测旋转,而不受欧拉角或四元数的不连续性影响。
定义
6D 旋转表示(6D rotation representation)用六个数来编码一个 3D 旋转:两个 3D 向量,经过正交归一化后成为旋转矩阵的前两列。它由 Zhou 等人于 2019 年提出,用于预测旋转或以旋转为输入的神经网络。要把网络的六个输出转换为旋转,先对第一个向量归一化,再去掉第二个向量沿第一个向量的分量并对结果归一化,就像 Gram-Schmidt 正交化那样,第三列则是前两列的叉积。任何六个数,只要其中的两个向量非零且不平行,都会映射为一个有效的旋转矩阵。
其动机在于连续性。Zhou 等人证明,3D 旋转在四维或更低维实数空间中的每一种表示都是不连续的:在某处,彼此接近的旋转会映射到相距很远的表示,或者反过来。欧拉角在角度回绕时会跳变,并且存在万向节锁;轴角在旋转达到 π 时发生回绕;四元数存在双重覆盖,即 q 和 −q 描述同一个旋转,而为消除这种歧义把它们限制在一个半球上,又会在边界处引入跳变。被训练去回归这类目标的网络必须逼近一个不连续函数,这往往会对某些旋转产生很大的误差。6D 表示与完整的 9D 旋转矩阵一样是连续的,在他们的实验中,用它训练的网络学习旋转更加准确。
6D 形式是冗余的而非最小的,而且其 Gram-Schmidt 步骤对第一列和第二列的处理方式不同。一种常见的替代方案是预测矩阵的全部九个元素,再用奇异值分解把它们投影到最近的旋转上,这对各列是对称的。损失通常在恢复出的旋转矩阵上计算,例如用测地角或 Frobenius 距离,而不是在六个原始数值上计算。这种表示是一种学习工具:经典的估计和优化通常用四元数或李代数更新,直接在旋转群上进行。
为何重要
许多机器人学习和感知系统都要预测朝向:物体和手的位姿、人体关节旋转、末端执行器动作。旋转表示的选择会影响这些网络的训练效果,而 6D 表示已经成为旋转类输出和输入的常用默认选择。
主要应用
- 用神经网络进行物体和手部位姿估计
- 预测关节旋转的人体姿态和人体模型
- 学习型机器人策略和动作空间中的末端执行器朝向
- 相机位姿回归和相对位姿估计
- 运动和抓取的生成模型
实际应用
一个团队训练一个网络,根据戴在手腕上的传感器估计一个人的手臂姿态。网络不为肩部和肘部输出欧拉角,而是为每个关节输出六个数。一个小的网络层用 Gram-Schmidt 和叉积把每组六个数转换成一个旋转矩阵,损失则通过这些矩阵与动作捕捉真值之间的测地角来比较两者。来自传感器的朝向输入也使用同样的编码,因此网络永远不会遇到角度回绕。部署时,预测出的旋转矩阵会被转换成四元数或关节角,交给机器人控制器。
常见误解
- 6D 指的是完整的 6-DoF 位姿 — 这种表示只涵盖旋转,旋转有三个自由度,用六个数来编码
- 网络的六个输出本身就是一个旋转 — 必须先对它们进行正交归一化,并用叉积补全,才能构成有效的旋转矩阵
- 对学习而言,四元数总是最佳选择 — 它们的双重覆盖,以及限制在一个半球上所引入的跳变,使它们作为回归目标是不连续的
- 6D 表示在任何地方都能取代四元数 — 它是为神经网络的输入和输出设计的,而滤波器和优化器通常直接在旋转群上工作
谁需要了解
- 设计动作空间和观测空间的机器人学习研究人员
- 从事位姿估计的计算机视觉工程师
- 人体运动和动画研究人员
- 训练抓取和操作网络的工程师
相关技术
- 旋转矩阵(Rotation Matrix)
- 四元数(Quaternions)
- Gram-Schmidt 正交化(Gram-Schmidt Orthogonalization)
- SVD 正交化(SVD Orthogonalization)
- PyTorch3D
相关术语
相关项目
- pySLAM: Hybrid Python/C++ visual SLAM pipeline with classic and deep-learning front-ends
- AprilTag: The standard visual fiducial marker system for robot localization and pose estimation
- manif: Header-only C++ Lie theory library for robotics state estimation
- PyPose: PyTorch library for differentiable robotics with deep learning and Lie group optimization
- Intrinsic Core: Intrinsic's open industrial robot stack: real-time control, planning and perception
- PULP-Dronet: Visual navigation for nano-drones with CNN inference onboard a PULP processor.