Main Content

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

odometryMotionModel

Créer un modèle de mouvement d'odométrie

Depuis R2019b

Description

odometryMotionModel crée un objet de modèle de mouvement d'odométrie pour les véhicules à entraînement différentiel. Cet objet contient des paramètres de modèle de mouvement spécifiques. Vous pouvez utiliser cet objet pour spécifier les paramètres du modèle de mouvement dans l'objet monteCarloLocalization .

Ce modèle de mouvement suppose que le véhicule effectue de purs mouvements de rotation et de translation pour se déplacer d'un endroit à l'autre. Le modèle propage les points pour un mouvement vers l'avant ou vers l'arrière en fonction de ces modèles de mouvement. Les éléments de la propriété Noise font référence à la variance du mouvement. Pour voir l'effet de la modification des paramètres de bruit, utilisez showNoiseDistribution.

Création

Description

exemple

omm = odometryMotionModel crée un objet de modèle de mouvement d'odométrie pour les véhicules à entraînement différentiel.

Propriétés

développer tout

Bruit gaussien pour le mouvement du véhicule, spécifié comme vecteur à 4 éléments. Cette propriété représente les paramètres de variance du bruit gaussien appliqué au mouvement du véhicule. Les éléments du vecteur correspondent dans l'ordre aux erreurs suivantes :

  • Erreur de rotation due au mouvement de rotation

  • Erreur de rotation due au mouvement de translation

  • Erreur de traduction due au mouvement de traduction

  • Erreur de translation due au mouvement de rotation

Ce propriété est en lecture seule.

Type du modèle de mouvement d'odométrie, renvoyé sous la forme 'DifferentialDrive'. Cette propriété en lecture seule indique le type de modèle de mouvement d'odométrie utilisé par l'objet.

Fonctions d'objet

showNoiseDistributionAfficher les effets des paramètres de bruit

Exemples

réduire tout

Cet exemple montre comment utiliser la classe odometryMotionModel pour prédire la pose d'un véhicule. Un objet odometryMotionModel contient les paramètres du modèle de mouvement pour un véhicule à entraînement différentiel. Utilisez l'objet pour prédire la pose d'un véhicule en fonction de ses poses actuelles et précédentes et des paramètres du modèle de mouvement.

Créez un objet de modèle de mouvement d'odométrie.

motionModel = odometryMotionModel;

Définissez les poses précédentes et la lecture actuelle de l’odométrie. Chaque prédiction de pose correspond à une ligne du vecteur previousPoses .

previousPoses =  rand(10,3);
currentOdom = [0.1 0.1 0.1];

Le premier appel à l'objet initialise les valeurs et renvoie les poses précédentes comme poses actuelles.

currentPoses = motionModel(previousPoses, currentOdom);

Les appels ultérieurs à l'objet avec des poses d'odométrie mises à jour renvoient les poses prédites en fonction du modèle de mouvement.

currentOdom = currentOdom + [0.1 0.1 0.05];
predPoses = motionModel(previousPoses, currentOdom);

Cet exemple montre comment visualiser l'effet de différents paramètres de bruit sur la classe odometryMotionModel . Un objet odometryMotionModel contient les paramètres de bruit du modèle de mouvement pour un véhicule à entraînement différentiel. Utilisez showNoiseDistribution pour visualiser comment la modification de ces valeurs affecte la distribution des poses prédites.

Créez un objet de modèle de mouvement.

motionModel = odometryMotionModel;

Affichez la distribution des particules avec les paramètres de bruit existants. Chaque particule est une hypothèse pour la pose prédite.

showNoiseDistribution(motionModel);

Figure Odometry Motion Model contains an axes object. The axes object with title Noise Parameters: [0.2 0.2 0.2 0.2], xlabel X [meters], ylabel Y [meters] contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent Robot initial pose, Robot final pose, Samples at final pose.

Afficher la distribution avec un changement de pose d'odométrie spécifié et un nombre d'échantillons. Le changement d'odométrie est utilisé comme pose finale avec des hypothèses réparties autour en fonction des paramètres Noise .

showNoiseDistribution(motionModel, ...
            'OdometryPoseChange', [0.5 0.1 0.25], ...
            'NumSamples', 1000);

Figure Odometry Motion Model contains an axes object. The axes object with title Noise Parameters: [0.2 0.2 0.2 0.2], xlabel X [meters], ylabel Y [meters] contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent Robot initial pose, Robot final pose, Samples at final pose.

Modifiez les paramètres Noise et visualisez les effets. Utilisez le même changement de pose d’odométrie et le même nombre d’échantillons.

 motionModel.Noise = [0.2 1 0.2 1];
 
 showNoiseDistribution(motionModel, ...
            'OdometryPoseChange', [0.5 0.1 0.25], ...
            'NumSamples', 1000);

Figure Odometry Motion Model contains an axes object. The axes object with title Noise Parameters: [0.2 1 0.2 1], xlabel X [meters], ylabel Y [meters] contains 4 objects of type line. One or more of the lines displays its values using only markers These objects represent Robot initial pose, Robot final pose, Samples at final pose.

Limites

Si vous apportez des modifications à votre modèle de mouvement après l'avoir utilisé avec l'objet monteCarloLocalization , appelez au préalable release sur cet objet. Par exemple:

mcl = monteCarloLocalization; 
[isUpdated,pose,covariance] = mcl(ranges,angles); 
release(mcl) 
mcl.MotionModel.Noise = [0.25 0.25 0.4 0.4];

Références

[1] Thrun, Sebatian, Wolfram Burgard, and Dieter Fox. Probabilistic Robotics. MIT Press, 2005.

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