Inertiel#
Introduction#
Le IQ (2e génération) Cerveau comprend un capteur inertiel intégré. 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.
Cette page utilise brain_inertial comme exemple de nom de capteur inertiel. Remplacez-le par le nom que vous avez configuré, selon vos besoins.
Vous trouverez ci-dessous la liste de toutes les méthodes disponibles :
Orientation — Lire et contrôler le cap, la rotation et l’étalonnage des capteurs.
heading— Renvoie la direction vers laquelle le capteur est orienté, de 0 à 359,99 degrés.rotation— Renvoie la distance de rotation du capteur.calibrate— Calibre le capteur inertiel.set_heading— Définit le cap actuel du capteur inertiel sur une nouvelle valeur de cap.set_rotation— Définit la rotation actuelle du capteur inertiel sur une nouvelle valeur de rotation.is_calibrating— Renvoie si le capteur inertiel est actuellement en cours d’étalonnage.reset_heading— Réinitialise le cap actuel du capteur inertiel à 0 degré.reset_rotation— Réinitialise la rotation actuelle du capteur inertiel à 0 degré.changed— Enregistre une fonction à exécuter lorsque le cap du capteur inertiel change.
Mouvement — Mesure de l’accélération, de la vitesse de rotation et de l’inclinaison.
acceleration— Renvoie la vitesse à laquelle le capteur accélère ou ralentit sur l’axe sélectionné.gyro_rate— 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.
Constructeurs — Initialisez et configurez manuellement un capteur inertiel.
Inertial— Crée un capteur inertiel.
Orientation#
heading#
Le cap est la direction vers laquelle le capteur est orienté, mesurée en degrés de 0 à 359,99. heading 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é.
Usage:
brain_inertial.heading(units)
Paramètres |
Description |
|---|---|
|
Optionnel. Unité de cap : |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
La rotation correspond à l’angle de rotation du capteur, mesuré en degrés. Contrairement au cap, la rotation peut dépasser 359,99 degrés ou être inférieure à 0 degré. Au début d’un projet, la valeur de rotation est fixée à 0 degré. La commande rotation renvoie la rotation actuelle du capteur inertiel.
Tourner à droite augmente la rotation, et tourner à gauche la diminue. Par exemple, deux tours complets à droite correspondent à une rotation de 720 degrés. Un tour complet à gauche, à partir de 0 degré, correspond à une rotation de -360 degrés.
Usage:
brain_inertial.rotation(units)
Paramètres |
Description |
|---|---|
|
Optionnel. Unité de rotation : |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
La commande calibrate calibre le capteur inertiel. Toutes les commandes suivantes attendront la fin de la calibration avant de s’exécuter. La calibration permet au capteur de mesurer correctement les virages en mesurant et en compensant le bruit et la dérive du capteur sur une période spécifiée. Pendant cette période, le Brain doit rester parfaitement immobile sur une surface stable. Tout mouvement pendant la calibration peut entraîner des résultats inexacts.
Le VEX Brain tente automatiquement de calibrer le capteur inertiel intégré au début de chaque projet. Toutefois, si le robot est transporté ou déplacé lors du démarrage du projet, le capteur risque de ne pas se calibrer correctement ou de fournir un étalonnage incorrect.
Usage:
brain_inertial.calibrate()
Paramètre |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
# Start calibration
brain_inertial.calibrate()
# Print after calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
set_heading#
Le cap est la direction vers laquelle le capteur est orienté, mesurée en degrés de 0 à 359,99. set_heading() modifie le cap actuel du capteur inertiel à 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.
Usage:
brain_inertial.set_heading(value, units)
Paramètres |
Description |
|---|---|
|
Valeur du cap, en degrés, à définir pour le capteur. Cette valeur peut être comprise entre 0 et 359,99. |
|
Optionnel. Unité de cap : |
# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)
set_rotation#
La rotation correspond à l’angle de rotation du capteur, mesuré en degrés. Contrairement au cap, la rotation peut dépasser 359,99 degrés ou être inférieure à 0 degré. Au début d’un projet, la valeur de rotation est fixée à 0 degré. La fonction set_rotation() permet de modifier la rotation actuelle du capteur inertiel.
Par exemple, si le capteur a effectué deux tours complets vers la droite, sa valeur de rotation sera de 720 degrés. Régler la rotation à 0 degré la remettra à zéro. Le capteur pourra ensuite suivre les rotations en fonction de cette nouvelle valeur.
Usage:
brain_inertial.set_rotation(value, units)
Paramètres |
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 (flottant). |
|
Optionnel. Unité de rotation : |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
is_calibrating#
is_calibrating indique si le capteur inertiel est actuellement en cours d’étalonnage.
True— Le capteur inertiel est en cours d’étalonnage.False— Le capteur inertiel n’est pas en cours d’étalonnage.
Usage:
brain_inertial.is_calibrating()
Paramètre |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
# Start calibration
brain_inertial.calibrate()
# Print while waiting for calibration
while brain_inertial.is_calibrating():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Inertial Sensor")
brain.screen.next_row()
brain.screen.print("Calibrating")
wait(50, MSEC)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
reset_heading#
reset_heading réinitialise le cap actuel du capteur inertiel à 0 degré.
Après utilisation de cette méthode, la direction actuelle du capteur devient le nouveau cap à 0 degré.
Usage:
brain_inertial.reset_heading()
Paramètres |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
# Turn the robot before and after resetting the heading
drivetrain.turn_to_heading(90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_heading()
drivetrain.turn_to_heading(90, DEGREES)
reset_rotation#
reset_rotation réinitialise la rotation actuelle du capteur inertiel à 0 degré.
Une fois cette méthode utilisée, le capteur suit les virages futurs à partir de la nouvelle valeur de rotation de 0 degré.
Usage:
brain_inertial.reset_rotation()
Paramètres |
Description |
|---|---|
Cette méthode ne comporte aucun paramètre. |
# Turn the robot before and after resetting the rotation
drivetrain.turn_to_rotation(-90, DEGREES)
wait(0.5, SECONDS)
brain_inertial.reset_rotation()
drivetrain.turn_to_rotation(-90, DEGREES)
changed#
changed enregistre une fonction à appeler lorsque le cap du capteur inertiel change.
Usage:
brain_inertial.changed(callback, arg)
Paramètres |
Description |
|---|---|
|
Une fonction qui s’exécute lorsque le cap du capteur inertiel change. |
|
Facultatif. Un tuple d’arguments à transmettre à la fonction de rappel. |
def heading_changed():
brain.screen.set_cursor(1, 1)
brain.screen.clear_screen()
brain.screen.print("my heading ")
brain.screen.next_row()
brain.screen.print("has changed!")
wait(0.1, SECONDS)
# Call the function when the inertial heading is changed
wait(1, SECONDS)
drivetrain.turn_for(RIGHT, 90, DEGREES, wait=False)
brain_inertial.changed(heading_changed)
wait(15, MSEC)
Mouvement#
acceleration#
L’accélération correspond à la vitesse à laquelle le capteur accélère ou ralentit. Une accélération acceleration renvoie l’accélération du capteur inertiel sur l’axe sélectionné, de -4,0 G à 4,0 G, sous forme de nombre flottant.
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.
La valeur peut être positive ou négative selon le sens de l’accélération sur l’axe sélectionné. Les options d’axe sont XAXIS(AXE Y), YAXIS(AXE Z) et ZAXIS (AXE Z).
Usage:
brain_inertial.acceleration(axis)
Paramètres |
Description |
|---|---|
axe |
Axe de mesure de l’accélération :
|
# Display acceleration after moving
vexcode_brain_precision = 2
drivetrain.set_drive_velocity(100, PERCENT)
brain.screen.print("Resting: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
brain.screen.next_row()
wait(1, SECONDS)
drivetrain.drive_for(FORWARD, 500, MM, wait=False)
wait(0.01, SECONDS)
brain.screen.print("Startup: ")
brain.screen.next_row()
brain.screen.print(brain_inertial.acceleration(XAXIS))
gyro_rate#
La fréquence du gyroscope correspond à la vitesse de rotation du capteur inertiel. La valeur gyro_rate 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.
Usage:
brain_inertial.gyro_rate(axis, units)
Paramètres |
Description |
|---|---|
|
Axes permettant de renvoyer la vitesse du gyroscope :
|
|
Optionnel. Unité de vitesse du gyroscope :
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
L’orientation correspond à l’angle actuel du capteur inertiel sur un axe de rotation sélectionné. orientation indique son roulis, son tangage ou son lacet.
Le roulis, le tangage et le lacet décrivent différentes façons dont le capteur peut s’incliner ou tourner.
Usage:
brain_inertial.orientation(axis, units)
Paramètres |
Description |
|---|---|
|
Angle d’orientation pour le retour :
|
|
Optionnel. Unité d’orientation : |
# Display the roll, pitch, and yaw of the Brain as it
# is rotated by hand
while True:
brain.screen.clear_screen()
brain.screen.print(brain_inertial.orientation(OrientationType.ROLL))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.PITCH))
brain.screen.next_row()
brain.screen.print(brain_inertial.orientation(OrientationType.YAW))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
Constructeurs#
Les constructeurs sont utilisés pour créer manuellement Inertial , par exemple lors de la configuration d’un capteur inertiel en dehors de VEXcode.
Inertial#
Inertial crée un capteur inertiel.
Usage:
Inertial(smartport)
Paramètre |
Description |
|---|---|
|
Facultatif. Si vous utilisez le capteur inertiel intégré IQ (2e génération) Brain’s, aucun port intelligent n’est nécessaire. Si vous connectez un capteur inertiel externe, spécifiez le port intelligent auquel il est connecté, sous la forme |
# Create a new object "brain_inertial" with the
# Inertial class
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)


