Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l’originale in inglese.

SLAM Map Builder

Creare mappe a griglia 2D utilizzando SLAM basato su lidar

Descrizione

L'applicazione SLAM Map Builder carica le scansioni lidar registrate e i dati dei sensori di odometria per creare una griglia di occupazione 2D utilizzando algoritmi di localizzazione e mappatura simultanea (SLAM). La corrispondenza incrementale delle scansioni allinea e sovrappone le scansioni per creare la mappa. Il rilevamento della chiusura del circuito regola la deriva dell'odometria del veicolo rilevando le posizioni visitate in precedenza e regolando la mappa complessiva. Talvolta, l'algoritmo di corrispondenza della scansione e il rilevamento della chiusura del loop richiedono una regolazione manuale. Utilizzare l'applicazione per allineare manualmente le scansioni e modificare le chiusure dei loop per migliorare la precisione complessiva della mappa. È anche possibile regolare le impostazioni dell'algoritmo SLAM per migliorare la creazione automatica delle mappe.

Per utilizzare l'applicazione:


Import

Per caricare i file di registro di rosbag, selezionare Import > Import from rosbag. Selezionare il file rosbag e fare clic su Open. Si apre la scheda Import. Per ulteriori informazioni, vedere Import and Filter a rosbag.

Per caricare i dati dall'area di lavoro, Import > Import from workspace. Seleziona le variabili Scans e Poses utilizzando i menu a discesa forniti. È anche possibile specificare le variabili nella funzione slamMapBuilder. Vedere Uso programmatico.


SLAM Settings

Utilizzare SLAM Settings per regolare le impostazioni dell'algoritmo SLAM. Sono forniti valori predefiniti, ma i sensori e i dati specifici potrebbero richiedere la regolazione di queste impostazioni. Il valore più importante da regolare è Loop Closure Threshold. Per ulteriori informazioni, vedere Tune SLAM Settings.


Build

Fare clic su Build per iniziare il processo di creazione della mappa SLAM. Il processo di creazione allinea le scansioni nella mappa utilizzando la corrispondenza incrementale delle scansioni, identifica le chiusure dei loop durante la visita alle posizioni precedenti e regola le pose. Fare clic su Pause in qualsiasi momento durante il processo di creazione della mappa per allineare manualmente le scansioni incrementali o modificare le chiusure dei loop.


Incremental Match


Loop Closure

Fare clic su Incremental Match per modificare la posa relativa del fotogramma attualmente selezionato e allineare la scansione con quella precedente. Fare clic su Loop Closure per modificare o ignorare la chiusura del loop rilevata per il frame corrente. Utilizzare il cursore in basso per scorrere indietro fino alle aree in cui la corrispondenza delle scansioni o le chiusure dei loop non sono accurate. È possibile modificare un numero qualsiasi di scansioni o chiusure di loop. Per ulteriori informazioni, vedere Modify Increment Scans and Loop Closures.


Sync

Dopo aver modificato la mappa, clicca su Sync per aggiornare tutte le pose nella mappa di scansione. Le due opzioni in Sync sono Sync, che cerca nuove chiusure di loop, o Sync Fast, che salta la ricerca di chiusure di loop e aggiorna solo la mappa di scansione. Per ulteriori informazioni, vedere Sync the Map.


Export to Occupancy Grid

Quando sei soddisfatto dell'aspetto della mappa, fai clic su Export to Occupancy Grid per esportare la mappa in un file m o salvarla nell'area di lavoro. La mappa viene visualizzata come una griglia di occupazione probabilistica 2D in un oggetto occupancyMap.


Open Session


Save Session

Puoi aprire le sessioni applicazione esistenti che hai salvato utilizzando Open Session. Quando ti trovi nella schedaMap Builder, puoi salvare i tuoi progressi in un file m utilizzando Save Session.

SLAM Map Builder app

Apri l’app SLAM Map Builder

  • Barra degli strumenti: MATLAB® Nella schedaApps, in ROBOTICS AND AUTONOMOUS SYSTEMS, fare clic su SLAM Map Builder.

  • Finestra di comando: MATLAB Inserisci slamMapBuilder

Esempi

espandi tutto

L'applicazione SLAM Map Builder ti aiuta a creare una griglia di occupazione a partire dalle scansioni lidar utilizzando algoritmi di localizzazione e mappatura simultanea (SLAM). La mappa viene costruita stimando le pose tramite la corrispondenza delle scansioni e utilizzando chiusure di loop per l'ottimizzazione del grafico delle pose. Questo esempio mostra il workflow per caricare un rosbag di dati di scansione lidar, filtrare i dati e creare la mappa. Regolare la mappa di scansione regolando le corrispondenze di scansione incrementali e modificando le chiusure di loop.

Caricamento dei dati di scansione Lidar

Caricare il file MAT di esempio nell'area di lavoro, che contiene una variabile, scans, come cell array di oggetti lidarScan.

load slamLidarScans.mat

Apertura dell’applicazione

Nella scheda Apps, in ROBOTICS AND AUTONOMOUS SYSTEMS, fai clic su SLAM Map Builder.

Puoi anche chiamare la funzione slamMapBuilder:

slamMapBuilder

Importazione scansioni Lidar

Fare clic su Import > Import from workspace per caricare le scansioni. I dati memorizzati come rosbag possono essere caricati con una licenza ROS Toolbox.

Selezionare la variabile scans nel menu a discesa Scans.

Nella barra degli strumenti, imposta Downsample a (%) su 10. Il downsampling campiona in modo uniforme i dati per ridurre il tempo di calcolo dell'algoritmo SLAM. In questo esempio, il 10% corrisponde a ogni quinta scansione. Fare clic su Applica.

Utilizzare il cursore o i tasti freccia in basso per visualizzare l'anteprima delle scansioni.

Una volta completata l'importazione, fare clic su Chiudi.

Impostazioni di ottimizzazione SLAM

L'algoritmo SLAM può essere regolato tramite la finestra di dialogo Impostazioni SLAM. I parametri devono essere regolati in base alle specifiche del sensore, all'ambiente e all'applicazione. Per questo esempio, aumentare la soglia di chiusura del loop da 200 a 300. Questa soglia aumentata riduce la probabilità di accettare e utilizzare una chiusura di loop rilevata. Imposta l'intervallo di ottimizzazione su 10. Con ogni decima chiusura di loop accettata, il grafico delle pose viene ottimizzato per tenere conto della deriva.

Creazione della mappa

Dopo aver filtrato i dati e impostato le impostazioni dell'algoritmo SLAM, fare clic su Build. L'applicazione inizia a elaborare le scansioni per creare la mappa. Dovresti vedere il cursore avanzare e le scansioni sovrapposte alla mappa. La traiettoria stimata del robot viene tracciata sulla stessa mappa di scansione. Le corrispondenze della scansione incrementale vengono visualizzate nel pannelloIncremental Match. Ogni volta che viene rilevata una chiusura di loop, il pannello Loop Closure mostra le due scansioni sovrapposte.

Regolazione delle corrispondenze di scansione o delle chiusure di loop

In qualsiasi momento durante il processo di creazione, se noti che la mappa è distorta o che una corrispondenza incrementale o una chiusura di loop sembra errata, fai clic su Pause per selezionare le scansioni da regolare. È possibile modificare le scansioni anche al termine del processo di compilazione. Utilizzando i tasti freccia o il cursore, spostarsi nel punto del file in cui si verifica per la prima volta la distorsione. Fare clic sui pulsanti Incremental Match o Loop Closure per regolare le pose di scansione attualmente visualizzate. In questa sezione, la chiusura errata del loop è artificiale e ha solo scopo illustrativo.

Fare clic sul pulsante Loop Closure. Si apre una scheda per modificare la posa relativa della chiusura del loop.

Per ignorare completamente la chiusura del loop, fare clic su Ignora. In caso contrario, modificare manualmente la posa di scansione relativa finché le scansioni non risultano allineate.

Fare clic su Pan Scan o Rotate Scan, quindi fare clic e trascinare nella figura per allineare le due scansioni. Al termine, fare clic su Accetta. È possibile eseguire questa operazione per più scansioni.

Dopo aver modificato le pose di scansione per corrispondenze incrementali e chiusure di loop, fare clic su Sincronizza per applicare le modifiche. SyncFast aggiorna la mappa senza cercare nuove chiusure di loop e riduce i tempi di calcolo se hai già elaborato tutte le scansioni.

Griglia di occupazione delle esportazioni

Una volta sincronizzate le modifiche e terminata la creazione della mappa, dovresti vedere una mappa scansionata completamente sovrapposta con la traiettoria del robot.

Fare clic su Esporta Griglia di occupazione per ottenere una mappa di occupazione finale del proprio ambiente come oggetto occupancyMap. Esportare la mappa nell'area di lavoro o in un file MAT. È possibile creare una mappa da un sottoinsieme di scansioni scorrendo indietro fino al fotogramma desiderato prima di esportare e selezionando Up to currently selected scan.

Mostra la mappa di occupazione memorizzata.

load("slamMapBuilderOccMap.mat")
show(myOccMap)
title("Built Occupancy Map")

Figure contains an axes object. The axes object with title Built Occupancy Map, xlabel X [meters], ylabel Y [meters] contains an object of type image.

È anche possibile salvare una sessione applicazione SLAM Map Builder utilizzando il pulsante Save Session. L'applicazione scrive lo stato corrente applicazione in un file .mat che può essere caricato in seguito utilizzando Apri sessione.

Esempi correlati

Parametri

espandi tutto

Scansioni Lidar da importare dall'area di lavoro, specificate come cell array elementi N di oggetti lidarScan.

Pose da importare dall'area di lavoro, specificate come matrice N-by-3 o come cell array N-element di vettori riga a tre elementi. Ogni riga della matrice N-by-3 e ogni vettore riga a tre elementi della cell array rappresentano una posa nella forma [x y theta]. x e y rappresentano la posizione in metri e theta è l'orientamento in radianti.

Esempio [0 0 0; 1 1 pi/4; 2 2 pi/2]

Esempio {[0 0 0],[1 1 pi/4],[2 2 pi/2]}

Uso programmatico

slamMapBuilder(bag) apre l'applicazione SLAM Map Builder e importa il file di registro rosbag specificato in bag, un oggetto BagSelection creato utilizzando la funzione rosbag (ROS Toolbox). L'applicazione si apre sulla scheda Import per filtrare i dati dei sensori nel tuo rosbag.

slamMapBuilder(sessionFile) apre l'applicazione SLAM Map Builder da un file di sessione salvato con nome sessionFile. Un file di sessione applicazione viene creato tramite il pulsante Save Session nella barra degli strumenti applicazione.

slamMapBuilder(scans) apre l'applicazione SLAM Map Builder e importa le scansioni specificate in scans, una cell array di oggetti lidarScan. L'applicazione presuppone che tu abbia prefiltrato le tue scansioni e salta il processo di importazione. Fai clic su Build per iniziare a creare la mappa.

slamMapBuilder(scans,poses) apre l'applicazione SLAM Map Builder e importa le scansioni e le pose. scans è specificato come un cell array di oggetti lidarScan. poses è una matrice di vettori [x y theta] che corrispondono alle pose di scans. L'applicazione presuppone che tu abbia prefiltrato le tue scansioni e salta il processo di importazione. Fai clic su Build per iniziare a creare la mappa.

Ulteriori informazioni

espandi tutto

Cronologia versioni

Introdotto in R2019b