Localizzazione e mappatura simultanea (SLAM)

Che cos’è la SLAM?

Come funziona, tipi di algoritmi SLAM e come iniziare

La localizzazione e mappatura simultanea (SLAM) è un metodo utilizzato per i veicoli autonomi che consente di costruire una mappa e localizzare il veicolo in quella mappa allo stesso tempo. Gli algoritmi SLAM permettono al veicolo di mappare ambienti sconosciuti. Gli ingegneri utilizzano le informazioni della mappa per svolgere attività come la pianificazione di percorsi e l’evitamento di ostacoli.

Perché la SLAM è importante

La SLAM è da molti anni oggetto di ricerca tecnica. Tuttavia, grazie ai grandi progressi nella velocità di elaborazione dei computer e alla disponibilità di sensori a basso costo come fotocamere e telemetri laser, gli algoritmi SLAM sono ora utilizzati per applicazioni pratiche in un numero sempre maggiore di campi.

Per comprendere l’importanza della SLAM, vediamo alcuni dei suoi vantaggi ed esempi di applicazione.

Esempi di SLAM

Prendiamo ad esempio un robot aspirapolvere per la casa. Senza SLAM, il robot si sposterebbe in modo casuale all’interno di una stanza e potrebbe non essere in grado di pulire l’intera superficie del pavimento. Inoltre, questo approccio consuma una quantità eccessiva di energia, per questo la batteria si esaurirà più velocemente. I robot con un algoritmo SLAM, invece, sono in grado di utilizzare informazioni come il numero di giri delle ruote e i dati provenienti da fotocamere e altri sensori di immagini per determinare la quantità di movimento necessaria. Questo processo prende il nome di localizzazione. Il robot può anche utilizzare simultaneamente la fotocamera e altri sensori per creare una mappa degli ostacoli nei dintorni ed evitare di pulire due volte la stessa area. Questo processo si chiama mappatura.

Vantaggi della SLAM per i robot per la pulizia.

Vantaggi della SLAM per i robot per la pulizia.

Gli algoritmi SLAM sono utili in molte altre applicazioni come la navigazione di una flotta di robot mobili per sistemare gli scaffali in un magazzino, il parcheggio di un’auto a guida autonoma in un posto libero o la consegna di un pacco mediante la navigazione di un drone in un ambiente sconosciuto. MATLAB® e Simulink® forniscono algoritmi SLAM, funzioni e strumenti di analisi per sviluppare varie applicazioni. È possibile implementare la localizzazione e la mappatura simultanea in combinazione con altre attività come la fusione di sensori, il tracking di oggetti, la pianificazione di percorsi e il path following.

Come funziona la SLAM

In generale, esistono due tipi di componenti tecnologiche utilizzate per realizzare la SLAM. Il primo tipo è l’elaborazione di segnali dei sensori, compresa l’elaborazione front-end, che dipende in gran parte dai sensori utilizzati. Il secondo tipo è l’ottimizzazione del grafico di posa, compresa l’elaborazione back-end, che è indipendente dal sensore.

Workflow SLAM inclusi i blocchi costruttivi per l’elaborazione front-end e back-end.

Flusso di elaborazione SLAM

Tipi di metodi SLAM

Per saperne di più sul componente di elaborazione front-end, esplora diversi metodi di SLAM tra cui SLAM visivo, SLAM LIDAR e SLAM multi-sensore.

SLAM visivo

Come suggerisce il nome, lo SLAM visivo (o vSLAM) utilizza immagini acquisite da fotocamere e altri sensori di immagini. Lo SLAM visivo può utilizzare fotocamere semplici (fotocamere grandangolari, fish-eye e sferiche), fotocamere a occhio composto (stereo e fotocamere a più punti di ripresa) e fotocamere RGB-D (fotocamere di profondità e ToF).

Lo SLAM visivo può essere implementato a basso costo con fotocamere relativamente economiche. Inoltre, poiché le fotocamere forniscono un grande volume di informazioni, possono essere utilizzate per rilevare punti di riferimento (posizioni misurate in precedenza). Il rilevamento di punti di riferimento può anche essere combinato con l’ottimizzazione basata su grafici, ottenendo flessibilità nell’implementazione dello SLAM.

Lo SLAM monoculare è un tipo di algoritmo SLAM che consiste nell’utilizzo da parte del vSLAM di una sola fotocamera come unico sensore, il che rende difficile la definizione della profondità. Ciò può essere risolto rilevando marcatori AR, scacchiere o altri oggetti noti nell’immagine per la localizzazione oppure eseguendo la fusione delle informazioni provenienti dalla fotocamera con un altro sensore come le unità di misura inerziale (IMU), che possono misurare quantità fisiche come la velocità e l’orientamento. La tecnologia relativa al vSLAM include la struttura dal movimento (SfM), l’odometria visuale e la regolazione del fascio.

Gli algoritmi di SLAM visivo possono essere classificati in due categorie. I metodi sparsi abbinano i punti caratteristici delle immagini e impiegano algoritmi come PTAM e ORB-SLAM. I metodi densi sfruttano la luminosità complessiva delle immagini e impiegano algoritmi come DTAM, LSD-SLAM, DSO e SVO.

SLAM visivo monoculare con il set di dati TUM RGB-D.

vSLAM monoculare

Alt text: Ricostruzione densa mediante SLAM visivo stereo.

vSLAM stereo

SLAM visivo RGB-D con il set di dati TUM RGB-D.

vSLAM RGB-D

SLAM LIDAR

LIDAR (acronimo di Light Detection and Ranging) è un metodo che utilizza principalmente un sensore laser (o sensore di distanza).

Rispetto a fotocamere, ToF e altri sensori, i laser sono notevolmente più precisi e vengono utilizzati per applicazioni con veicoli in movimento ad alta velocità come le auto a guida autonoma e i droni. I valori di output dai sensori laser sono generalmente dati di nuvole di punti 2D (x, y) o 3D (x, y, z). La nuvola di punti del sensore laser fornisce misure di distanza ad alta precisione ed è efficace per la costruzione di mappe con algoritmi SLAM. Il movimento viene stimato registrando le nuvole di punti in modo sequenziale. Il movimento calcolato (distanza percorsa) è utilizzato per localizzare il veicolo. Per stimare la trasformazione relativa tra le nuvole di punti, è possibile utilizzare algoritmi di registrazione come Iterative Closest Point (ICP) e Normal Distributions Transform (NDT). In alternativa, è possibile utilizzare un approccio basato sulle feature come odometria e mappatura LIDAR (LOAM) o Fast Global Registration (FGR), basato sulle feature FPFH. Le mappe delle nuvole di punti 2D o 3D possono essere rappresentate come mappe a griglia o mappe voxel.

Alla luce di queste sfide, la localizzazione per i veicoli autonomi può comportare la fusione di altre misurazioni come l’odometria delle ruote, il sistema globale di navigazione satellitare (GNSS) e i dati IMU. Per applicazioni come i robot di magazzinaggio, viene solitamente utilizzato il 2D LIDAR SLAM, mentre lo SLAM con nuvole di punti 3D è comunemente impiegato per gli APR e la guida autonoma.

Mappatura dell’area interna mediante 2D LIDAR SLAM e un grafico fattoriale.

SLAM con LIDAR 2D

Costruzione di una mappa da dati LIDAR 3D mediante SLAM.

SLAM con LIDAR 3D

SLAM multi-sensore

Per SLAM multi-sensore si intende un tipo di algoritmo SLAM che utilizza una varietà di sensori, tra cui fotocamere, IMU (unità di misura inerziale), GPS, LIDAR, radar e altri, per migliorare la precisione e la robustezza degli algoritmi SLAM. Utilizzando i punti di forza complementari dei diversi sensori e attenuando i loro limiti individuali, lo SLAM multi-sensore può raggiungere prestazioni superiori. Ad esempio, mentre le fotocamere forniscono dati visivi dettagliati, potrebbero non rendere al meglio in condizioni di scarsa illuminazione o ad alte velocità; il LIDAR, invece, garantisce un funzionamento costante in diverse condizioni di illuminazione, ma può avere difficoltà con alcuni materiali di superficie. Lo SLAM multi-sensore è più affidabile rispetto alle soluzioni a sensore singolo poiché integra dati provenienti da varie fonti. Il grafico fattoriale è una struttura modulare e adattabile che integra diversi tipi di sensori, come fotocamere, IMU e GPS. Inoltre, il grafico fattoriale include gli input dei sensori personalizzati (come LIDAR e odometria) convertendo i dati in fattori di posa. Questa funzionalità consente di optare per diverse configurazioni SLAM multi-sensore, tra cui SLAM visuale inerziale monoculare e SLAM LIDAR-IMU.

Sfide comuni con la SLAM

Sebbene gli algoritmi SLAM siano utilizzati per alcune applicazioni pratiche, vi sono diverse sfide tecniche che ne impediscono un’adozione più generale. Ciascuna sfida presenta una contromisura che può aiutare a superare l’ostacolo.

1. Gli errori di localizzazione si accumulano, causando una notevole deviazione dai valori reali

Gli algoritmi SLAM stimano il movimento sequenziale, il che include un certo margine di errore. L’errore si accumula nel tempo, causando una notevole deviazione dai valori reali. Può anche causare il collasso o la distorsione dei dati delle mappe, rendendo difficili le ricerche successive. Prendiamo un esempio di guida in un passaggio di forma quadrata. Man mano che l’errore si accumula, i punti di partenza e di arrivo del robot non corrispondono più. Siamo di fronte a un cosiddetto problema di chiusura ad anello. Errori di stima della posa come questi sono inevitabili. È importante rilevare le chiusure ad anello e determinare come correggere o eliminare l’errore accumulato.

Incapacità di tornare al punto di partenza (mappa distorta)

Esempio di costruzione di un grafico di posa e di minimizzazione degli errori.

Per lo SLAM multi-sensore, la calibrazione accurata dei sensori è fondamentale. Le discrepanze o gli errori di calibrazione possono causare imprecisioni nella fusione dei sensori e compromettere la funzionalità complessiva del sistema. L’ottimizzazione del grafico fattoriale può supportare ulteriormente il processo di calibrazione, compreso l’allineamento dei sistemi fotocamera-IMU.

Una contromisura consiste nel ricordare alcune caratteristiche di un luogo visitato in precedenza come punto di riferimento e minimizzare l’errore di localizzazione. I grafici di posa vengono costruiti per contribuire alla correzione degli errori. Risolvendo la minimizzazione dell’errore come un problema di ottimizzazione, è possibile generare dati di mappe più precisi. Questo tipo di ottimizzazione è chiamato regolazione del fascio nello SLAM visivo.

Esempio di costruzione di un grafico di posa e di minimizzazione degli errori.

Esempio di costruzione di un grafico di posa e di minimizzazione degli errori.

2. La localizzazione ha esito negativo e la posizione sulla mappa viene persa

La mappatura delle immagini e delle nuvole di punti non tiene conto delle caratteristiche del movimento di un robot. In alcuni casi, questo approccio può generare stime di posizione discontinue. Ad esempio, un risultato di calcolo mostra che un robot che si muove a 1 m/s salta improvvisamente in avanti di 10 metri. Questo tipo di errore di localizzazione può essere evitato utilizzando un algoritmo di recupero oppure eseguendo la fusione del modello di movimento con più sensori per effettuare calcoli basati sui dati dei sensori.

Esistono diversi metodi per utilizzare un modello di movimento con la fusione di sensori. Un metodo diffuso consiste nell’utilizzo del filtraggio Kalman per la localizzazione. Poiché la maggior parte dei robot a trasmissione differenziale e dei veicoli a quattro ruote utilizzano generalmente modelli di movimento non lineare, vengono spesso utilizzati filtri di Kalman estesi e filtri antiparticolato (localizzazione Monte Carlo). In alcuni casi è anche possibile utilizzare filtri bayesiani più flessibili, come i filtri di Kalman unscented. Alcuni sensori comunemente utilizzati sono dispositivi di misurazione inerziale come IMU, AHRS (Attitude and Heading Reference System) o INS (Inertial Navigation System), sensori accelerometrici, sensori giroscopici e sensori magnetici). Per l’odometria vengono spesso utilizzati encoder a ruota fissati al veicolo.

Quando la localizzazione ha esito negativo, una contromisura per il recupero consiste nel ricordare un punto di riferimento come un frame chiave di un luogo visitato in precedenza. Durante la ricerca di un punto di riferimento, viene applicato un processo di estrazione di feature in modo da poter effettuare una scansione ad alta velocità. Alcuni metodi basati sulle feature delle immagini includono BoF (Bag of Features) e BoVW (Bag of Visual Words). Più recentemente, il Deep Learning è stato utilizzato per il confronto delle distanze dalle feature.

3. Alto costo computazionale per l’elaborazione di immagini, l’elaborazione di nuvole di punti e l’ottimizzazione

Il costo computazionale rappresenta un problema nell’implementazione degli algoritmi SLAM sull’hardware di veicoli. Il calcolo viene solitamente eseguito su microprocessori embedded compatti e a basso consumo energetico che hanno una potenza di elaborazione limitata. Per ottenere una localizzazione precisa, è fondamentale eseguire l’elaborazione di immagini e l’abbinamento di nuvole di punti ad alta frequenza. Inoltre, i calcoli di ottimizzazione come la chiusura ad anello sono processi ad alta computazione. La sfida consiste nel capire come eseguire una tale elaborazione ad elevato costo computazionale su microcomputer embedded.

Una contromisura consiste nell’eseguire diversi processi in parallelo. Processi come l’estrazione di feature, ovvero la pre-elaborazione del processo di abbinamento, sono relativamente adatti alla parallelizzazione. In alcuni casi l’utilizzo di CPU multicore per l’elaborazione, il calcolo SIMD (Single Instruction Multiple Data) e le GPU embedded possono migliorare ulteriormente le velocità. Inoltre, poiché l’ottimizzazione del grafico di posa può essere eseguita su un ciclo relativamente lungo, anche abbassando la sua priorità ed eseguendo questo processo a intervalli regolari, è possibile migliorare le prestazioni.

SLAM con MATLAB

Elaborazione di segnali dei sensori e di immagini per il front-end della SLAM:

Grafici di posa 2D/3D per il back-end della SLAM:

Griglie di occupazione con l’app SLAM Map Builder:

  • Importazione di dati LIDAR 2D dall’area di lavoro MATLAB o da file rosbag e creazione di griglie di occupazione
  • Individuazione e modifica delle chiusure ad anello ed esportazione della mappa come griglia di occupazione per la pianificazione di percorsi

Distribuzione di nodi ROS standalone e comunicazione con il robot abilitato ROS da MATLAB e Simulink® con ROS Toolbox

Implementazione di algoritmi di elaborazione di immagini e di navigazione sviluppati in MATLAB e Simulink su microprocessori embedded con MATLAB Coder™ e GPU Coder™