V-SLAM — Simultaneous Localization and Mapping
Indice
- Definizione di SLAM
- Framework Visual SLAM — Panoramica
- Formulazione Matematica dello SLAM
- Visual Odometry (VO)
- Step 1 — Feature Detection
- Step 2 — Feature Matching e Tracking
- Step 3 — Motion Estimation
- Step 4 — Local Optimization (Bundle Adjustment)
- Backend Optimization e Loop Closing
- Reconstruction
- Appendice — Geometria Epipolare
Definizione di SLAM
Mapping vs Localization
Definizione
SLAM (Simultaneous Localization and Mapping) è il problema di costruire una mappa di un ambiente sconosciuto mentre si stima simultaneamente la posizione di un agente (robot, veicolo, drone) all’interno di quella mappa.
I due problemi sono intimamente legati:
- Mapping (Come appare il mondo?): integrazione delle informazioni dei sensori in una rappresentazione dell’ambiente
- Localization (Dove mi trovo?): stima della posizione del robot nella mappa
Il circolo vizioso: per localizzarsi accuratamente serve una buona mappa, ma per costruire una buona mappa serve una stima accurata della posizione.
Varianti della localizzazione:
- Pose tracking: posizione iniziale nota, si traccia il movimento
- Global localization: posizione iniziale ignota, più difficile
SLAM e Visual SLAM
Lo SLAM può essere realizzato con sensori di varia natura: IMU, sonar, infrarossi, laser (LIDAR).
Definizione
Il Visual SLAM (V-SLAM) utilizza esclusivamente sensori visivi (camere monoculari, stereoscopiche, RGB-D) per risolvere il problema SLAM.
Vantaggi del V-SLAM:
- L’informazione visiva è molto più ricca rispetto ad altri sensori
- Sensori di costo limitato (webcam, smartphone)
Svantaggio: maggiore complessità computazionale, difficile da usare in tempo reale
Framework Visual SLAM — Panoramica
Il tipico framework V-SLAM si articola in 5 componenti:
Sensor data → [Frontend: Visual Odometry] → [Backend: Filters/Graphs] → Reconstruction
↓ ↑
[Loop Closing] ─────────────────┘
| # | Componente | Scopo |
|---|---|---|
| 1 | Sensor data | Acquisizione e pre-processing delle immagini |
| 2 | Visual Odometry (Frontend) | Stima del movimento della camera e generazione di una mappa locale approssimata |
| 3 | Backend (Filters/Graphs) | Ottimizzazione per generare mappa e traiettoria accurate |
| 4 | Loop Closing | Verifica del passaggio in posizioni precedentemente viste (riduzione drift) |
| 5 | Reconstruction | Costruzione della mappa specifica per il task |
Formulazione Matematica dello SLAM
Motion Equation e Observation Equation
Il sistema acquisisce dati a intervalli discreti. Si definiscono:
- : sequenza di pose (posizioni) che rappresenta la traiettoria
- : insieme di landmark della mappa
Il sistema è descritto da due equazioni:
Motion equation — come evolve la posa:
dove è il comando di controllo in input e è il rumore.
Observation equation — cosa osserva la camera:
dove è l’osservazione del landmark dalla posizione , e è il rumore (modellato dal modello di camera).
Esempio di motion equation per un robot planare:
State Estimation Problem
Il problema centrale
State Estimation Problem: come stimare (localizzazione) e (mapping), dato un input di controllo e un’osservazione ?
La soluzione dipende da:
- Forma delle equazioni (lineare / non lineare)
- Distribuzione del rumore (gaussiano / non gaussiano)
Il caso più semplice — lineare con rumore gaussiano — ha soluzione ottimale con i Filtri di Kalman (KF). Casi più complessi richiedono ottimizzazione non lineare.
Visual Odometry (VO)
Definizione
La Visual Odometry è il processo che stima incrementalmente la posizione di un veicolo esaminando i cambiamenti che il movimento induce nelle immagini acquisite da camere montate a bordo.
Vantaggio rispetto alla wheel odometry: la VO non è influenzata dallo slittamento delle ruote su terreni irregolari. Può essere combinata con wheel odometry, GPS, IMU, laser. È fondamentale in ambienti senza GPS (subacqueo, spazio).
Limite: la sola VO causa l’accumulo di un drift — uno scostamento crescente tra traiettoria stimata e reale, dovuto alla propagazione degli errori di stima.
Formulazione del Problema
Un agente acquisisce immagini a intervalli discreti . Le sequenze di immagini per i diversi tipi di camera:
- Monoculare:
- Stereo: e (camera sinistra e destra)
- RGB-D: (colore) e (profondità)
Le posizioni di camera consecutive e sono collegate da una trasformazione rigid body:
La posizione corrente si ottiene per concatenazione:
Lo scopo principale della VO è calcolare le trasformazioni relative tra frame consecutivi e concatenarle per ricostruire la traiettoria completa .
Pipeline della Visual Odometry
Feature Detection → Feature Matching/Tracking → Motion Estimation → Local Optimization
Condizioni necessarie per il funzionamento:
- Ambiente sufficientemente illuminato
- Predominanza di elementi statici nella scena
- Sufficiente tessitura che consenta la stima del movimento apparente
- Sufficiente sovrapposizione della scena tra frame consecutivi
Step 1 — Feature Detection
Obiettivo: individuare un insieme di feature al tempo .
Le feature salienti si trovano in aree ad alto contrasto dell’immagine. Si usano tecniche basate su keypoint: Harris, FAST, SIFT, ORB….
Step 2 — Feature Matching e Tracking
Obiettivo: trovare corrispondenze tra i due insiemi di feature e .
Due approcci:
| Approccio | Descrizione |
|---|---|
| Feature tracking | Ricerca locale di ciascuna feature nel frame successivo (predizione con filtri + correlazione). Più veloce, adatto a frame consecutivi vicini |
| Feature matching | Ricerca indipendente delle feature in ciascuna immagine, poi corrispondenza per descrittori locali (ORB, SIFT, SURF…). Più robusto a grandi spostamenti |
Step 3 — Motion Estimation
Obiettivo: calcolare la trasformazione tra e .
Approcci:
- Appearance-based: analisi dei valori di luminosità di tutti i pixel. Meno accurato, più oneroso computazionalmente.
- Feature-based (usato in VO): usa feature salienti e ripetibili. Più robusto ed efficiente.
A seconda del tipo di sensore, le corrispondenze possono essere rappresentate in modo diverso, portando a tre varianti:
| Tipo | Descrizione | Sensore |
|---|---|---|
| 3D-3D | Entrambi gli insiemi in coordinate 3D | Stereo |
| 3D-2D | in 3D, in 2D | Mono, Stereo |
| 2D-2D | Entrambi in coordinate 2D | Mono, Stereo |
3D-3D
Richiede la triangolazione dei punti 3D (es. camera stereo) — almeno 3 corrispondenze non collineari.
Algoritmo (caso stereo):
- Acquisire due coppie stereo e
- Estrazione e matching delle feature tra e
- Triangolazione delle feature: e
- Trovare la trasformazione che minimizza le distanze 3D:
- Concatenazione:
- Ripeti da 1
3D-2D
è rappresentato in 3D, in 2D. Richiede almeno 3 corrispondenze. Usato anche con camera monoculare.
Inizializzazione (necessaria per ottenere il primo ):
- Si acquisiscono due frame
- Si estraggono e si matchano le feature
- Si triangolano:
Frame successivi:
- Acquisire il frame
- Estrazione delle feature e matching con
- Calcolo della posa della camera (PnP — Perspective-n-Point) a partire dai match 3D-2D tra e
- Triangolazione delle nuove feature:
- Ripeti da 1
2D-2D e Scala Relativa
Entrambi gli insiemi sono in 2D. Richiede almeno 5 corrispondenze. La soluzione minimizza l’errore di retro-proiezione dei punti triangolati e si basa sulla geometria epipolare (vedi appendice).
Algoritmo:
- Acquisire il frame
- Estrazione feature e matching con
- Calcolo della matrice essenziale per la coppia
- Scomposizione della matrice essenziale in e (SVD) → costruzione di
- Calcolo della scala relativa e riscalatura di
- Concatenazione:
- Ripeti da 1
Problema della scala
Con una camera monoculare la scala assoluta della traslazione non può essere stimata dalle sole immagini 2D. È possibile calcolare solo la scala relativa tra trasformazioni successive, triangolando i punti e : Per robustezza, la scala si stima come la mediana di calcolata su più coppie di punti.
Step 4 — Local Optimization (Bundle Adjustment)
Gli errori di stima del movimento tra coppie di frame consecutive si accumulano nel tempo, generando un drift crescente. L’incertezza sulla posa è sempre crescente.
Windowed Bundle Adjustment: per limitare il drift, si ottimizzano le stime sulle ultime pose simultaneamente, usando anche trasformazioni tra frame non adiacenti come vincoli aggiuntivi.
La funzione obiettivo minimizza l’errore di retro-proiezione:
dove è il punto immagine del landmark misurato nella -esima immagine, e è la sua retro-proiezione stimata. Si risolve con Levenberg-Marquardt.
Backend Optimization e Loop Closing
Backend: gestisce il rumore presente nel sistema. A partire dai dati rumorosi, stima lo stato completo — traiettoria e mappa. Richiede modelli per l’incertezza (filtri e tecniche di ottimizzazione).
Loop Closing (loop closure detection): verifica se l’agente è tornato in una posizione già visitata. Dal punto di vista visivo è un problema di ricerca di similarità tra immagini — si può usare BoW per trovare immagini simili in modo efficiente.
Se viene rilevato un loop, l’informazione viene trasmessa al backend che aggiusta la mappa e la traiettoria (global bundle adjustment), eliminando il drift accumulato.
Reconstruction
Obiettivo: costruire una descrizione dell’ambiente (mappa).
La tipologia di mappa dipende dall’applicazione (2D/3D, nuvola di punti, mesh, superficie con texture).
| Tipo | Descrizione |
|---|---|
| Metrical maps | Descrivono l’esatta posizione degli oggetti. Possono essere sparse (per localizzazione) o dense (per navigazione) |
| Topological maps | Descrivono le relazioni spaziali tra elementi. Sono grafi con nodi (luoghi) e archi (connessioni) |
Appendice — Geometria Epipolare
La geometria epipolare descrive la relazione geometrica tra due viste della stessa scena.
Concetti chiave:
- I centri ottici , i punti immagine e il punto 3D sono complanari — il piano che li contiene è il piano epipolare
- La baseline (segmento ) interseca i due piani immagine in due punti detti epipoli
- L’intersezione di un piano epipolare con il piano immagine è la linea epipolare
Camere convergenti: gli epipoli sono all’interno delle immagini, le linee epipolari convergono verso di essi.
Camere parallele: gli epipoli sono all’infinito, le linee epipolari sono parallele (caso tipico delle camere stereo standard).
Matrice Essenziale
Per camere calibrate (coordinate normalizzate), la relazione tra due viste è espressa dalla matrice essenziale :
Il vincolo epipolare è:
Come si usa in pratica:
- può essere calcolata dalle coordinate immagine tramite SVD
- Richiede almeno 5 corrispondenze (metodo di Nister); esiste anche la soluzione a 8 punti di Longuet-Higgins (SVD)
- si decompone in e (sempre con SVD)
- La decomposizione produce 4 soluzioni possibili; si seleziona quella con punti davanti a entrambe le camere
Prossimi Argomenti
Continueremo con:
- Deep Learning per Classificazione - CNN, AlexNet, VGG, ResNet
- Deep Learning per Object Detection - YOLO, Faster R-CNN