Main Content

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

show

Scans de tracé et poses de robots

Description

show(slamObj) trace tous les scans ajoutés à l'objet input lidarSLAM superposé avec les poses lidar dans son graphique de pose sous-jacent.

exemple

show(slamObj,Name,Value) spécifie les options en utilisant les arguments de paire Name,Value . Par exemple, "Poses","off" désactive l'affichage du graphique de pose sous-jacent dans slamObj.

axes = show(___) renvoie le descripteur d'axes sur lequel les données lidar SLAM sont tracées en utilisant l'une des syntaxes précédentes.

Exemples

réduire tout

Utilisez un objet lidarSLAM pour ajouter et comparer de manière itérative des analyses lidar et créer un graphique de pose optimisé de la trajectoire du robot. Pour obtenir une carte d'occupation à partir des poses et scans associés, utilisez la fonction buildMap .

Charger des données et configurer l'algorithme SLAM

Chargez un cell array d'objets lidarScan . Les scans lidar ont été collectés dans un parking sur un robot Husky® de ClearPath Robotics®. En règle générale, les analyses lidar sont effectuées à haute fréquence et chaque analyse n'est pas nécessaire pour le SLAM. Par conséquent, sous-échantillonnez les analyses en sélectionnant uniquement toutes les 40 analyses.

load garage_fl1_southend.mat scans
scans = scans(1:40:end);

Pour configurer l'algorithme SLAM, spécifiez la plage lidar, la résolution de la carte, le seuil de fermeture de boucle et le rayon de recherche. Ajustez ces paramètres pour votre robot et votre environnement spécifiques. Créez l'objet lidarSLAM avec ces paramètres.

maxRange = 19.2; % meters
resolution = 10; % cells per meter

slamObj = lidarSLAM(resolution,maxRange);
slamObj.LoopClosureThreshold = 360;
slamObj.LoopClosureSearchRadius = 8;

Ajouter des analyses de manière itérative

À l'aide d'une boucle for , ajoutez des analyses à l'objet SLAM. L'objet utilise la correspondance d'analyse pour comparer chaque analyse ajoutée à celles ajoutées précédemment. Pour améliorer la carte, l'objet optimise le graphique de pose chaque fois qu'il détecte une fermeture de boucle. Tous les 10 scans, affichez les poses et les scans stockés.

for i = 1:numel(scans)

    addScan(slamObj,scans{i});
    
    if rem(i,10) == 0
        show(slamObj);
    end
end

Voir la carte d'occupation

Après avoir ajouté tous les scans à l'objet SLAM, créez une carte occupancyMap en appelant buildMap avec les scans et les poses. Utilisez la même résolution de carte et la même portée maximale que celles utilisées avec l'objet SLAM.

[scansSLAM,poses] = scansAndPoses(slamObj);
occMap = buildMap(scansSLAM,poses,resolution,maxRange);
figure
show(occMap)
title('Occupancy Map of Garage')

Arguments d'entrée

réduire tout

Objet Lidar SLAM, spécifié comme objet lidarSLAM . L'objet contient les paramètres de l'algorithme SLAM, les données du capteur et le graphique de pose sous-jacent utilisé pour créer la carte.

Arguments nom-valeur

Spécifiez des paires d'arguments facultatives sous la forme Name1=Value1,...,NameN=ValueN, où Name est le nom de l'argument et Value est la valeur correspondante. Les arguments nom-valeur doivent apparaître après les autres arguments, mais l'ordre des paires n'a pas d'importance.

Avant R2021a, utilisez des virgules pour séparer chaque nom et valeur, et mettez Name entre guillemets.

Exemple : "Poses","off"

Axes utilisés pour tracer le graphique de pose, spécifiés comme une paire séparée par des virgules composée de "Parent" et d'un objet Axes ou UIAxes . Voir axes ou uiaxes.

Afficher les poses lidar, spécifiées comme une paire séparée par des virgules composée de "Poses" et "on" ou "off".

Arguments de sortie

réduire tout

Axes utilisés pour tracer la carte, renvoyés sous la forme d'un objet Axes ou UIAxes . Voir axes ou uiaxes.

Historique des versions

Introduit dans R2019b