La SLAM da un punto di vista algoritmico (Parte 2)
Come già discusso nella Parte 1, la SLAM è il processo di localizzazione e mappatura simultanea di un veicolo robotico in un'area inesplorata, che consente di creare gradualmente una mappa di detta area. Gli algoritmi SLAM possono essere classificati sulla base di tre tecniche principali: basati su filtri, basati su grafici e basati sull'apprendimento profondo.
La SLAM basata su filtri tratta il processo di localizzazione come un problema di stima dello stato. In questo caso, un filtro probabilistico - come il filtro di Kalman esteso (EKF) o il filtro di Kalman non lineare (UKF) - viene utilizzato per stimare ricorsivamente lo stato del robot e aggiornare la mappa in base alle misure dei sensori. Il filtro predice lo stato successivo del robot in base al suo modello di movimento e poi corregge questa previsione utilizzando le misure dei sensori.
Nella SLAM basata su grafici, a differenza dei filtri, il problema viene affrontato con l'ottimizzazione grafica. In questo caso, il problema SLAM è formulato come un grafico, in cui i nodi rappresentano le pose dei robot o i punti di riferimento nell'ambiente e i bordi rappresentano le misurazioni o i vincoli tra di essi. L'obiettivo della SLAM tramite grafici è ottimizzare le pose del robot e le posizioni dei punti di riferimento in modo che i vincoli misurati (ad esempio, le distanze tra i punti di riferimento, le pose relative tra le pose del robot) siano soddisfatti nel modo più accurato possibile.
I metodi SLAM basati sull'apprendimento profondo sfruttano le reti neurali per apprendere direttamente le rappresentazioni dell'ambiente dai dati dei sensori, senza affidarsi a caratteristiche o modelli creati dai programmatori. Con questi metodi è possibile far apprendere mappature complesse tra le misurazioni dei sensori e il grafico di posa o la mappa del robot, creando così soluzioni SLAM end-to-end.
Le funzionalità fondamentali della SLAM, mappatura e localizzazione, sono strettamente collegate: il robot aggiorna continuamente la sua mappa in base ai dati dei sensori e regola di conseguenza la stima della sua posizione. Essendo uno strumento modulare, la SLAM e i suoi concetti consentono di effettuare cambiamenti e sostituzioni nella pipeline. Molto spesso, quindi, vengono sviluppati e utilizzati in tandem diversi algoritmi, il che rende complicato generalizzare e spiegare la SLAM come un singolo algoritmo. Pertanto, il modo migliore per comprendere la SLAM è concentrarsi su una sua particolare implementazione. Detto questo, analizziamo in dettaglio la SLAM visiva basata su filtri (vSLAM).
SLAM visiva
Come suggerisce il nome, la vSLAM utilizza come sensore primario un sensore visivo: una fotocamera. Inoltre, può disporre di encoder, di un'unità di misura inerziale (IMU) e di altri sensori. Nella Figura 1 è riportato un diagramma a blocchi generico dell'implementazione.
Figura 1: Diagramma a blocchi generico e semplificato del processo SLAM basato sulle caratteristiche. (Riproduzione da kudan.io)
Misurazioni della fotocamera
La fotocamera acquisisce le immagini dell'ambiente circostante il robot, comprese le caratteristiche come i punti di riferimento, i bordi e le texture. Le immagini acquisite, tuttavia, devono essere corrette dalla distorsione, poiché la maggior parte degli obiettivi delle fotocamere introduce un certo livello di distorsione. Le fotocamere utilizzate possono essere stereo, monoculari o RGB-D con sensori di profondità a tempo di volo (ToF). Il vantaggio delle fotocamere stereo e RGB-D è che le informazioni sulla profondità sono facilmente disponibili. Le fotocamere monoculari, invece, soffrono di ambiguità di scala. In altre parole, la SLAM monoculare non è in grado di identificare la lunghezza del movimento traslazionale (fattore di scala) solo dalle corrispondenze delle caratteristiche. Tuttavia, ci sono modi per mitigare questo problema, che esula dallo scopo di questo articolo.
Estrazione delle caratteristiche
Dopo aver acquisito le immagini con la fotocamera, è necessario identificare in modo univoco il fotogramma individuando le caratteristiche di un particolare fotogramma per riferimento futuro. In questo contesto, per caratteristiche si intende l'insieme di pixel che sono unici e che possono essere identificati in modo coerente. Possiamo anche dire che si tratta di punti distintivi in un'immagine, invarianti a rotazione, scala e distorsione, che li rendono facilmente identificabili anche dopo manipolazioni dell'immagine. Considerando che stiamo usando una fotocamera stereo come sensore primario, dovremmo essere in grado di vedere le caratteristiche di sovrapposizione tra le immagini stereo acquisite. Queste caratteristiche identiche possono essere utilizzate per stimare la distanza dal sensore. Tuttavia, prima di ciò, è necessario identificare le caratteristiche comuni sulla coppia di immagini stereo, come accennato in precedenza. Questo viene fatto dai rilevatori di caratteristiche e dai matcher. Alcuni esempi comuni di rilevatori di caratteristiche sono Scale-invariant Feature Transform (SIFT), Oriented FAST and Rotated BRIEF (ORB) e Good Features to Track (GFTT). La Figura 2 rappresenta le caratteristiche identificate utilizzando alcuni dei rilevatori più diffusi. Una volta identificate le caratteristiche, viene fornita loro una descrizione utilizzando gli stessi rilevatori. Questo processo facilita la reidentificazione di queste caratteristiche in futuro.
Figura 2: Punti chiave rilevati sull'immagine del robot XRP utilizzando a) GFTT b) SIFT. (Immagine per gentile concessione di SparkFun Electronics)
Dopo aver individuato i punti chiave, stabiliamo la corrispondenza tra questi punti mediante la concordanza. Alcuni degli algoritmi di corrispondenza delle caratteristiche che possono essere utilizzati sono Brute Force Matcher o Fast Library for Approximate Nearest Neighbors (FLANN). La Figura 3 mostra una rappresentazione visiva dell'algoritmo di corrispondenza in azione. Vengono mostrate le linee che collegano le corrispondenze e, poiché abbiamo utilizzato immagini speculari, idealmente dovremmo ottenere solo linee orizzontali (parallele), a condizione che il sistema sia perfetto. Purtroppo, però, gli algoritmi di corrispondenza delle caratteristiche non sono affatto perfetti e quindi producono false corrispondenze, alcune delle quali sono indicate da linee oblique. Per questo motivo abbiamo bisogno di strumenti di rifiuto dei valori erratici come il Random Sample Consensus (RANSAC).
Figura 3: Linee che indicano le corrispondenze delle caratteristiche su due immagini invertite utilizzando FLANN. (Immagine per gentile concessione di SparkFun Electronics)
RANSAC
Algoritmi come RANSAC vengono utilizzati per filtrare queste corrispondenze errate, assicurando che solo gli inlier (corrispondenze corrette) vengano utilizzati per l'ulteriore elaborazione. RANSAC funziona costruendo un modello da un sottoinsieme casuale dei dati forniti. In altre parole, consideriamo alcuni punti casuali come inlier e cerchiamo di far corrispondere tutti i punti rimanenti sulla base di questi pochi punti selezionati. Quindi, valutiamo la corrispondenza del modello con l'intero set di dati. Questo processo viene ripetuto fino a quando non viene trovato un modello che descriva accuratamente i dati con un errore minimo, determinato da una funzione di costo computazionale.
Associazione di caratteristiche e dati
In questa fase, prendiamo le caratteristiche rilevate e la loro posizione stimata nello spazio per creare una mappa di queste caratteristiche. Via via che il processo procede nei fotogrammi successivi, il sistema associa le nuove caratteristiche agli elementi noti della mappa e scarta le caratteristiche incerte.
Mentre il movimento della fotocamera viene seguito nei fotogrammi successivi, è possibile fare previsioni basate sulle caratteristiche note e su come si prevede che cambieranno con il movimento. Tuttavia, le risorse computazionali e i vincoli di tempo, soprattutto nelle applicazioni in tempo reale, impongono limitazioni alla SLAM. Poiché il sistema raccoglie un maggior numero di misurazioni di caratteristiche e aggiorna la posizione nel tempo, diventa essenziale vincolare e ottimizzare la rappresentazione dell'ambiente.
Aggiornamento di posizione, posa e mappa
Filtro di Kalman
Mentre si procede con il processo SLAM, si accumula rumore e si sviluppa un'incertezza tra le immagini acquisite dalla fotocamera e il movimento associato. Generando continuamente previsioni, aggiornando e perfezionando il modello rispetto alle misure osservate, i filtri di Kalman possono ridurre l'effetto del rumore e dell'incertezza tra le diverse misurazioni. Ciò contribuisce alla creazione di un modello di sistema lineare. Per le implementazioni effettive della SLAM, utilizziamo i filtri di Kalman estesi (EKF), che prendono sistemi non lineari e linearizzano le previsioni e le misure intorno alla loro media. Gli EKF possono integrare i dati provenienti da più sensori eseguendo la fusione sensoriale (ad esempio, fotocamere, IMU) per migliorare l'accuratezza delle stime dello stato e della mappa. Questa fusione di fonti di dati aiuta a ottenere risultati SLAM più affidabili. Il vettore di stato nella SLAM basato su EKF include la posa del robot (posizione e orientamento) e le posizioni dei punti di riferimento nella mappa.
Selezioni di fotogrammi
I fotogrammi chiave vengono scelti tra le immagini acquisite per ridurre i calcoli necessari per elaborare tutte le immagini acquisite. Si scelgono invece i fotogrammi che possono servire come buona rappresentazione dell'ambiente e si utilizzano solo per il calcolo. Anche questo metodo è un compromesso tra accuratezza ed efficienza.
Correzione degli errori attraverso la chiusura del loop e la rilocalizzazione
Via via che si procede nel processo di costruzione di un modello dell'ambiente, si accumulano gradualmente errori di misurazione e deriva dei sensori, che si ripercuotono sulla mappa generata. Questo problema può essere mitigato in una certa misura attraverso la chiusura del loop. Ciò avviene quando il sistema identifica che sta rivisitando un'area precedentemente mappata. Riallineando la mappa attuale con quella precedentemente stabilita della stessa area, il sistema SLAM può correggere l'errore accumulato.
Rilocalizzazione
La rilocalizzazione è necessaria quando il sistema perde la traccia della sua posizione e del suo orientamento (POSA). A questo punto, è necessario stimare nuovamente la posa utilizzando le caratteristiche attualmente osservabili. Una volta che il sistema è riuscito a confrontare le caratteristiche attualmente disponibili con la mappa disponibile, possiamo procedere con il processo SLAM come di consueto.
Conclusione
La SLAM è il processo di stima della posizione di un veicolo robotico mentre si esegue la mappatura di un'area sconosciuta. Le tecniche SLAM includono metodi basati su filtri, grafici e apprendimento profondo (che utilizzano reti neurali). La SLAM visiva impiega fotocamere per catturare immagini, estrarre caratteristiche, confrontarle e filtrare le corrispondenze errate. Il sistema crea una mappa associando nuove caratteristiche a elementi noti, aggiornando la posizione e la posa del robot con i filtri di Kalman, selezionando fotogrammi chiave e correggendo gli errori attraverso la chiusura del loop e la rilocalizzazione.
Riferimenti
- Telerilevamento | Testo completo gratuito | Panoramica sulla SLAM: dal sensore singolo alla fusione eterogenea (mdpi.com)
- Comprendere come funziona la vSLAM (SLAM visiva) | Kudan global
- Localizzazione e mappatura visiva simultanea basata su caratteristiche: un'indagine | Scoprire le scienze applicate (springer.com)
- Introduzione alla SLAM visiva: Capitolo 1 - Introduzione alla SLAM | di Daniel Casado | Medium
- Un'introduzione agli algoritmi chiave utilizzati nella SLAM - Articoli tecnici (control.com)
- Cos'è la SLAM (localizzazione e mappatura simultanee) – MATLAB e Simulink - MATLAB e Simulink (mathworks.com)
- Un'indagine sullo stato dell'arte della SLAM visiva - ScienceDirect

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum