Che cos’è la SLAM?
3 cose da sapere
La SLAM (localizzazione e mappatura simultanea) è 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.
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, la SLAM è ora utilizzata 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 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.
La SLAM è utile 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.
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.

Flusso di elaborazione SLAM
Per saperne di più sul componente di elaborazione front-end, esaminiamo lo SLAM visivo e lo SLAM LIDAR, due diversi metodi SLAM.
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 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.

Struttura dal movimento.

Registrazione di nuvole di punti per RGB-D SLAM.
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 è molto efficace per la costruzione di mappe con lo SLAM. Generalmente, il movimento viene stimato in modo sequenziale abbinando le nuvole di punti. Il movimento calcolato (distanza percorsa) è utilizzato per localizzare il veicolo. Per l’abbinamento di nuvole di punti LIDAR vengono utilizzati algoritmi di registrazione come l’algoritmo Iterative Closest Point (ICP) e l’algoritmo Normal Distributions Transform (NDT). Le mappe di nuvole di punti 2D o 3D possono essere rappresentate come una mappa a griglia o una mappa voxel.
D’altra parte, le nuvole di punti non sono così finemente dettagliate come le immagini in termini di densità e non sempre forniscono caratteristiche sufficienti per l’abbinamento. Ad esempio, in luoghi con pochi ostacoli, risulta difficile allineare le nuvole di punti e ciò può comportare la perdita della posizione del veicolo. Inoltre, l’abbinamento di nuvole di punti richiede generalmente un’elevata potenza di elaborazione, per questo è necessario ottimizzare i processi al fine di migliorare la velocità. Alla luce di queste sfide, la localizzazione per i veicoli autonomi può comportare la fusione di altri risultati di misurazione 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 LIDAR 3D può essere impiegato per gli APR e la guida autonoma.

SLAM con LIDAR 2D

SLAM con LIDAR 3D
Sfide comuni con la SLAM
Sebbene la SLAM sia utilizzata 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
Lo SLAM stima il movimento sequenziale, 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, il punto di partenza e quello 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.

Esempio di costruzione di un grafico di posa e di minimizzazione degli errori.
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.
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, viene utilizzato il Deep Learning 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 della SLAM sull’hardware di un veicolo. 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.
MATLAB® fornisce una serie di funzionalità per implementare applicazioni SLAM per i sistemi target e per affrontare molte delle contromisure alle sfide tecniche note con la SLAM.
Elaborazione di segnali dei sensori e di immagini per il front-end della SLAM
- Elaborazione LIDAR 2D e 3D e abbinamento delle scansioni con Lidar Toolbox™ e Navigation Toolbox™
- Elaborazione di nuvole di punti 3D e registrazione di nuvole di punti
- Rilevamento delle chiusure ad anello con Bag of Features, Bag of Visuals Words
- Rilevamento di oggetti e segmentazione semantica mediante il Deep Learning
- Generazione di mappe con nuvole di punti LIDAR 3D con Automated Driving Toolbox™
- Fusione di sensori per la localizzazione e il tracking multi-oggetti con Sensor Fusion and Tracking Toolbox™
Grafici di posa 2D/3D per il back-end della SLAM
- Generazione di grafici di posa 2D/3D con Navigation Toolbox
- Ottimizzazione di un grafico di posa in base a nodi e vincoli di bordi
- Regolazione del fascio con Computer Vision Toolbox
Griglie di occupazione con SLAM Map Builder app
- 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
Utilizzo della mappa di output dagli algoritmi SLAM per la pianificazione di percorsi e i controlli
- Implementazione di algoritmi di pianificazione di percorsi come RRT o Hybrid A* con Navigation Toolbox
- Invio di comandi di controllo per seguire la traiettoria pianificata con evitamento di ostacoli
Accelerazione di processi ad alta intensità di calcolo, come quelli relativi all’elaborazione di immagini, mediante esecuzione in parallelo con Parallel Computing Toolbox™
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™
Scopri di più sulla SLAM
SLAM LIDAR
- Implementazione della localizzazione e mappatura simultanea (SLAM) con MATLAB (2:23)
- SLAM con dati di scansione LIDAR 2D
- Costruzione di una mappa da dati LIDAR mediante SLAM
- Costruzione di una mappa e localizzazione mediante corrispondenza dei segmenti
- SLAM di LIDAR aerei con i descrittori FPFH
- Mappatura per robot mobili e UGV (10:01)
SLAM di punti di riferimento
SLAM con la simulazione Unreal Engine