Capteur inertiel#

Introduction#

Le module inertiel inertial permet de contrôler et d’accéder aux données du capteur inertiel intégré du cerveau IQ (2e génération). Ce capteur mesure les mouvements et les rotations du cerveau.

Le capteur inertiel utilise deux éléments pour cela. Le gyroscope mesure les mouvements de rotation, tels que le cap, la rotation, la vitesse angulaire et l’orientation. L’accéléromètre mesure les variations de mouvement, comme l’accélération ou le ralentissement selon les axes x, y et z.

Constructeurs de classes#

inertial(
  turnType dir = turnType::right );

Destructeur de classe#

Détruit l’objet inertiel inertial et libère les ressources associées.

~inertial();

Paramètres#

Paramètre

Taper

Description

dir

turnType

Facultatif. La direction qui renvoie des valeurs positives :

  • right (par défaut) — Les virages à droite renvoient des valeurs positives.
  • left — Les virages à gauche renvoient des valeurs positives.

Exemples#

// Create the inertial instance
inertial myInertial = inertial(
    right);     // dir

Fonctions des membres#

La classe inertial comprend les fonctions membres suivantes :

  • heading — Renvoie la direction vers laquelle le capteur est orienté.

  • rotation — Renvoie la distance de rotation du capteur.

  • setHeading — Définit le cap actuel du capteur sur une nouvelle valeur de cap.

  • setRotation — Définit la rotation actuelle du capteur sur une nouvelle valeur de rotation.

  • calibrate — Calibre le capteur inertiel.

  • resetHeading — Réinitialise le cap actuel du capteur à 0 degré.

  • resetRotation — Réinitialise la rotation actuelle du capteur à 0 degré.

  • isCalibrating — Renvoie si le capteur inertiel est actuellement en cours d’étalonnage.

  • changed — Enregistre une fonction de rappel qui s’exécute lorsque l’en-tête change.

  • installed — Indique si le capteur inertiel est installé.

  • acceleration — Renvoie la vitesse à laquelle le capteur accélère ou ralentit sur l’axe sélectionné.

  • gyroRate — Renvoie la vitesse de rotation du capteur sur l’axe sélectionné.

  • orientation — Renvoie l’angle de roulis, de tangage ou de lacet du capteur inertiel.

  • collision — Enregistre une fonction de rappel qui s’exécute lorsqu’une collision est détectée.

  • setTurnType — Définit quelle direction de virage renvoie des valeurs de cap positives.

  • getTurnType — Renvoie la direction de virage qui produit des valeurs positives.

Avant d’appeler une quelconque fonction membre inertial , une instance inertial doit être créée, comme indiqué ci-dessous :

/* This constructor is required when using VS Code.
Inertial Sensor configuration is generated automatically
in VEXcode with the IQ (2nd gen) Brain. Replace the values
as needed. */

// Create the inertial instance
inertial myInertial = inertial();

heading#

Le cap correspond à la direction vers laquelle le capteur est orienté, mesurée en degrés de 0 à 359,99. Cette fonction renvoie le cap actuel du capteur.

Le cap initial est de 0 degré. Si le capteur dépasse 359,99 degrés, le cap revient à 0 degré.

Available Functions
double heading( rotationUnits units = degrees );

Parameters

Paramètre

Taper

Description

units

rotationUnits

Unité de direction :

  • deg / degrees (par défaut) — degrés
  • turns / rev — tours

Return Values

Renvoie un double double représentant le cap actuel du capteur dans les unités spécifiées.

Notes
  • La valeur du cap est comprise entre 0 et 359,99 degrés. Utilisez rotation pour accéder à la valeur de rotation continue.

Examples
// Turn, then show the current heading
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.heading(degrees));

rotation#

Renvoie la rotation actuelle du capteur inertiel.

La rotation correspond à l’angle de rotation du capteur. Contrairement au cap, la rotation peut dépasser 359,99 degrés ou être inférieure à 0 degré. Par exemple, deux tours complets vers la droite correspondent à une rotation de 720 degrés. Un tour complet vers la gauche à partir de 0 degré correspond à une rotation de -360 degrés.

Available Functions
double rotation( rotationUnits units = degrees );

Parameters

Paramètre

Taper

Description

units

rotationUnits

Unité de rotation :

  • deg / degrees (par défaut) — degrés
  • turns / rev — révolutions

Return Values

Renvoie un double double représentant la rotation actuelle dans les unités spécifiées.

Notes
  • La valeur de rotation est continue et ne comporte pas de retour à la ligne entre 0 et 359,99 degrés. Utilisez heading pour accéder à la valeur de cap après retour à la ligne.

Examples
// Turn, then show the current rotation
Drivetrain.turnFor(right, 450, degrees);
Brain.Screen.print("%f", myInertial.rotation(degrees));

setHeading#

