6D rotation representation
- También llamado: 6D rotation, continuous 6D rotation representation
- Categoría: Foundations & spatial maths › Frames & transforms
- Etiquetas: rotations, pose-estimation, deep-learning, spatial-math, so3
Codificar una rotación 3D como dos vectores 3D, las dos primeras columnas de su matriz de rotación, para que las redes neuronales puedan predecir rotaciones sin las discontinuidades de los ángulos de Euler o de los cuaterniones.
Definición
La representación 6D de la rotación (6D rotation representation) codifica una rotación 3D mediante seis números: dos vectores 3D que, tras la ortonormalización, se convierten en las dos primeras columnas de la matriz de rotación. La introdujeron Zhou et al. en 2019 para redes neuronales que predicen rotaciones o las reciben como entrada. Para convertir las seis salidas de una red en una rotación, se normaliza el primer vector, se elimina la componente del segundo vector a lo largo del primero y se normaliza el resultado, como en la ortogonalización de Gram-Schmidt, y la tercera columna es el producto vectorial de las dos primeras. Cualesquiera seis números en los que los dos vectores sean no nulos y no paralelos se transforman en una matriz de rotación válida.
La motivación es la continuidad. Zhou et al. demostraron que toda representación de las rotaciones 3D en cuatro o menos dimensiones reales es discontinua: en algún lugar, rotaciones cercanas entre sí se transforman en representaciones alejadas, o al revés. Los ángulos de Euler saltan cuando el ángulo da la vuelta y sufren bloqueo de cardán; el eje-ángulo da la vuelta en una rotación de π; los cuaterniones tienen el doble recubrimiento, en el que q y −q describen la misma rotación, y restringirlos a un hemisferio para eliminar esa ambigüedad introduce un salto en el borde. Una red entrenada para hacer regresión sobre esos objetivos tiene que aproximar una función discontinua, lo que tiende a producir errores grandes para algunas rotaciones. La representación 6D, como la matriz de rotación 9D completa, es continua, y en sus experimentos las redes entrenadas con ella aprendieron las rotaciones con más precisión.
La forma 6D es redundante en lugar de mínima, y su paso de Gram-Schmidt trata la primera columna de forma distinta a la segunda. Una alternativa habitual predice las nueve entradas de la matriz y las proyecta sobre la rotación más cercana con una descomposición en valores singulares, que es simétrica respecto a las columnas. Las pérdidas suelen calcularse sobre la matriz de rotación recuperada, por ejemplo como un ángulo geodésico o una distancia de Frobenius, y no sobre los seis números en bruto. La representación es una herramienta de aprendizaje: la estimación y la optimización clásicas suelen trabajar directamente sobre el grupo de rotaciones con cuaterniones o con actualizaciones en el álgebra de Lie.
Por qué importa
Muchos sistemas de aprendizaje y de percepción para robots predicen orientaciones: poses de objetos y de manos, rotaciones de articulaciones humanas, acciones del efector final. La elección de la representación de la rotación influye en lo bien que se entrenan estas redes, y la representación 6D se ha convertido en una opción por defecto habitual para salidas y entradas que son rotaciones.
Aplicaciones clave
- Estimación de la pose de objetos y manos con redes neuronales
- Modelos de pose y de cuerpo humanos que predicen rotaciones articulares
- Orientación del efector final en políticas de robot aprendidas y espacios de acciones
- Regresión de la pose de la cámara y estimación de la pose relativa
- Modelos generativos de movimiento y de agarres
En la práctica
Un equipo entrena una red para estimar la pose del brazo de una persona a partir de sensores llevados en la muñeca. En lugar de generar ángulos de Euler para el hombro y el codo, la red genera seis números por articulación. Una pequeña capa convierte cada grupo de seis en una matriz de rotación con Gram-Schmidt y un producto vectorial, y la pérdida compara estas matrices con la verdad de referencia de la captura de movimiento mediante el ángulo geodésico entre ellas. La misma codificación se usa para las entradas de orientación de los sensores, de modo que la red nunca ve el salto de vuelta del ángulo. En el despliegue, las matrices de rotación predichas se convierten en cuaterniones o en ángulos articulares para el controlador del robot.
Ideas erróneas comunes
- 6D significa una pose completa de 6-DoF — la representación cubre solo la rotación, que tiene tres grados de libertad, codificada con seis números
- Las seis salidas de una red ya son una rotación — deben ortonormalizarse y completarse con un producto vectorial antes de formar una matriz de rotación válida
- Los cuaterniones son siempre la mejor opción para el aprendizaje — su doble recubrimiento y el salto que introduce restringirlos a un hemisferio los hacen discontinuos como objetivos de regresión
- La representación 6D sustituye a los cuaterniones en todas partes — se diseñó para las entradas y salidas de redes neuronales, mientras que los filtros y los optimizadores suelen trabajar directamente sobre el grupo de rotaciones
Quién debería saberlo
- Investigadores en aprendizaje robótico que diseñan espacios de acciones y de observaciones
- Ingenieros de visión por computador que trabajan en estimación de pose
- Investigadores en movimiento humano y animación
- Ingenieros que entrenan redes de agarre y manipulación
Tecnologías relacionadas
- Matriz de rotación (Rotation Matrix)
- Cuaterniones (Quaternions)
- Ortogonalización de Gram-Schmidt (Gram-Schmidt Orthogonalization)
- Ortogonalización por SVD (SVD Orthogonalization)
- PyTorch3D
Términos relacionados
Proyectos relacionados
- 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.