ORB SLAM(Simultaneous Localization and Mapping) è una libreria open source che si occupa di calcolare in real time le posizioni delle camere, implementando tecniche
avanzate d'affinamento dei risultati, tra cui la chiusura del loop quando si percorre un circuito chiuso. Per il suo funzionamento ha bisogno delle immagini e
dei parametri intrinseci della camera.
I parametri intrinseci della camera sono quei valori che ne identificano il suo modello matematico e sono:
Il modello base utilizzato per la derivazione di questi valori è quello di camera pinhole a cui è stato aggiunto la distorsione radiale e tangenziale della lente non ideale.
Trovare questi valori è stato molto semplice ed è stato possibile sfruttando il tool di calibrazione della camera fornito da Matlab (risultati equivalenti si potevano ottenere utilizzando un tool free fornito da OpenCV).
Il tool di Matlab ha bisogno di almeno una decina di foto, scattate a diversa angolazione e distanza, di una scacchiera monocromatica.
Il processo di calibrazione funziona cercando i vertici dei quadrati, identificando così dei punti che sono a distanza nota. Da queste informazioni è possibile ottenere un sistema di equazioni sovradeterminato che fornisce i parametri intrinseci della camera e le loro posizioni relative (parametri estrinseci).
Più grande è la scacchiera inquadrata e migliori saranno i risultati ottenuti. Una stampa in un foglio A4 non ha garantito buoni risultati, con un alto errore di proiezione (distanza in pixel tra i punti proiettati dal modello della camera nell'immagine e quelli dell'immagine originale). La soluzione più economica ed ingegnosa è stata quella di usare lo schermo del proiettore per mostrare la scacchiera ed effettuare la calibrazione. In questo modo si sono ottenuti errori di proiezioni estremamente bassi che influenzeranno positivamente il processo di ricostruzione in OrbSlam.
Buoni risultati si possono anche ottenere utilizzando lo schermo del televisore.
Set di immagini scattate alla scacchiera
Errore della proiezione del piano immagine (in pixel)
Parametri estrinseci del set di immagini
Le foto scattate hanno una risoluzione di 720x480. Il motivo di questa scelta si basa su prove empiriche. Si è notato che con foto ad alta risoluzione (ad esempio 20 Mpx),
il processo OrbSlam era molto lento e riusciva ad identificare pochi punti salienti utili, non permettendo al sistema di poter funzionare in modo fluido. Il vantaggio di
abbassare la risoluzione sta nel fatto che il calcolatore ha meno pixel da dover processare e meno punti salienti deboli con cui tentare il matching, in questo modo si
ha un incremento della velocità del processo di localizzazione. Lo svantaggio di questa riduzione si ha in una risoluzione spaziale minore e quindi un errore maggiore
nei punti localizzati. Le foto utilizzate per il processo di calibrazione hanno la stessa risoluzione di quelle fornite a OrbSlam, in modo da avere gli stessi parametri
intrinseci.
I parametri ottenuti dalla calibrazione e le immagini vengono fornite a OrbSlam.
Come per il processo di calibrazione, la funzione ha bisogno di punti chiave comuni tra le immagini per poter trovare i parametri estrinseci.
Questo processo è molto complicato e oneroso e principalmente si compone in 4 fasi:
La libreria fornisce all'utente le camere con la loro posizione (x,y,z) e la loro orientazione identificata da un quaternione.