Main Content

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

stateSpaceDubins

Espace d'État pour les véhicules Dubins

Depuis R2019b

Description

L'objet stateSpaceDubins stocke les paramètres et les états dans l'espace d'état de Dubins, qui est composé de vecteurs d'état représentés par [x, y, θ]. x et y sont des coordonnées cartésiennes, et θ est l'angle d'orientation. L'espace d'états de Dubins a une limite inférieure sur le rayon de braquage (spécifié par la propriété MinTurningRadius dans l'objet) pour la navigation entre les états et utilise la courbe la plus courte possible pour connecter les états.

Création

Description

exemple

space = stateSpaceDubins crée un objet d'espace d'état Dubins avec des limites d'état par défaut pour x, y et θ.

space = stateSpaceDubins(bounds) spécifie le bounds pour x, y et θ. Les valeurs d'état au-delà des limites sont tronquées aux limites. L'entrée, bounds, vous permet de définir la valeur de la propriété StateBounds .

Propriétés

développer tout

Nom de l'espace d'état, spécifié sous forme de chaîne.

Ce propriété est en lecture seule.

Dimension de l'espace d'état, spécifiée sous la forme d'un entier positif.

Limites des variables d'état, spécifiées sous la forme d'une matrice à valeurs réelles 3 x 2.

  • La première ligne spécifie les limites inférieure et supérieure de l'état x en mètres.

  • La deuxième ligne spécifie les limites inférieure et supérieure de l'état y en mètres.

  • La troisième ligne spécifie les limites inférieure et supérieure de l'état θ en radians.

Types de données : double

Rayon de braquage minimum en mètres, spécifié sous forme d'un scalaire positif. Le rayon de braquage minimum correspond au plus petit cercle que le véhicule peut parcourir avec une direction maximale dans une seule direction.

Fonctions d'objet

copyCréer une copie complète de l'objet de l'espace d'état
distanceDistance entre deux états
enforceStateBoundsReduce state to state bounds
interpolateInterpoler entre les états
sampleGaussianExemple d'état utilisant la distribution gaussienne
sampleUniformExemple d'état utilisant une distribution uniforme

Exemples

réduire tout

Créez un espace d'état Dubins et définissez le rayon de rotation minimum sur 0.2.

ss = stateSpaceDubins;
ss.MinTurningRadius = 0.2;

Créez un validateur d'état basé sur occupancyMap en utilisant l'espace d'état créé.

sv = validatorOccupancyMap(ss);

Créez une carte d'occupation à partir d'un exemple de carte et définissez la résolution de la carte sur 10 cellules/mètre.

load exampleMaps
map = occupancyMap(simpleMap,10);
sv.Map = map;

Définissez la distance de validation pour le validateur.

sv.ValidationDistance = 0.01;

Les limites de l’espace d’état de mise à jour doivent être identiques aux limites de la carte.

ss.StateBounds = [map.XWorldLimits;map.YWorldLimits; [-pi pi]];

Créez le planificateur de chemin et augmentez la distance de connexion maximale.

planner = plannerRRT(ss,sv);
planner.MaxConnectionDistance = 0.3;

Définissez les états de départ et d’objectif.

start = [0.5,0.5,0];
goal = [2.5,0.2,0];

Planifiez un chemin avec les paramètres par défaut.

rng(100,'twister'); % repeatable result
[pthObj,solnInfo] = planner.plan(start,goal);

Visualisez les résultats.

show(map);
hold on;
plot(solnInfo.TreeData(:,1),solnInfo.TreeData(:,2),'.-'); % tree expansion
plot(pthObj.States(:,1), pthObj.States(:,2),'r-','LineWidth',2) % draw path

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.

Capacités étendues

Génération de code C/C++
Générez du code C et C++ avec MATLAB® Coder™.

Historique des versions

Introduit dans R2019b