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

units

Optionnel. Unité de cap : DEGREES (par défaut) ou TURNS

# 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

units

Optionnel. Unité de rotation : DEGREES (par défaut) ou TURNS

# 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 cerveau IQ, avec l'écran incliné vers la droite, les axes x, y et z étant représentés par des flèches partant du centre de l'écran et s'étendant vers l'extérieur. Une flèche rouge portant la mention x pointe vers la droite, une flèche verte portant la mention y s'étend vers l'avant et une flèche bleue portant la mention z pointe vers le bas.La même image que la précédente, cette fois avec l'écran cérébral incliné vers la gauche, et les flèches x, y, z conservant leur orientation.La même image que la précédente, mais avec l'écran cérébral orienté vers le haut, comme s'il était posé à plat sur une surface. L'orientation selon les axes x, y, z reste inchangée.

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

value

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

units

Optionnel. Unité de cap : DEGREES (par défaut) ou TURNS

# 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

value

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).

units

Optionnel. Unité de rotation : DEGREES (par défaut) ou TURNS

# 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

callback

Une fonction qui s’exécute lorsque le cap du capteur inertiel change.

arg

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 :

  • XAXIS
  • YAXIS
  • ZAXIS

# 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

axis

Axes permettant de renvoyer la vitesse du gyroscope :

  • XAXIS
  • YAXIS
  • ZAXIS

units

Optionnel. Unité de vitesse du gyroscope :

  • DPS (par défaut) — degrés par seconde
  • RPM — rotations par minute
  • PERCENT

# 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

axis

Angle d’orientation pour le retour :

  • ROLL
  • PITCH
  • YAW

units

Optionnel. Unité d’orientation : DEGREES (par défaut) ou TURNS

# 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

smartport

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 PORTx, où x correspond au numéro du port.

# 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)