Main Content

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

wheelEncoderOdometryAckermann

Calculer l'odométrie du véhicule Ackermann à l'aide des tics de l'encodeur de roue et de l'angle de braquage

Depuis R2020b

Description

Le wheelEncoderOdometryAckermann System object™ calcule l'odométrie du véhicule Ackermann à l'aide des tics de l'encodeur de roue et de l'angle de braquage du véhicule.

Pour calculer l'odométrie du véhicule Ackermann :

  1. Créez l'objet wheelEncoderOdometryAckermann et définissez ses propriétés.

  2. Appelez l'objet avec des arguments, comme s'il s'agissait d'une fonction.

Pour en savoir plus sur le fonctionnement des objets système, voir What Are System Objects?

Création

Description

exemple

whlEncOdom = wheelEncoderOdometryAckermann crée un System object wheelEncoderOdometryAckermann avec des valeurs de propriété par défaut.

whlEncOdom = wheelEncoderOdometryAckermann(encoder) crée un System object wheelEncoderOdometryAckermann en utilisant l' System object wheelEncoderAckermann spécifié, encoder, pour définir les propriétés .

whlEncOdom = wheelEncoderOdometryAckermann(Name,Value) définit Propriétés en utilisant une ou plusieurs paires nom-valeur. Les propriétés non spécifiées ont des valeurs par défaut. Mettez chaque nom de propriété entre guillemets.

Par exemple, whlEncOdom = wheelEncoderOdometryAckermann('SampleRate',100) définit la fréquence d'échantillonnage du capteur sur 100 Hz.

Propriétés

développer tout

Sauf indication contraire, les propriétés sont non réglables , ce qui signifie que vous ne pouvez pas modifier leurs valeurs après avoir appelé l'objet. Les objets se verrouillent lorsque vous les appelez et la fonction release les déverrouille.

Si une propriété est ajustable , vous pouvez modifier sa valeur à tout moment.

Pour plus d'informations sur la modification des valeurs des propriétés, voir System Design in MATLAB Using System Objects.

Taux d'échantillonnage du capteur, spécifié sous forme de scalaire positif en hertz.

Exemple : 'SampleRate',100

Types de données : double

Nombre de ticks d'encodeur par tour de roue, spécifié sous la forme d'un entier positif ou d'un vecteur à deux éléments d'entiers positifs.

Lorsque vous spécifiez cette valeur comme vecteur à deux éléments, le premier élément correspond à la roue arrière gauche et le second à la roue arrière droite.

Exemple : 'TicksPerRevolution',[2048 2048]

Types de données : double

Rayon de roue, spécifié comme un scalaire positif ou un vecteur à deux éléments de nombres positifs en mètres.

Lorsque vous spécifiez cette valeur comme vecteur à deux éléments, le premier élément correspond à la roue arrière gauche et le second à la roue arrière droite.

Exemple : 'WheelRadius',[0.35 0.35]

Types de données : double

Distance entre les roues sur l'essieu, spécifiée sous forme d'un scalaire positif en mètres.

Exemple : 'TrackWidth',1.572

Types de données : double

Distance entre l'essieu avant et l'essieu arrière, spécifiée sous forme d'un scalaire positif en mètres.

Exemple : 'WheelBase',2.818

Types de données : double

Pose initiale du véhicule, spécifiée comme vecteur à trois éléments de la forme [X Y Yaw]. X et Y précisent la position du véhicule en mètres. Yaw précise l'orientation du véhicule en radians. Toutes les valeurs sont dans le système de coordonnées de navigation local.

Exemple : 'InitialPose',[0 0 0]

Types de données : double

Utilisation

Description

pose = whlEncOdom(ticks,steer) calcule l'odométrie d'un véhicule Ackermann à l'aide des ticks d'encodeur de roue spécifiés ticks et de l'angle de braquage steer, et renvoie la position et l'orientation du véhicule dans le système de coordonnées de navigation local.

exemple

[pose,velocity] = whlEncOdom(ticks,steer) renvoie en outre la vitesse linéaire et angulaire du véhicule dans le système de coordonnées de navigation local.

Arguments en entrée

développer tout

Nombre de ticks de l'encodeur de roue, spécifié sous la forme d'une matrice n-by-2. n est le nombre d’échantillons dans la trame actuelle.

Chaque ligne de la matrice spécifie les ticks de l'encodeur de roue sous la forme [ticksBackLeft ticksBackRight], où ticksBackLeft et ticksBackRight spécifie le nombre de ticks pour les roues arrière gauche et arrière droite, respectivement.

Exemple : [5 5; 2 2]

Types de données : single | double

Angle de braquage du véhicule, spécifié sous la forme d'un vecteur colonne d'élément n en radians. n est le nombre d’échantillons dans la trame actuelle.

Exemple : [0.2; 0.2]

Types de données : single | double

Arguments de sortie

développer tout

Position et orientation du véhicule, renvoyées sous forme de matrice n-by-3. n est le nombre d’échantillons dans la trame actuelle. Chaque ligne de la matrice précise la position et l'orientation d'un échantillon sous la forme [X Y Yaw]. X et Y précisent la position du véhicule en mètres. Yaw précise l'orientation du véhicule en radians. Toutes les valeurs sont dans le système de coordonnées de navigation local.

Types de données : single | double

Vitesse linéaire et angulaire du véhicule, renvoyée sous forme de matrice n-by-3. n est le nombre d’échantillons dans la trame actuelle. Chaque ligne de la matrice spécifie la vitesse linéaire et angulaire d'un échantillon sous la forme [velX velY yawRate]. velX et velY précisent la vitesse linéaire du véhicule en mètres par seconde. yawRate spécifie la vitesse angulaire du véhicule en radians par seconde. Toutes les valeurs sont dans le système de coordonnées de navigation local.

Types de données : single | double

Fonctions d'objet

Pour utiliser une fonction objet, spécifiez le System object comme premier argument d'entrée. Par exemple, pour libérer les ressources système d'un System object nommé obj, utilisez cette syntaxe :

release(obj)

développer tout

cloneCreate duplicate System object
stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object
isLockedDetermine if System object is in use

Exemples

réduire tout

Créez un System object wheelEncoderOdometryAckermann .

whlEncOdom = wheelEncoderOdometryAckermann;

Spécifiez le nombre de ticks de l'encodeur de roue et l'angle de braquage.

ticks = [5 5; 2 2];
steer = [0.2; 0.2];

Calculez l'odométrie du véhicule Ackermann.

[pose,vel] = whlEncOdom(ticks,steer)
pose = 2×3

    0.0054    0.0000    0.0004
    0.0075    0.0000    0.0005

vel = 2×3

    0.5369    0.0002    0.0386
    0.2148    0.0001    0.0154

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 R2020b