6D Rotation Representation
6D 旋转表示6DCommonRepresenting a rotation with the first two columns of its rotation matrix — 6 numbers — a format well suited to neural-network learning.
The 6D rotation representation was introduced by Zhou et al. in their CVPR 2019 paper “On the Continuity of Rotation Representations in Neural Networks.” They showed that 3D rotations have no continuous representation in Euclidean spaces of 4 dimensions or fewer — Euler angles and quaternions both have discontinuities (for instance, q and −q represent the same rotation), which causes larger errors when a network regresses these targets directly — while a continuous representation does exist in 5 or 6 dimensions. The method keeps only the first two columns of the rotation matrix. To recover a full rotation, the first column is normalized, the component of the second column along the first is subtracted off and the result is normalized, and the third column is taken as the cross product of the two — a process similar to Gram-Schmidt orthogonalization. It's a common choice in robot learning for representing end-effector orientation, whether as an action or an observation.
ExampleDiffusion Policy's official code uses a RotationTransformer that by default converts axis-angle rotations to rotation_6d for handling end-effector orientation.
- Also called
- rotation_6d, Continuous 6D Rotation Representation
- Related
- Rotation Matrix · Quaternion · Euler Angles · 9D Rotation Representation · Action Representation · Diffusion Policy
- Sources
- On the Continuity of Rotation Representations in Neural Networks (Zhou et al., CVPR 2019)
real-stanford/diffusion_policy: rotation_transformer.py