Contenu principal

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

sample

Calculer des échantillons d'état à l'aide de l'échantillonneur d'état MPNet

Depuis R2023b

Description

states = sample(sampler) calcule un échantillon d'état à l'aide d'un échantillonneur d'état Motion Planning Networks (MPNet).

states = sample(sampler,numsamples) calcule le nombre spécifié d'échantillons d'état.

exemple

Exemples

réduire tout

Charger MPNet pré-entraîné

Chargez un fichier de données contenant un MPNet pré-entraîné dans l'espace de travail MATLAB® . Le MPNet a été formé sur diverses cartes de labyrinthe 2D avec des largeurs et des hauteurs de 10 mètres et des résolutions de 2,5 cellules par mètre. Chaque carte de labyrinthe contient une largeur de passage de 5 cellules de grille et une épaisseur de paroi de 1 cellule de grille.

data = load("mazeMapTrainedMPNET.mat")
data = struct with fields:
      encodingSize: [9 9]
       lossWeights: [100 100 0]
        mazeParams: {[5]  [1]  'MapSize'  [10 10]  'MapResolution'  [2.5000]}
       stateBounds: [3x2 double]
    trainedNetwork: [1x1 dlnetwork]

Créer une carte de labyrinthe pour l'échantillonnage

Créez une carte de labyrinthe aléatoire pour l'échantillonnage. La taille de la grille (MapSize×MapResolution) doit être la même que celle des cartes utilisées pour la formation du MPNet.

map = mapMaze(5,1,MapSize=[10 10],MapResolution=2.5);

Spécifiez la pose de départ et la pose d'objectif.

start = [1 1 0];
goal = [9 9 0];

Créer un échantillonneur d'état MPNet

Spécifiez les limites d'état et créez un objet d'espace d'état SE(2).

x = map.XWorldLimits;
y = map.YWorldLimits;
z = [-pi pi];
stateBounds = [x; y; z];
stateSpace = stateSpaceSE2(stateBounds);

Configurez l'objet mpnetSE2 pour utiliser le MPNet pré-entraîné pour prédire des échantillons d'état sur une carte aléatoire. Définissez les valeurs de propriété EncodingSize de l'objet mpnetSE2 sur celles de la valeur utilisée pour la formation du réseau.

mpnet = mpnetSE2(Network=data.trainedNetwork,StateBounds=stateBounds,EncodingSize=data.encodingSize);

Créez un échantillonneur d'état MPNet pour les échantillons d'état de calcul. Spécifiez l'environnement de la carte, la pose de départ et la pose d'objectif comme entrées dans l'échantillonneur d'état.

sampler = stateSamplerMPNET(stateSpace,mpnet,Environment=map,StartState=start,GoalState=goal);

Calculer des échantillons d’état et tracer les résultats

Générez 40 échantillons d’état à l’aide de l’échantillonneur d’état MPNet.

states = sample(sampler,40);

Tracez les données d'entrée et les échantillons calculés.

show(map)
hold on
plot(start(1),start(2),plannerLineSpec.start{:})
plot(goal(1),goal(2),plannerLineSpec.goal{:})
plot(states(:,1),states(:,2),plannerLineSpec.state{:})
hold off
legend(Location="bestoutside")

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

Arguments d'entrée

réduire tout

Échantillonneur d'état MPNet, spécifié comme objet stateSamplerMPNET .

Nombre d'échantillons, spécifié sous forme d'entier positif.

Types de données : double

Arguments de sortie

réduire tout

Échantillons d'état, renvoyés sous la forme d'une matrice M-par- N de valeurs réelles. M est le nombre d’échantillons d’état. N est le nombre de variables d'état. Chaque ligne de la matrice contient des variables d'état correspondant au modèle d'espace d'état d'entrée. Pour le modèle d'espace d'état SE(2), N vaut 3 et chaque ligne est de la forme [x y θ].

Types de données : double

Capacités étendues

développer tout

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

Historique des versions

Introduit dans R2023b

Voir aussi

Objets

Fonctions