Cet exemple montre comment effectuer un échantillonnage éclairé à l'aide d'un MPNet pré-entraîné. Jusqu'à un certain nombre d'itérations, un échantillonneur d'état MPNet prédit les échantillons à l'aide du MPNet pré-entraîné. Les échantillons prédits à l'aide du MPNet sont biaisés vers un sous-espace contenant une solution de chemin optimale. Après le nombre d'itérations spécifié, l'échantillonneur passe à l'approche d'échantillonnage uniforme. Vous pouvez modifier le nombre d'itérations en spécifiant la propriété MaxLearnedSamples
de l'objet stateSamplerMPNET
.
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 = 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 () doit être la même que celle des cartes utilisées pour la formation du MPNet.
Spécifiez la pose de départ et la pose d'objectif.
Visualisez la carte d’entrée.
Créer un échantillonneur d'état MPNet
Spécifiez les limites d'état et créez un objet d'espace d'état SE(2).
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.
Créez un échantillonneur d'état MPNet pour calculer des échantillons d'état à utiliser pour la planification de mouvements. 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. La valeur par défaut pour MaxLearnedSamples
est 50
. Cela implique que les 50 premiers échantillons renvoyés par l'échantillonneur d'état sont des échantillons basés sur l'apprentissage, prédits à l'aide du MPNet pré-entraîné.
sampler_orig =
stateSamplerMPNET with properties:
StateSpace: [1x1 stateSpaceSE2]
MotionPlanningNetwork: [1x1 mpnetSE2]
Environment: [1x1 binaryOccupancyMap]
StartState: [2 10 0]
GoalState: [5 4 0]
MaxLearnedSamples: 50
GoalThreshold: 1
Exemple d'espace d'état à l'aide de l'échantillonneur d'état MPNet
Générez 50 échantillons d’état situés entre la pose de départ et la pose d’objectif à l’aide de l’échantillonneur d’état MPNet. Dans ce cas, l'échantillonneur d'état MPNet génère les 50 échantillons à l'aide du MPNet pré-entraîné.
Créer des copies de l'échantillonneur d'état MPNet et faire varier le nombre maximal d'échantillons appris
Créez des copies de l’objet échantillonneur d’état MPNet par défaut. Modifiez la propriété d'échantillons maximum appris de l'échantillonneur pour étudier son impact sur les résultats d'échantillonnage.
Définissez la propriété MaxLearnedSamples
sur 10
. Dans ce cas, l'échantillonneur d'état MPNet génère les 10 premiers échantillons à l'aide du MPNet pré-entraîné et les 40 échantillons restants à l'aide de l'approche d'échantillonnage uniforme.
Définissez la propriété MaxLearnedSamples
sur 30
. Dans ce cas, l'échantillonneur d'état MPNet génère les 30 premiers échantillons à l'aide du MPNet pré-entraîné et les 20 échantillons restants à l'aide de l'approche d'échantillonnage uniforme.
Exemple d'espace d'état à l'aide d'un échantillonneur d'état MPNet modifié
Utilisez chacun des échantillonneurs d’état MPNet modifiés pour générer le même nombre d’échantillons que celui de l’échantillonneur par défaut. Dans ce cas, utilisez-les chacun pour générer 50 échantillons.
Tracer et comparer les résultats d'échantillonnage
Créez une figure avec un espace suffisant pour afficher les tracés des trois échantillonneurs d’état.
Tracez la sortie de l'échantillonneur d'état MPNet avec le nombre maximum d'échantillons appris fixé à 10.
Tracez la sortie de l'échantillonneur d'état MPNet avec le nombre maximum d'échantillons appris fixé à 30.
Tracez la sortie de l'échantillonneur d'état MPNet par défaut. La valeur par défaut du nombre maximum d'échantillons appris est 50. À mesure que vous augmentez le nombre maximum d’échantillons appris pour correspondre au nombre d’échantillons d’état à générer, les échantillons de sortie se concentrent davantage sur un chemin entre la pose de départ donnée et la pose objectif.
Exploration plus approfondie
À partir des résultats d'échantillonnage, vous pouvez déduire que l'échantillonneur d'état MPNet renvoie des échantillons d'état optimaux si le nombre maximum d'échantillons appris est égal au nombre maximum d'échantillons à calculer. Cependant, si le MPNet est formé sur un ensemble de données comportant moins d'environnements cartographiques ou d'échantillons de chemin, la précision de prédiction du réseau diminue. L'échantillonneur d'état MPNet peut renvoyer un nombre insuffisant d'échantillons appris entre la pose de départ et la pose d'objectif, et vous ne pouvez pas l'utiliser pour la planification de chemin. Dans de tels cas, la valeur de MaxLearnedSamples
doit être inférieure au nombre d’échantillons requis. Cela permet à l'échantillonneur d'état MPNet de passer à l'approche d'échantillonnage uniforme après un nombre spécifié d'itérations, garantissant ainsi une solution de chemin.