V-SLAM — Simultaneous Localization and Mapping

Slide

Indice


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] ─────────────────┘
#ComponenteScopo
1Sensor dataAcquisizione e pre-processing delle immagini
2Visual Odometry (Frontend)Stima del movimento della camera e generazione di una mappa locale approssimata
3Backend (Filters/Graphs)Ottimizzazione per generare mappa e traiettoria accurate
4Loop ClosingVerifica del passaggio in posizioni precedentemente viste (riduzione drift)
5ReconstructionCostruzione 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:

ApproccioDescrizione
Feature trackingRicerca locale di ciascuna feature nel frame successivo (predizione con filtri + correlazione). Più veloce, adatto a frame consecutivi vicini
Feature matchingRicerca 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:

TipoDescrizioneSensore
3D-3DEntrambi gli insiemi in coordinate 3DStereo
3D-2D in 3D, in 2DMono, Stereo
2D-2DEntrambi in coordinate 2DMono, Stereo

3D-3D

Richiede la triangolazione dei punti 3D (es. camera stereo) — almeno 3 corrispondenze non collineari.

Algoritmo (caso stereo):

  1. Acquisire due coppie stereo e
  2. Estrazione e matching delle feature tra e
  3. Triangolazione delle feature: e
  4. Trovare la trasformazione che minimizza le distanze 3D:
  5. Concatenazione:
  6. 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:

  1. Acquisire il frame
  2. Estrazione delle feature e matching con
  3. Calcolo della posa della camera (PnP — Perspective-n-Point) a partire dai match 3D-2D tra e
  4. Triangolazione delle nuove feature:
  5. 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:

  1. Acquisire il frame
  2. Estrazione feature e matching con
  3. Calcolo della matrice essenziale per la coppia
  4. Scomposizione della matrice essenziale in e (SVD) → costruzione di
  5. Calcolo della scala relativa e riscalatura di
  6. Concatenazione:
  7. 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).

TipoDescrizione
Metrical mapsDescrivono l’esatta posizione degli oggetti. Possono essere sparse (per localizzazione) o dense (per navigazione)
Topological mapsDescrivono 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: