Main Content

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

Générateur de cartes SLAM

Créez des cartes quadrillées 2D à l'aide du SLAM basé sur lidar

Depuis R2019b

Description

L'application SLAM Map Builder charge les analyses lidar enregistrées et les données des capteurs d'odométrie pour créer une grille d'occupation 2D à l'aide d'algorithmes de localisation et de cartographie simultanées (SLAM). La correspondance d'analyse incrémentielle aligne et superpose les analyses pour créer la carte. La détection de fermeture de boucle s'ajuste à la dérive de l'odométrie du véhicule en détectant les emplacements précédemment visités et en ajustant la carte globale. Parfois, l’algorithme de correspondance de balayage et la détection de fermeture de boucle nécessitent un réglage manuel. Utilisez l'application pour aligner manuellement les numérisations et modifier les fermetures de boucles afin d'améliorer la précision globale de la carte. Vous pouvez également régler les paramètres de l'algorithme SLAM pour améliorer la création automatique de cartes.

Pour utiliser l'application :

Pour charger les fichiers journaux rosbag, sélectionnez Import > Import from rosbag. Sélectionnez le fichier rosbag et cliquez sur Open. Cela ouvre l'onglet Import . Pour plus d’informations, consultez Import and Filter a rosbag.

Pour charger des données depuis l'espace de travail, Import > Import from workspace. Sélectionnez vos variables Scans et Poses à l'aide des listes déroulantes fournies. Vous pouvez également spécifier les variables dans la fonction slamMapBuilder . Voir Programmatic Use.

Utilisez SLAM Settings pour ajuster les paramètres de l'algorithme SLAM. Des valeurs par défaut sont fournies, mais vos capteurs et données spécifiques peuvent nécessiter un réglage de ces paramètres. La valeur la plus importante à régler est la Loop Closure Threshold. Pour plus d'informations, consultez Tune SLAM Settings.

Cliquez sur Build pour commencer le processus de création de carte SLAM. Le processus de construction aligne les numérisations sur la carte à l'aide d'une correspondance de numérisation incrémentielle, identifie les fermetures de boucles lors de la visite d'emplacements précédents et ajuste les poses. Cliquez sur Pause à tout moment pendant le processus de création de carte pour aligner manuellement les analyses incrémentielles ou modifier les fermetures de boucles.

Cliquez sur Incremental Match pour modifier la pose relative du cadre actuellement sélectionné et aligner le scan avec le scan précédent. Cliquez sur Loop Closure pour modifier ou ignorer la fermeture de boucle détectée pour la trame actuelle. Utilisez le curseur en bas pour revenir aux zones où la correspondance de numérisation ou les fermetures de boucles ne sont pas précises. Vous pouvez modifier n'importe quel nombre d'analyses ou de fermetures de boucles. Pour plus d'informations, consultez Modify Increment Scans and Loop Closures.

Après avoir modifié votre carte, cliquez sur Sync pour mettre à jour toutes les poses dans la carte numérisée. Les deux options sous Sync sont Sync, qui recherche de nouvelles fermetures de boucle, ou Sync Fast, qui ignore la recherche de fermeture de boucle et met simplement à jour la carte numérisée. Pour plus d’informations, consultez Sync the Map.

Lorsque vous êtes satisfait de l'apparence de la carte, cliquez sur Export to OccupancyGrid pour exporter la carte vers un fichier m ou enregistrer la carte dans l'espace de travail. La carte est générée sous forme de grille d'occupation probabiliste 2D dans un objet occupancyMap .

Vous pouvez ouvrir les sessions d'application existantes que vous avez enregistrées à l'aide de Open Session. Lorsque vous êtes dans l'onglet Map Builder , vous pouvez enregistrer votre progression dans un fichier m en utilisant Save Session.

SLAM Map Builder app

Ouvrir l'application Générateur de cartes SLAM

  • MATLAB® Bande d'outils : Dans l'onglet Apps , sous ROBOTICS AND AUTONOMOUS SYSTEMS, cliquez sur SLAM Map Builder.

  • MATLAB Fenêtre de commande : Entrez slamMapBuilder

Exemples

développer tout

L'application  SLAM Map Builder  vous aide à créer une grille d'occupation à partir d'analyses lidar à l'aide d'algorithmes de localisation et de cartographie simultanées (SLAM). La carte est construite en estimant les poses via une correspondance de numérisation et en utilisant des fermetures de boucles pour l'optimisation du graphique de poses. Cet exemple vous montre le flux de travail pour charger un rosbag de données d'analyse lidar, filtrer les données et créer la carte. Ajustez la carte de numérisation en ajustant les correspondances de numérisation incrémentielles et en modifiant les fermetures de boucle.

Charger les données d'analyse Lidar

Chargez l'exemple de fichier .mat dans l'espace de travail, qui contient une variable, scans, sous la forme d'un cell array d'objets lidarScan .

load slamLidarScans.mat

Ouvrez l'application

Dans l'onglet Applications , sous Robotique et systèmes autonomes , cliquez sur SLAM Map Builder .

Vous pouvez également appeler la fonction slamMapBuilder :

slamMapBuilder

Importer des scans Lidar

Cliquez sur Importer > Importer depuis l’espace de travail pour charger les analyses. Les données stockées sous forme de rosbag peuvent être chargées avec une licence ROS Toolbox .

Sélectionnez la variable scans dans la liste déroulante Scans .

Dans la barre d'outils, définissez  Sous-échantillonner à (%)  sur 10. Sous-échantillonner uniformément les échantillons des données pour réduire le temps de calcul de l'algorithme SLAM. Pour cet exemple, 10 % correspond à une analyse sur cinq. Cliquez sur  Appliquer .

Utilisez le curseur ou les touches fléchées en bas pour prévisualiser les analyses.

Une fois l'importation terminée, cliquez sur  Fermer .

Ajuster les paramètres SLAM

L'algorithme SLAM peut être réglé à l'aide de la boîte de dialogue  Paramètres SLAM . Les paramètres doivent être ajustés en fonction des spécifications de votre capteur, de l'environnement et de votre application. Pour cet exemple, augmentez le Seuil de fermeture de boucle de 200 à 300. Ce seuil accru diminue la probabilité d'accepter et d'utiliser une fermeture de boucle détectée. Définissez  Intervalle d'optimisation  sur 10. À chaque dixième fermeture de boucle acceptée, le graphique de pose est optimisé pour tenir compte de la dérive.

Construire la carte

Après avoir filtré vos données et défini les paramètres de l'algorithme SLAM, cliquez sur  Construire . L'application commence à traiter les analyses pour créer la carte. Vous devriez voir le curseur progresser et les analyses se superposer sur la carte. La trajectoire estimée du robot est tracée sur la même carte numérisée. Les correspondances d'analyse incrémentielles sont affichées dans le volet  Correspondance incrémentielle . Chaque fois qu'une fermeture de boucle est détectée, le volet  Fermeture de boucle  affiche les deux analyses superposées.

Ajuster les correspondances de numérisation ou les fermetures de boucles

À tout moment pendant le processus de construction, si vous remarquez que la carte est déformée ou qu'une correspondance incrémentielle ou une fermeture de boucle apparaît, cliquez sur  Pause  pour sélectionner les analyses à ajuster. Vous pouvez également modifier les analyses à la fin du processus de construction. Naviguez à l'aide des touches fléchées ou du curseur jusqu'au point du fichier où la distorsion se produit pour la première fois. Cliquez sur les boutons Incremental Match ou Loop Closure pour ajuster les poses de numérisation actuellement affichées. Dans cette section, la mauvaise fermeture de boucle est artificielle et uniquement à des fins d’illustration.

Cliquez sur le bouton  Fermeture de boucle . Cela ouvre un onglet permettant de modifier la pose relative de fermeture de la boucle.

Pour ignorer complètement la fermeture de la boucle, cliquez sur  Ignorer . Sinon, modifiez manuellement la pose de numérisation relative jusqu'à ce que les numérisations s'alignent.

Cliquez sur Pan Scan ou Rotate Scan , puis cliquez et faites glisser dans la figure pour aligner les deux scans. Cliquez sur  Accepter  lorsque vous avez terminé. Vous pouvez le faire pour plusieurs analyses.

Après avoir modifié vos poses de numérisation pour les correspondances incrémentielles et les fermetures de boucles, cliquez sur  Sync  pour appliquer les modifications. SyncFast met à jour la carte sans rechercher de nouvelles fermetures de boucles et réduit le temps de calcul si vous avez déjà traité tous les scans.

Exporter la grille d'occupation

Une fois que vous avez synchronisé vos modifications et terminé de créer la carte, vous devriez voir une carte numérisée entièrement superposée avec une trajectoire de robot.

Cliquez sur  Exporter   Grille d'occupation  pour obtenir une carte d'occupation finale de votre environnement sous forme d'objet occupancyMap . Spécifiez le nom de la variable pour exporter la carte vers l'espace de travail. Vous pouvez créer une carte à partir d'un sous-ensemble de numérisations en revenant au cadre souhaité avant de l'exporter et en sélectionnant Jusqu'à la numérisation actuellement sélectionnée .

Appelez show sur la carte stockée pour visualiser la carte d'occupation.

show(myOccMap)

Vous pouvez également enregistrer une session de l'application SLAM Map Builder à l'aide du bouton  Enregistrer la session . L'application écrit l'état actuel de l'application dans un fichier .mat qui peut être chargé ultérieurement à l'aide de Open Session.

Exemples associés

Utilisation programmatique

développer tout

slamMapBuilder(bag) ouvre l'application SLAM Map Builder et importe le fichier journal rosbag spécifié dans bag, un objet BagSelection créé à l'aide du Fonction rosbag (ROS Toolbox) . L'application s'ouvre sur l'onglet Import pour filtrer les données du capteur dans votre rosbag.

slamMapBuilder(sessionFile) ouvre l'application SLAM Map Builder à partir d'un nom de fichier de session enregistré, sessionFile. Un fichier de session d'application est créé via le bouton Save Session dans la barre d'outils de l'application.

slamMapBuilder(scans) ouvre l'application SLAM Map Builder et importe les analyses spécifiées dans scans, un cell array d'objets lidarScan . L'application suppose que vous avez préfiltré vos analyses et ignore le processus d'importation. Cliquez sur Build pour commencer à créer la carte.

slamMapBuilder(scans,poses) ouvre l'application SLAM Map Builder et importe les scans et les poses. scans est spécifié comme un cell array d'objets lidarScan . poses est une matrice de vecteurs [x y theta] qui correspondent aux poses de scans. L'application suppose que vous avez préfiltré vos analyses et ignore le processus d'importation. Cliquez sur Build pour commencer à créer la carte.

En savoir plus

développer tout

Historique des versions

Introduit dans R2019b