Main Content

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

stateSpaceSE2

Espace d’état SE(2)

Depuis R2019b

Description

L'objet stateSpaceSE2 stocke les paramètres et les états dans l'espace d'état SE(2), 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'objet utilise la distance euclidienne pour calculer la distance et utilise l'interpolation linéaire pour calculer la translation et la rotation de l'état.

Création

Description

exemple

space = stateSpaceSE2 crée un objet d'espace d'état SE(2) avec des limites d'état par défaut pour x, y et θ.

space = stateSpaceSE2(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

Poids appliqué au calcul des distances x et y, spécifié comme un scalaire réel non négatif.

Dans l'objet, la distance calculée comme suit :

d=(wxy(dx2+dy2))+wθdθ2

w xy est le poids appliqué aux coordonnées x et y , et w θ est le poids appliqué à la coordonnée θ . d x , d y et d θ sont les distances dans les directions x, y et θ , respectivement.

Types de données : double

Poids appliqué au calcul de distance θ , spécifié comme un scalaire réel non négatif.

Dans l'objet, la distance calculée comme suit :

d=(wxy(dx2+dy2))+wθdθ2

w xy est le poids appliqué aux coordonnées x et y , et w θ est le poids appliqué à la coordonnée θ . d x , d y et d θ sont les distances dans les directions x, y et θ , respectivement.

Types de données : double

Fonctions d'objet

copyCréer une copie complète de l'objet de l'espace d'état
enforceStateBoundsReduce state to state bounds
distanceDistance entre deux états
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 SE(2).

ss = stateSpaceSE2;

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'); % for repeatable result
[pthObj,solnInfo] = planner.plan(start,goal);

Visualisez les résultats.

map.show; 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