Le cap est la direction vers laquelle le capteur est orienté, mesurée en degrés de 0 à 359,99. Cette fonction modifie le cap actuel du capteur inertiel en une nouvelle valeur de cap.

Par exemple, si le capteur est orienté vers la droite, le fait de régler son cap à 0 degré définit cette position comme le nouveau cap zéro. Le capteur peut alors suivre d’autres caps en fonction de cette nouvelle direction.

Available Functions
void setHeading( double        value,
                 rotationUnits units );

Parameters

Paramètre

Taper

Description

value

double

Valeur du cap, en degrés, à définir pour le capteur. Cette valeur peut être comprise entre 0 et 359,99.

units

rotationUnits

Unité de direction :

  • deg / degrees — degrés
  • turns / rev — tours

Return Values

Cette fonction ne renvoie aucune valeur.

Examples
// Turn the robot around
myInertial.setHeading(180, degrees);
Drivetrain.turnToHeading(0, degrees);

setRotation#

Définit la rotation actuelle du capteur inertiel à une valeur spécifiée.

La rotation correspond à l’angle de rotation du capteur. Contrairement au cap, la rotation peut dépasser 359,99 degrés ou être inférieure à 0 degré.

Available Functions
void setRotation( double        value,
                  rotationUnits units );

Parameters

Paramètre

Taper

Description

value

double

Valeur de rotation, en degrés, à définir pour le capteur. Il peut s’agir d’un entier ou d’un nombre décimal.

units

rotationUnits

Unité de rotation :

  • deg / degrees — degrés
  • turns / rev — tours

Return Values

Cette fonction ne renvoie aucune valeur.

Examples
// Turn the robot around
myInertial.setRotation(-180, degrees);
Drivetrain.turnToRotation(0, degrees);

calibrate#

Calibre le capteur inertiel.

L’étalonnage permet au capteur de mesurer correctement les virages. Veillez à ce que le capteur reste immobile pendant l’étalonnage. Si le capteur bouge pendant cette opération, les valeurs de cap, de rotation, de vitesse radiale et d’orientation risquent d’être erronées.

Available Functions
void calibrate( );

Parameters

Cette fonction n’accepte aucun paramètre.

Return Values

Cette fonction ne renvoie aucune valeur.

Notes
  • Le capteur doit rester immobile pendant l’étalonnage.

  • Utilisez isCalibrating pour déterminer quand l’étalonnage est terminé.

resetHeading#

Réinitialise le cap actuel du capteur inertiel à 0 degré.

Une fois cette fonction utilisée, la direction actuelle du capteur devient le nouveau cap à 0 degré.

Available Functions
void resetHeading();

Parameters

Cette fonction ne prend aucun paramètre.

Return Values

Cette fonction ne renvoie aucune valeur.

resetRotation#

Réinitialise la rotation actuelle du capteur inertiel à 0 degré.

Une fois cette fonction utilisée, le capteur suit les virages suivants à partir de la nouvelle valeur de rotation de 0 degré.

Available Functions
void resetRotation();

Parameters

Cette fonction ne prend aucun paramètre.

Return Values

Cette fonction ne renvoie aucune valeur.

isCalibrating#

Indique si le capteur inertiel est en cours d’étalonnage.

Available Functions
bool isCalibrating();

Parameters

Cette fonction ne prend aucun paramètre.

Return Values

Renvoie une valeur booléenne indiquant si le capteur inertiel est en cours d’étalonnage :

  • true — The sensor is currently calibrating.
  • false — The sensor is not currently calibrating.

changed#

Enregistre une fonction de rappel qui s’exécute lorsque la valeur de cap du capteur inertiel change.

Available Functions
void changed( void (* callback)(void) );

Parameters

Paramètre

Taper

Description

callback

void (*)(void)

Un pointeur vers une fonction qui sera appelée lorsque la valeur de l’en-tête change. La fonction ne doit prendre aucun paramètre et renvoyer void

Return Values

Cette fonction ne renvoie aucune valeur.

Examples

Définissez la fonction de rappel (en dehors de int main())

// Display the heading when the Inertial Sensor's heading value changes.
void onHeadingChanged() {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1, 1);
  Brain.Screen.print("Heading: %.2f", myInertial.heading());
}

Enregistrez le rappel à l’intérieur de int main()

int main() {
  // Run onHeadingChanged when the Inertial Sensor's heading value changes.
  myInertial.changed(onHeadingChanged);
}

installed#

Indique si le capteur inertiel est installé et connecté.

Available Functions
bool installed();

Parameters

Cette fonction ne prend aucun paramètre.

Return Values

Renvoie une valeur booléenne indiquant si le capteur inertiel est installé et connecté :

  • true — The sensor is connected and responding.
  • false — The sensor is not connected or not detected.

acceleration#

