Main Content

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

validatorOccupancyMap

Validateur d'état basé sur une carte quadrillée 2D

Depuis R2019b

Description

L'objet validatorOccupancyMap valide les états et les mouvements discrétisés en fonction de la valeur dans une carte d'occupation 2D. Un emplacement occupé sur la carte est interprété comme un état invalide.

Création

Syntaxe

Description

validator = validatorOccupancyMap crée un validateur de carte d'occupation 2D associé à un espace d'état SE2 avec des paramètres par défaut.

exemple

validator = validatorOccupancyMap(stateSpace) crée un validateur dans la définition de l'espace d'état donnée dérivée de nav.StateSpace.

validator = validatorOccupancyMap(stateSpace,Name,Value) spécifie les propriétés Map ou XYIndices en utilisant les arguments de paire Name,Value .

Propriétés

développer tout

Espace d'états pour valider les états, spécifié comme sous-classe de nav.StateSpace. Les objets d'espace d'état fournis incluent :

Carte utilisée pour valider les états, spécifiée comme objet binaryOccupancyMap ou occupancyMap .

Intervalle d'échantillonnage entre les états et de vérification de la validité de l'état, spécifié sous la forme d'un scalaire numérique positif.

Mappage de variables d'état pour xy-coordonnées dans le vecteur d'état, spécifié comme vecteur à deux éléments, [xIdx yIdx]. Par exemple, si un vecteur d'état est donné sous la forme [r p y x y z], les coordonnées xy sont [4 5].

Fonctions d'objet

copyCréer une copie complète de l'objet validateur d'état
isStateValidVérifiez si l'état est valide
isMotionValidVérifiez si le chemin entre les états est valide

Exemples

réduire tout

Cet exemple montre comment valider les chemins à travers un environnement.

Chargez des exemples de cartes. Utilisez la carte simple pour créer une carte d'occupation binaire.

load exampleMaps.mat
map = occupancyMap(simpleMap);
show(map)

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

Spécifiez un chemin grossier à travers la carte.

path = [2 2 pi/2; 10 15 0; 17 8 -pi/2];
hold on
plot(path(:,1),path(:,2),"--o")

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 2 objects of type image, line.

Créez un validateur d'état en utilisant la définition stateSpaceSE2 . Spécifiez la carte et la distance pour interpoler et valider les segments de chemin.

validator = validatorOccupancyMap(stateSpaceSE2);
validator.Map = map;
validator.ValidationDistance = 0.1;

Vérifiez que les points du chemin sont des états valides. Les trois points se trouvent dans un espace libre et sont donc considérés comme valides.

isValid = isStateValid(validator,path)
isValid = 3x1 logical array

   1
   1
   1

Vérifiez le mouvement entre chaque état de chemin séquentiel. La fonction isMotionValid interpole le long du chemin entre les états. Si un segment de chemin n'est pas valide, tracez le dernier point valide le long du chemin.

startStates = [path(1,:);path(2,:)];
endStates = [path(2,:);path(3,:)];
    for i = 1:2
        [isPathValid, lastValid] = isMotionValid(validator,startStates(i,:),endStates(i,:));
        if ~isPathValid
            plot(lastValid(1),lastValid(2),'or')
        end
    end
hold off

Figure contains an axes object. The axes object with title Occupancy Grid, xlabel X [meters], ylabel Y [meters] contains 3 objects of type image, line. One or more of the lines displays its values using only markers

Capacités étendues

Historique des versions

Introduit dans R2019b