6D rotation representation
- Detto anche: 6D rotation, continuous 6D rotation representation
- Categoria: Foundations & spatial maths › Frames & transforms
- Tag: rotations, pose-estimation, deep-learning, spatial-math, so3
Codificare una rotazione 3D come due vettori 3D, le prime due colonne della sua matrice di rotazione, così che le reti neurali possano predire rotazioni senza le discontinuità degli angoli di Eulero o dei quaternioni.
Definizione
La rappresentazione 6D della rotazione (6D rotation representation) codifica una rotazione 3D con sei numeri: due vettori 3D che, dopo l'ortonormalizzazione, diventano le prime due colonne della matrice di rotazione. È stata introdotta da Zhou et al. nel 2019 per le reti neurali che predicono rotazioni o le ricevono in ingresso. Per trasformare le sei uscite di una rete in una rotazione, si normalizza il primo vettore, si rimuove la componente del secondo vettore lungo il primo e si normalizza il risultato, come nell'ortogonalizzazione di Gram-Schmidt, e la terza colonna è il prodotto vettoriale delle prime due. Qualsiasi sestupla di numeri in cui i due vettori siano non nulli e non paralleli corrisponde a una matrice di rotazione valida.
La motivazione è la continuità. Zhou et al. hanno dimostrato che ogni rappresentazione delle rotazioni 3D in quattro o meno dimensioni reali è discontinua: da qualche parte, rotazioni vicine tra loro corrispondono a rappresentazioni lontane, o viceversa. Gli angoli di Eulero saltano quando l'angolo si riavvolge e soffrono del gimbal lock; l'asse-angolo si riavvolge a una rotazione di π; i quaternioni hanno il doppio ricoprimento, in cui q e −q descrivono la stessa rotazione, e limitarli a un emisfero per eliminare questa ambiguità introduce un salto al bordo. Una rete addestrata a regredire tali obiettivi deve approssimare una funzione discontinua, il che tende a produrre errori grandi per alcune rotazioni. La rappresentazione 6D, come la matrice di rotazione 9D completa, è continua, e nei loro esperimenti le reti addestrate con essa hanno appreso le rotazioni in modo più accurato.
La forma 6D è ridondante anziché minima, e il suo passo di Gram-Schmidt tratta la prima colonna in modo diverso dalla seconda. Un'alternativa comune predice tutte e nove le voci della matrice e le proietta sulla rotazione più vicina con una decomposizione ai valori singolari, che è simmetrica rispetto alle colonne. Le funzioni di perdita si calcolano di solito sulla matrice di rotazione ricostruita, ad esempio come angolo geodetico o distanza di Frobenius, anziché sui sei numeri grezzi. La rappresentazione è uno strumento per l'apprendimento: la stima e l'ottimizzazione classiche lavorano di solito direttamente sul gruppo delle rotazioni con quaternioni o aggiornamenti nell'algebra di Lie.
Perché è importante
Molti sistemi di apprendimento e percezione per robot predicono orientamenti: pose di oggetti e mani, rotazioni delle articolazioni umane, azioni dell'end effector. La scelta della rappresentazione della rotazione influisce su quanto bene si addestrano queste reti, e la rappresentazione 6D è diventata una scelta predefinita comune per uscite e ingressi che sono rotazioni.
Applicazioni principali
- Stima della posa di oggetti e mani con reti neurali
- Modelli di posa e del corpo umano che predicono rotazioni articolari
- Orientamento dell'end effector in policy robotiche apprese e spazi delle azioni
- Regressione della posa della telecamera e stima della posa relativa
- Modelli generativi di movimento e di prese
In pratica
Un gruppo addestra una rete a stimare la posa del braccio di una persona da sensori indossati al polso. Invece di produrre angoli di Eulero per spalla e gomito, la rete produce sei numeri per articolazione. Un piccolo strato converte ogni gruppo di sei in una matrice di rotazione con Gram-Schmidt e un prodotto vettoriale, e la funzione di perdita confronta queste matrici con il ground truth della cattura del movimento tramite l'angolo geodetico tra di esse. La stessa codifica è usata per gli ingressi di orientamento provenienti dai sensori, così la rete non vede mai il riavvolgimento dell'angolo. In fase di impiego, le matrici di rotazione predette vengono convertite in quaternioni o angoli articolari per il controllore del robot.
Idee sbagliate comuni
- 6D significa una posa completa a 6-DoF — la rappresentazione copre solo la rotazione, che ha tre gradi di libertà, codificata con sei numeri
- Le sei uscite di una rete sono già una rotazione — devono essere ortonormalizzate e completate con un prodotto vettoriale prima di formare una matrice di rotazione valida
- I quaternioni sono sempre la scelta migliore per l'apprendimento — il doppio ricoprimento e il salto introdotto limitandoli a un emisfero li rendono discontinui come obiettivi di regressione
- La rappresentazione 6D sostituisce i quaternioni ovunque — è stata progettata per gli ingressi e le uscite delle reti neurali, mentre filtri e ottimizzatori lavorano di solito direttamente sul gruppo delle rotazioni
Chi dovrebbe saperlo
- Ricercatori di apprendimento robotico che progettano spazi delle azioni e delle osservazioni
- Ingegneri di visione artificiale che lavorano sulla stima della posa
- Ricercatori di movimento umano e animazione
- Ingegneri che addestrano reti per la presa e la manipolazione
Tecnologie correlate
- Matrice di rotazione (Rotation Matrix)
- Quaternioni (Quaternions)
- Ortogonalizzazione di Gram-Schmidt (Gram-Schmidt Orthogonalization)
- Ortogonalizzazione tramite SVD (SVD Orthogonalization)
- PyTorch3D
Termini correlati
Progetti correlati
- 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.