L’accélération correspond à la vitesse à laquelle le capteur accélère ou ralentit. Cette fonction renvoie l’accélération du capteur inertiel sur l’axe sélectionné, de -4,0 G à 4,0 G.

G est une unité de mesure de l’accélération. 1 G correspond approximativement à l’accélération due à la gravité que l’on ressent en position assise immobile. Sa valeur peut être positive ou négative selon le sens de l’accélération sur l’axe considéré.

Available Functions
double acceleration( axisType axis );

Parameters

Paramètre

Taper

Description

axis

axisType

Axe de mesure de l’accélération :

  • xaxis
  • yaxis
  • zaxis

Return Values

Renvoie un double double représentant l’accélération le long de l’axe spécifié en G (unités gravitationnelles).

Notes
  • Les valeurs d’accélération sont exprimées en unités de G.

gyroRate#

La fréquence du gyroscope correspond à la vitesse de rotation du capteur inertiel. Cette fonction renvoie la vitesse de rotation actuelle du capteur inertiel sur l’axe sélectionné.

La valeur peut être positive ou négative selon le sens de rotation du capteur sur cet axe.

Available Functions
double gyroRate( axisType      axis,
                 velocityUnits units );

Parameters

Paramètre

Taper

Description

axis

axisType

Axes permettant de renvoyer la vitesse du gyroscope :

  • xaxis
  • yaxis
  • zaxis

units

velocityUnits

Unité de vitesse du gyroscope :

  • dps — degrés par seconde
  • rpm — tours par minute

Return Values

Renvoie un double représentant la vitesse de rotation actuelle le long de l’axe spécifié dans les unités sélectionnées.

Examples
// Display the rate of change of rotation while turning in dps
Drivetrain.turn(right);
wait(1, seconds);

Brain.Screen.print(myInertial.gyroRate(zaxis, dps));

Drivetrain.stop();

orientation#

L’orientation correspond à l’angle actuel du capteur inertiel sur un axe de rotation sélectionné. Cette fonction renvoie l’orientation actuelle du capteur inertiel pour l’axe spécifié.

Le roulis, le tangage et le lacet décrivent différentes façons dont le capteur peut s’incliner ou tourner.

Available Functions
double orientation(
  orientationType type,
  rotationUnits   units );

Parameters

Paramètre

Taper

Description

type

orientationType

Angle d’orientation pour le retour :

  • pitch
  • roll
  • yaw

units

rotationUnits

The orientation unit:

  • deg / degrees — degrees
  • turns / rev — revolutions

Return Values

Renvoie un double double représentant l’angle d’orientation sélectionné dans les unités spécifiées.

Examples
while (true) {
  Brain.Screen.clearScreen();
  Brain.Screen.setCursor(1,1);
  // Show the Inertial Sensor's orientation value
  // for roll in degrees
  double orient = myInertial.orientation(roll, deg);
  Brain.Screen.print("%f", orient);
  wait(0.1, seconds);
}

collision#

Enregistre une fonction de rappel qui s’exécute lorsque le capteur inertiel détecte un impact ou une collision soudaine.

Available Functions
void collision( void (* callback)(axisType, double, double, double) );

Parameters

Paramètre

Taper

Description

callback

void (*)(axisType, double, double, double)

Un pointeur vers une fonction qui sera appelée lorsqu’une collision est détectée. La fonction de rappel doit accepter les paramètres suivants :

  • axisType — L’axe sur lequel la collision a été détectée.
  • Valeurs d’accélération au moment de l’impact, dans l’ordre :
    • double — Accélération le long de l’axe x (en G).
    • double — Accélération le long de l’axe y (en G).
    • double — Accélération le long de l’axe z (en G).
La fonction doit retourner void.

Return Values

Cette fonction ne renvoie aucune valeur.

Examples

Définissez la fonction de rappel (en dehors de int main())

// Display a message when the Inertial Sensor detects a collision.
void onCollision(axisType axis, double x, double y, double z) {
  Brain.Screen.print("Collision detected!");
}

Enregistrez le rappel à l’intérieur de int main()

int main() {
  // Run onCollision when the Inertial Sensor detects a collision.
  myInertial.collision(onCollision);
}

setTurnType#

Les ensembles qui inversent la direction renvoient des valeurs positives.

Available Functions
void setTurnType( turnType dir );

Parameters

Paramètre

Taper

Description

dir

turnType

La direction qui renvoie des valeurs positives :

  • right
  • left

Return Values

Cette fonction ne renvoie aucune valeur.

Notes

getTurnType#

Les retours qui inversent la direction produisent des valeurs positives.

Available Functions
turnType getTurnType();

Parameters

Cette fonction ne prend aucun paramètre.

Return Values

Renvoie un turnType ) indiquant la direction qui produit des valeurs positives :

  • right — Clockwise rotation returns positive values.
  • left — Counterclockwise rotation returns positive values.
Notes