Bundle Adjustment
- Detto anche: BA
- Categoria: State estimation & navigation › Localisation
- Tag: slam, nonlinear-optimization, computer-vision, 3d-reconstruction, state-estimation
Affinamento congiunto ai minimi quadrati non lineari delle pose delle telecamere e delle posizioni 3D dei landmark, e talvolta dei parametri della telecamera, che minimizza l'errore di riproiezione di tutte le feature osservate.
Definizione
Il bundle adjustment (BA) affina una ricostruzione 3D regolando insieme le pose delle telecamere e le posizioni dei punti 3D, in modo che i punti, proiettati in ogni immagine, cadano il più vicino possibile a dove le feature sono state effettivamente osservate. La quantità minimizzata è la somma degli errori di riproiezione al quadrato, le distanze in pixel tra le posizioni previste e quelle misurate delle feature, di solito pesate in base all'incertezza di misura e racchiuse in una funzione di perdita robusta come Huber o Cauchy per limitare l'influenza delle corrispondenze errate. Il nome si riferisce ai fasci (bundle) di raggi luminosi che collegano ogni punto 3D ai centri delle telecamere che lo osservano; l'ottimizzazione regola questi fasci finché non concordano. La tecnica viene dalla fotogrammetria, e una trattazione moderna molto citata è la rassegna di Triggs, McLauchlan, Hartley e Fitzgibbon (2000).
Il problema è non lineare a causa delle rotazioni e della proiezione prospettica, quindi viene risolto in modo iterativo, tipicamente con Levenberg-Marquardt. La sua struttura lo rende trattabile su larga scala: ogni residuo coinvolge una sola telecamera e un solo punto, quindi il sistema è sparso, e i punti possono essere eliminati con il complemento di Schur lasciando un sistema molto più piccolo nelle sole variabili delle telecamere. La soluzione è definita solo a meno di una libertà di gauge, una rotazione e una traslazione globali e, per una singola telecamera senza altri sensori, una scala globale, quindi alcune variabili vengono fissate o si aggiunge un prior. I parametri intrinseci e la distorsione della telecamera possono essere affinati contemporaneamente quando non sono ben calibrati.
In robotica il BA è il nucleo della structure from motion e della SLAM visiva basata su keyframe. Il BA globale ottimizza l'intera mappa e viene eseguito offline o dopo le chiusure del loop; il BA locale o a finestra scorrevole ottimizza solo i keyframe più recenti e i landmark che vedono, mantenendo fissi o marginalizzati gli stati più vecchi, così da poter funzionare in tempo reale. I sistemi visivo-inerziali lo estendono con fattori di preintegrazione della IMU, e fattori di altri sensori possono essere aggiunti nello stesso grafo dei fattori. Il BA si differenzia dall'ottimizzazione del grafo delle pose perché mantiene i landmark come variabili e usa le misure grezze delle immagini; un grafo delle pose mantiene solo le pose e i vincoli relativi, il che è più veloce e più compatto ma scarta informazione.
Perché è importante
Il bundle adjustment è ciò che trasforma tracce rumorose di feature in traiettorie della telecamera e mappe 3D accurate. La maggior parte delle pipeline di odometria visiva, SLAM visiva e fotogrammetria si basa su di esso, e la scelta tra BA globale, locale e a finestra scorrevole determina in larga parte il compromesso tra accuratezza e prestazioni in tempo reale in questi sistemi.
Applicazioni principali
- Structure from motion e fotogrammetria
- Back-end della SLAM visiva e visivo-inerziale basata su keyframe
- Odometria visiva a finestra scorrevole su droni, veicoli e robot subacquei
- Affinamento della calibrazione multicamera e telecamera-LiDAR
- Ricostruzione 3D per ispezione, mappatura e gemelli digitali
In pratica
In un sistema SLAM visivo-inerziale su un robot subacqueo o aereo, si crea un nuovo keyframe ogni volta che la telecamera si è spostata abbastanza. Un ottimizzatore a finestra scorrevole affina poi le pose dei keyframe più recenti, le loro velocità e i bias della IMU, e tutti i landmark visti in quei keyframe, usando fattori di riproiezione dalle feature tracciate più fattori IMU preintegrati tra keyframe. I keyframe più vecchi vengono marginalizzati in un prior perché la finestra mantenga una dimensione fissa. Una funzione di perdita di Huber limita l'effetto delle corrispondenze errate causate da oggetti in movimento o riflessi. Quando viene rilevata una chiusura del loop, un'ottimizzazione del grafo delle pose o un BA globale completo corregge la deriva lungo l'intera traiettoria, di solito in un thread in background.
Idee sbagliate comuni
- Il bundle adjustment è la stessa cosa dell'ottimizzazione del grafo delle pose — il BA ottimizza anche le posizioni dei landmark rispetto alle misure delle immagini, mentre un grafo delle pose mantiene solo pose e vincoli relativi
- Il BA corregge una cattiva inizializzazione — è un ottimizzatore locale e ha bisogno di una stima iniziale ragionevole di pose e punti per convergere alla risposta giusta
- Il BA monoculare recupera la scala reale — senza un altro sensore o una dimensione nota, la scala non è osservabile e può derivare
- Il BA serve solo per la ricostruzione offline — le varianti locale e a finestra scorrevole funzionano in tempo reale in molti sistemi SLAM
Chi dovrebbe saperlo
- Ingegneri di SLAM visiva e odometria visiva
- Ingegneri di visione artificiale e fotogrammetria
- Ingegneri di stima dello stato che fondono telecamere con altri sensori
- Studenti di robotica che studiano mappatura e localizzazione
Tecnologie correlate
- Structure from Motion
- Algoritmo di Levenberg-Marquardt (Levenberg-Marquardt Algorithm)
- Ceres Solver
- g2o
- GTSAM
- COLMAP
Termini correlati
Progetti correlati
- LingBot-Map: Streaming 3D reconstruction from one camera: pose and depth for every frame, live
- oomwoo: Open-source DIY robot vacuum: 3D-printed, ROS2 + 2D LiDAR, fully local.
- Cartographer: Google's real-time 2D and 3D SLAM system for multi-platform robotics
- OpenDroneMap: Open-source photogrammetry toolkit that turns drone images into maps and 3D models
- FAST-LIVO2: Fast, direct LiDAR-inertial-visual odometry from HKU-MARS, published in IEEE T-RO
- DimOS: Python robotics runtime with agents, SLAM and teleop, no ROS required
Video
- Bundle Adjustment - 5 Minutes with Cyrill: Cyrill Stachniss
- The Basics about Bundle Adjustment (Cyrill Stachniss): Cyrill Stachniss