Main Content

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

validatorVehicleCostmap

Validateur d'état basé sur une carte de coûts 2D

Depuis R2019b

Description

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

Création

Syntaxe

Description

validator = validatorVehicleCostmap crée un validateur de carte de coûts de véhicule associé à un espace d'état SE2 avec des paramètres par défaut.

exemple

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

validator = validatorVehicleCostmap(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 vehicleCostmap (Automated Driving Toolbox) .

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].

Mappage de variable d'état pour la coordonnée theta dans le vecteur d'état, spécifié sous la forme d'un entier positif. Par exemple, si un vecteur d'état est donné sous la forme [x y theta], la coordonnée theta est 3.

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 des coûts des véhicules. Précisez un rayon de gonflage de 1 mètre.

load exampleMaps.mat
map = vehicleCostmap(double(simpleMap));
map.CollisionChecker = inflationCollisionChecker("InflationRadius",1);
plot(map)

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 2 objects of type image, patch. This object represents Inflated Areas.

Spécifiez un chemin grossier à travers la carte.

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

Figure contains an axes object. The axes object with xlabel X, ylabel Y contains 3 objects of type image, patch, line. This object represents Inflated Areas.

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 = validatorVehicleCostmap(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 xlabel X, ylabel Y contains 4 objects of type image, patch, line. One or more of the lines displays its values using only markers This object represents Inflated Areas.

Capacités étendues

Historique des versions

Introduit dans R2019b