Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

SLAM Map Builder

Costruisci mappe a griglia 2D utilizzando SLAM basato su LiDAR

Descrizione

L'app 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 scansione incrementale allinea e sovrappone le scansioni per creare la mappa. Il rilevamento della chiusura del circuito compensa 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'app 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'app:

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 Importare e filtrare un 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 Programmatic Use.

Utilizzare SLAM Settings per regolare le impostazioni dell'algoritmo SLAM. Sono forniti valori predefiniti, ma potrebbe essere necessario modificare queste impostazioni in base ai sensori e ai dati specifici. Il valore più importante da regolare è Loop Closure Threshold . Per ulteriori informazioni, vedere Impostazioni di ottimizzazione SLAM.

Fare clic su Build per iniziare il processo di SLAM Map Building. Il processo di creazione allinea le scansioni sulla 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.

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 tornare 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 Modifica delle scansioni incrementali e delle chiusure di loop.

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 delle chiusure di loop e aggiorna solo la mappa di scansione. Per ulteriori informazioni, vedere Sincronizzazione della mappa.

Quando sei soddisfatto dell'aspetto della mappa, clicca su Export to OccupancyGrid per esportarla 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.

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

SLAM Map Builder app

Apri l’app SLAM Map Builder

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

  • Finestra di comando MATLAB: Inserisci slamMapBuilder

Esempi

espandi tutto

L'app SLAM Map Builder ti aiuta a creare una griglia di occupazione a partire da 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 dei loop.

Carica dati di scansione LiDAR

Caricare il file di esempio .mat nell'area di lavoro, che contiene una variabile, scans, come matrice di celle di oggetti lidarScan.

load slamLidarScans.mat

Apri l'app

Nella scheda App, in Robotica e sistemi autonomi, fai clic su SLAM Map Builder.

Puoi anche chiamare la funzione slamMapBuilder:

slamMapBuilder

Importa scansioni LiDAR

Fare clic su Importa > Importa dall'area di lavoro 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 Scansioni.

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

Per visualizzare in anteprima le scansioni, utilizzare il cursore o i tasti freccia in basso.

Una volta completata l'importazione, fare clic su Chiudi

Impostazioni di sintonizzazione 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 ciclo da 200 a 300. Questa soglia aumentata riduce la probabilità di accettare e utilizzare una chiusura di loop rilevata. Impostare l'intervallo di ottimizzazione su 10 . Ogni decima chiusura di loop accettata, il grafico delle pose viene ottimizzato per tenere conto della deriva.

Costruisci la mappa

Dopo aver filtrato i dati e impostato le impostazioni dell'algoritmo SLAM, fai clic su Crea. L'app inizia a elaborare le scansioni per creare la mappa. Dovresti vedere il cursore avanzare e le scansioni sovrapposte sulla mappa. La traiettoria stimata del robot viene tracciata sulla stessa mappa di scansione. Le corrispondenze della scansione incrementale vengono visualizzate nel riquadro Corrispondenza incrementale. Ogni volta che viene rilevata una chiusura di loop, il riquadro Chiusura di loop mostra le due scansioni sovrapposte l'una all'altra.

Regola le corrispondenze di scansione o le chiusure di loop

Se in qualsiasi momento durante il processo di creazione noti che la mappa è distorta o che una corrispondenza incrementale o una chiusura di loop sembrano sbagliate, fai clic su Pausa 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 fino al punto del file in cui si verifica per la prima volta la distorsione. Fare clic sui pulsanti Corrispondenza incrementale o Chiusura ciclo 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 Chiusura anello. 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 fino ad allineare le scansioni.

Fare clic su Scansione panoramica o Ruota scansione, quindi fare clic e trascinare nella figura per allineare le due scansioni. Una volta terminato, fai 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 tuo ambiente come oggetto occupancyMap. Specificare il nome della variabile per esportare la mappa nell'area di lavoro. È possibile creare una mappa da un sottoinsieme di scansioni scorrendo indietro fino al fotogramma desiderato prima di esportare e selezionando Fino alla scansione attualmente selezionata.

Chiama show sulla mappa memorizzata per visualizzare la mappa di occupazione.

show(myOccMap)

Puoi anche salvare una sessione dell'app SLAM Map Builder utilizzando il pulsante Salva sessione. L'app scrive lo stato corrente dell'app 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 array di celle di elementi N di oggetti lidarScan.

Pone da importare dall'area di lavoro, specificata come matrice N per 3 o come array di celle di N elementi di vettori riga a tre elementi. Ogni riga della matrice N per 3 e ogni array riga a tre elementi della matrice di celle rappresentano una posa nella forma [x y theta]. x e y comprendono 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

espandi tutto

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

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

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

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

Ulteriori informazioni

espandi tutto

Cronologia versioni

Introdotto in R2019b