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 |
|---|---|---|
|
|
Facultatif. La direction qui renvoie 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 Functionsdouble heading( rotationUnits units = degrees );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Unité de direction :
|
Renvoie un double double représentant le cap actuel du capteur dans les unités spécifiées.
La valeur du cap est comprise entre 0 et 359,99 degrés. Utilisez
rotationpour accéder à la valeur de rotation continue.
// 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 Functionsdouble rotation( rotationUnits units = degrees );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Unité de rotation :
|
Renvoie un double double représentant la rotation actuelle dans les unités spécifiées.
La valeur de rotation est continue et ne comporte pas de retour à la ligne entre 0 et 359,99 degrés. Utilisez
headingpour accéder à la valeur de cap après retour à la ligne.
// 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 Functionsvoid setHeading( double value,
rotationUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Valeur du cap, en degrés, à définir pour le capteur. Cette valeur peut être comprise entre 0 et 359,99. |
|
|
Unité de direction :
|
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 Functionsvoid setRotation( double value,
rotationUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Valeur de rotation, en degrés, à définir pour le capteur. Il peut s’agir d’un entier ou d’un nombre décimal. |
|
|
Unité de rotation :
|
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 Functionsvoid calibrate( );
Cette fonction n’accepte aucun paramètre.
Return ValuesCette fonction ne renvoie aucune valeur.
NotesLe capteur doit rester immobile pendant l’étalonnage.
Utilisez
isCalibratingpour 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 Functionsvoid resetHeading();
Cette fonction ne prend aucun paramètre.
Return ValuesCette 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 Functionsvoid resetRotation();
Cette fonction ne prend aucun paramètre.
Return ValuesCette fonction ne renvoie aucune valeur.
isCalibrating#
Indique si le capteur inertiel est en cours d’étalonnage.
Available Functionsbool isCalibrating();
Cette fonction ne prend aucun paramètre.
Return ValuesRenvoie 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 Functionsvoid changed( void (* callback)(void) );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
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 |
Cette fonction ne renvoie aucune valeur.
ExamplesDé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 Functionsbool installed();
Cette fonction ne prend aucun paramètre.
Return ValuesRenvoie 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é.
double acceleration( axisType axis );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Axe de mesure de l’accélération :
|
Renvoie un double double représentant l’accélération le long de l’axe spécifié en G (unités gravitationnelles).
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 Functionsdouble gyroRate( axisType axis,
velocityUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Axes permettant de renvoyer la vitesse du gyroscope :
|
|
|
Unité de vitesse du gyroscope :
|
Renvoie un double représentant la vitesse de rotation actuelle le long de l’axe spécifié dans les unités sélectionnées.
// 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 Functionsdouble orientation(
orientationType type,
rotationUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Angle d’orientation pour le retour :
|
|
|
The orientation unit:
|
Renvoie un double double représentant l’angle d’orientation sélectionné dans les unités spécifiées.
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 Functionsvoid collision( void (* callback)(axisType, double, double, double) );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
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 :
void. |
Cette fonction ne renvoie aucune valeur.
ExamplesDé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 Functionsvoid setTurnType( turnType dir );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
La direction qui renvoie des valeurs positives :
|
Cette fonction ne renvoie aucune valeur.
NotesCe paramètre affecte la façon dont
headingetrotationsignalent les valeurs positives et négatives.L’appel de cette fonction remplace la valeur
dirspécifiée lors de la construction de l’objet inertielinertial.
getTurnType#
Les retours qui inversent la direction produisent des valeurs positives.
Available FunctionsturnType getTurnType();
Cette fonction ne prend aucun paramètre.
Return ValuesRenvoie un turnType ) indiquant la direction qui produit des valeurs positives :
-
right— Clockwise rotation returns positive values. -
left— Counterclockwise rotation returns positive values.
Cette valeur est définie lors de la construction de l’objet inertiel
inertialou en appelantsetTurnType.