6D rotation representation
- Também chamado: 6D rotation, continuous 6D rotation representation
- Categoria: Foundations & spatial maths › Frames & transforms
- Tags: rotations, pose-estimation, deep-learning, spatial-math, so3
Codificar uma rotação 3D como dois vetores 3D, as duas primeiras colunas de sua matriz de rotação, para que redes neurais possam prever rotações sem as descontinuidades dos ângulos de Euler ou dos quatérnios.
Definição
A representação 6D de rotação (6D rotation representation) codifica uma rotação 3D com seis números: dois vetores 3D que, após a ortonormalização, se tornam as duas primeiras colunas da matriz de rotação. Ela foi introduzida por Zhou et al. em 2019 para redes neurais que preveem rotações ou as recebem como entrada. Para transformar as seis saídas de uma rede em uma rotação, o primeiro vetor é normalizado, a componente do segundo vetor ao longo do primeiro é removida e o resultado é normalizado, como na ortogonalização de Gram-Schmidt, e a terceira coluna é o produto vetorial das duas primeiras. Quaisquer seis números em que os dois vetores sejam não nulos e não paralelos são levados a uma matriz de rotação válida.
A motivação é a continuidade. Zhou et al. mostraram que toda representação de rotações 3D em quatro ou menos dimensões reais é descontínua: em algum lugar, rotações próximas entre si são levadas a representações distantes, ou o contrário. Os ângulos de Euler saltam quando o ângulo dá a volta e sofrem de gimbal lock; o eixo-ângulo dá a volta em uma rotação de π; os quatérnios têm o recobrimento duplo, em que q e −q descrevem a mesma rotação, e restringi-los a um hemisfério para eliminar essa ambiguidade introduz um salto na fronteira. Uma rede treinada para fazer regressão sobre esses alvos precisa aproximar uma função descontínua, o que tende a produzir erros grandes para algumas rotações. A representação 6D, assim como a matriz de rotação 9D completa, é contínua, e nos experimentos dos autores as redes treinadas com ela aprenderam rotações com mais precisão.
A forma 6D é redundante em vez de mínima, e sua etapa de Gram-Schmidt trata a primeira coluna de forma diferente da segunda. Uma alternativa comum prevê as nove entradas da matriz e as projeta na rotação mais próxima com uma decomposição em valores singulares, que é simétrica entre as colunas. As perdas costumam ser calculadas sobre a matriz de rotação recuperada, por exemplo como um ângulo geodésico ou uma distância de Frobenius, e não sobre os seis números brutos. A representação é uma ferramenta de aprendizado: a estimação e a otimização clássicas costumam trabalhar diretamente no grupo de rotações, com quatérnios ou atualizações na álgebra de Lie.
Por que importa
Muitos sistemas de aprendizado e de percepção para robôs preveem orientações: poses de objetos e de mãos, rotações de articulações humanas, ações do efetuador final. A escolha da representação de rotação afeta o quão bem essas redes treinam, e a representação 6D se tornou um padrão comum para saídas e entradas que são rotações.
Principais aplicações
- Estimativa de pose de objetos e mãos com redes neurais
- Modelos de pose e de corpo humanos que preveem rotações articulares
- Orientação do efetuador final em políticas de robô aprendidas e espaços de ações
- Regressão da pose da câmera e estimativa de pose relativa
- Modelos generativos de movimento e de preensões
Na prática
Uma equipe treina uma rede para estimar a pose do braço de uma pessoa a partir de sensores usados no pulso. Em vez de gerar ângulos de Euler para o ombro e o cotovelo, a rede gera seis números por articulação. Uma pequena camada converte cada conjunto de seis em uma matriz de rotação com Gram-Schmidt e um produto vetorial, e a perda compara essas matrizes com a verdade de referência da captura de movimento por meio do ângulo geodésico entre elas. A mesma codificação é usada para as entradas de orientação dos sensores, de modo que a rede nunca vê o salto quando o ângulo dá a volta. Na implantação, as matrizes de rotação previstas são convertidas em quatérnios ou ângulos articulares para o controlador do robô.
Equívocos comuns
- 6D significa uma pose completa de 6-DoF — a representação cobre apenas a rotação, que tem três graus de liberdade, codificada com seis números
- As seis saídas de uma rede já são uma rotação — elas precisam ser ortonormalizadas e completadas com um produto vetorial antes de formar uma matriz de rotação válida
- Os quatérnios são sempre a melhor escolha para o aprendizado — o recobrimento duplo e o salto introduzido ao restringi-los a um hemisfério os tornam descontínuos como alvos de regressão
- A representação 6D substitui os quatérnios em toda parte — ela foi projetada para entradas e saídas de redes neurais, enquanto filtros e otimizadores costumam trabalhar diretamente no grupo de rotações
Quem deve saber
- Pesquisadores de aprendizado de robôs que projetam espaços de ações e de observações
- Engenheiros de visão computacional que trabalham com estimativa de pose
- Pesquisadores de movimento humano e animação
- Engenheiros que treinam redes de preensão e manipulação
Tecnologias relacionadas
- Matriz de rotação (Rotation Matrix)
- Quatérnios (Quaternions)
- Ortogonalização de Gram-Schmidt (Gram-Schmidt Orthogonalization)
- Ortogonalização por SVD (SVD Orthogonalization)
- PyTorch3D
Termos relacionados
Projetos 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.