Trägheit#
Einführung#
Der IQ (2. Generation) Gehirn verfügt über einen eingebauten Inertialsensor. Dieser Sensor misst die Bewegungen und Drehungen des Gehirns.
Der Inertialsensor nutzt dafür zwei Komponenten. Das Gyroskop misst Drehbewegungen wie Kurs, Rotation, Kreiselrate und Orientierung. Der Beschleunigungsmesser misst Bewegungsänderungen wie Beschleunigung oder Verlangsamung entlang der x-, y- und z-Achse.
Diese Seite verwendet brain_inertial als Beispielnamen für den Inertialsensor. Ersetzen Sie diesen bei Bedarf durch Ihren eigenen Namen.
Nachfolgend finden Sie eine Liste aller verfügbaren Methoden:
Ausrichtung – Kurs, Drehung und Sensorkalibrierung ablesen und steuern.
heading— Gibt die Richtung zurück, in die der Sensor zeigt, von 0 bis 359,99 Grad.rotation— Gibt zurück, wie weit sich der Sensor gedreht hat.calibrate— Kalibriert den Inertialsensor.set_heading— Setzt den aktuellen Kurs des Inertialsensors auf einen neuen Kurswert.set_rotation— Setzt die aktuelle Rotation des Inertialsensors auf einen neuen Rotationswert.is_calibrating— Gibt zurück, ob der Inertialsensor gerade kalibriert wird.reset_heading— Setzt die aktuelle Richtung des Inertialsensors auf 0 Grad zurück.reset_rotation— Setzt die aktuelle Rotation des Inertialsensors auf 0 Grad zurück.changed— Registriert eine Funktion, die ausgeführt wird, wenn sich die Richtung des Inertialsensors ändert.
Bewegung – Beschleunigung, Rotationsgeschwindigkeit und Neigung messen.
acceleration— Gibt zurück, wie schnell der Sensor auf der ausgewählten Achse beschleunigt oder abbremst.gyro_rate— Gibt zurück, wie schnell sich der Sensor um die ausgewählte Achse dreht.orientation— Gibt den Roll-, Nick- oder Gierwinkel des Inertialsensors zurück.
Konstruktoren – Manuelle Initialisierung und Konfiguration eines Inertialsensors.
Inertial— Erzeugt einen Inertialsensor.
Orientierung#
heading#
Die Richtung, in die der Sensor zeigt, wird in Grad von 0 bis 359,99 gemessen. heading gibt die aktuelle Richtung des Sensors zurück.
Der Ausgangskurs beträgt 0 Grad. Wenn der Sensor über 359,99 Grad hinaus dreht, springt der Kurs wieder auf 0 Grad zurück.
Usage:
brain_inertial.heading(units)
Parameter |
Beschreibung |
|---|---|
|
Optional. Kurseinheit: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.heading())
rotation#
Die Rotation gibt an, um welchen Winkel sich der Sensor gedreht hat, gemessen in Grad. Im Gegensatz zur Ausrichtung kann die Rotation über 359,99 Grad steigen oder unter 0 Grad fallen. Zu Beginn eines Projekts ist der Rotationswert auf 0 Grad eingestellt. Der Befehl rotation gibt die aktuelle Rotation des Inertialsensors zurück.
Eine Rechtsdrehung erhöht die Rotation, eine Linksdrehung verringert sie. Beispielsweise ergibt eine zweifache Rechtsdrehung eine Rotation von 720 Grad. Eine volle Linksdrehung von 0 Grad aus ergibt eine Rotation von -360 Grad.
Usage:
brain_inertial.rotation(units)
Parameter |
Beschreibung |
|---|---|
|
Optional. Die Rotationseinheit: |
# Display the rotation value after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(brain_inertial.rotation())
calibrate#
calibrate den Inertialsensor. Alle nachfolgenden Zeilen warten auf den Abschluss der Kalibrierung, bevor sie ausgeführt werden. Die Kalibrierung hilft dem Sensor, Drehungen korrekt zu messen, indem sie Sensorauschen und -drift über einen festgelegten Zeitraum misst und kompensiert. Während dieser Zeit muss das Brain auf einer stabilen Oberfläche absolut ruhig stehen. Bewegungen während der Kalibrierung können zu ungenauen Ergebnissen führen.
Das VEX Brain versucht automatisch, den integrierten Inertialsensor zu Beginn jedes Projekts zu kalibrieren. Wird der Roboter jedoch während des Projektstarts getragen oder bewegt, kann die Kalibrierung des Sensors fehlschlagen oder falsche Werte liefern.
Usage:
brain_inertial.calibrate()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# 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#
Die Richtung, in die der Sensor zeigt, wird in Grad von 0 bis 359,99 gemessen. set_heading() ändert die aktuelle Richtung des Inertialsensors auf einen neuen Richtungswert.
Wenn sich der Sensor beispielsweise nach rechts gedreht hat, wird durch Einstellen der Ausrichtung auf 0 Grad diese Ausrichtung nach rechts zum neuen 0-Grad-Wert. Anschließend kann der Sensor basierend auf dieser neuen Richtung andere Ausrichtungen verfolgen.
Usage:
brain_inertial.set_heading(value, units)
Parameter |
Beschreibung |
|---|---|
|
Der für den Sensor einzustellende Kurswert in Grad. Dieser Wert kann zwischen 0 und 359,99 liegen. |
|
Optional. Kurseinheit: |
# Turn the robot around
brain_inertial.set_heading(180)
drivetrain.turn_to_heading(0)
set_rotation#
Die Rotation gibt an, um welchen Winkel sich der Sensor gedreht hat, gemessen in Grad. Im Gegensatz zur Ausrichtung kann die Rotation über 359,99 Grad hinausgehen oder unter 0 Grad fallen. Zu Beginn eines Projekts ist der Rotationswert auf 0 Grad eingestellt. Der Befehl set_rotation() ändert die aktuelle Rotation des Inertialsensors auf einen neuen Wert.
Hat der Sensor beispielsweise zwei volle Umdrehungen nach rechts ausgeführt, beträgt sein Rotationswert 720 Grad. Durch Setzen der Rotation auf 0 Grad wird dieser Wert von 720 auf 0 Grad zurückgesetzt. Anschließend kann der Sensor Rotationen basierend auf diesem neuen Wert erfassen.
Usage:
brain_inertial.set_rotation(value, units)
Parameter |
Beschreibung |
|---|---|
|
Der für den Sensor einzustellende Rotationswert in Grad. Dies kann eine ganze Zahl oder eine Dezimalzahl (Gleitkommazahl) sein. |
|
Optional. Die Rotationseinheit: |
# Turn the robot around
brain_inertial.set_rotation(-180)
drivetrain.turn_to_rotation(0)
is_calibrating#
is_calibrating gibt an, ob der Inertialsensor gerade kalibriert wird.
True— Der Inertialsensor kalibriert.False— Der Inertialsensor kalibriert nicht.
Usage:
brain_inertial.is_calibrating()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# 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 setzt die aktuelle Richtung des Inertialsensors auf 0 Grad zurück.
Nach Anwendung dieser Methode entspricht die aktuelle Richtung des Sensors der neuen 0-Grad-Richtung.
Usage:
brain_inertial.reset_heading()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# 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 setzt die aktuelle Drehung des Inertialsensors auf 0 Grad zurück.
Nach Anwendung dieser Methode verfolgt der Sensor zukünftige Drehungen ausgehend vom neuen Rotationswert von 0 Grad.
Usage:
brain_inertial.reset_rotation()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# 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 registriert eine Funktion, die aufgerufen werden soll, wenn sich die Richtung des Inertialsensors ändert.
Usage:
brain_inertial.changed(callback, arg)
Parameter |
Beschreibung |
|---|---|
|
Eine Funktion, die ausgeführt wird, wenn sich die Ausrichtung des Trägheitssensors ändert. |
|
Optional. Ein Tupel von Argumenten, die an die Callback-Funktion übergeben werden sollen. |
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)
Bewegung#
acceleration#
Die Beschleunigung gibt an, wie schnell der Sensor beschleunigt oder abbremst. Der Wert acceleration liefert die Beschleunigung des Inertialsensors auf der ausgewählten Achse als Gleitkommazahl, von -4,0 G bis 4,0 G.
G die man im Ruhezustand durch die Schwerkraft spürt.
Der Wert kann positiv oder negativ sein, abhängig von der Richtung der Beschleunigung auf der ausgewählten Achse. Die Achsenoptionen sind XAXIS, YAXISund ZAXIS.
Usage:
brain_inertial.acceleration(axis)
Parameter |
Beschreibung |
|---|---|
Achse |
Die Achsen zur Beschleunigungsmessung:
|
# 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#
Die Gyro-Rate gibt an, wie schnell sich der Inertialsensor dreht. Der Wert gyro_rate (Gyro-Rate) liefert die aktuelle Rotationsgeschwindigkeit des Inertialsensors um die ausgewählte Achse.
Der Wert kann positiv oder negativ sein, je nachdem, in welche Richtung sich der Sensor um diese Achse dreht.
Usage:
brain_inertial.gyro_rate(axis, units)
Parameter |
Beschreibung |
|---|---|
|
Die Achse, von der die Gyro-Rate zurückgegeben werden soll:
|
|
Optional. Einheit der Kreiseldrehzahl:
|
# Display the z-axis gyro rate
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(brain_inertial.gyro_rate(ZAXIS, RPM))
drivetrain.stop()
orientation#
Die Orientierung gibt den aktuellen Winkel des Inertialsensors um eine ausgewählte Drehachse an. Werte von orientation liefern die Roll-, Nick- oder Gierbewegung des Inertialsensors.
Rollen, Nicken und Gieren beschreiben verschiedene Arten, wie sich der Sensor neigen oder drehen kann.
Usage:
brain_inertial.orientation(axis, units)
Parameter |
Beschreibung |
|---|---|
|
Der Orientierungswinkel für die Rückkehr:
|
|
Optional. Die Orientierungseinheit: |
# 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)
Konstruktoren#
Konstruktoren werden verwendet, um manuell Inertial Objekte zu erstellen, beispielsweise bei der Konfiguration eines Inertialsensors außerhalb von VEXcode.
Inertial#
Inertial erzeugt einen Inertialsensor.
Usage:
Inertial(smartport)
Parameter |
Beschreibung |
|---|---|
|
Optional. Bei Verwendung des im IQ (2. Generation) Brain integrierten Inertialsensors ist kein Smart Port erforderlich. Beim Anschluss eines externen Inertialsensors geben Sie den Smart Port an, an den der Inertialsensor angeschlossen wird (Format: |
# 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)


