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

units

Optional. Kurseinheit: DEGREES (Standard) oder TURNS

# 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

units

Optional. Die Rotationseinheit: DEGREES (Standard) oder TURNS

# 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 IQ Brain-Display ist nach rechts geneigt. Die x-, y- und z-Achse werden durch Pfeile dargestellt, die vom Bildschirmmittelpunkt nach außen verlaufen. Ein roter Pfeil mit der Bezeichnung x zeigt nach rechts, ein grüner Pfeil mit der Bezeichnung y nach vorn und ein blauer Pfeil mit der Bezeichnung z nach unten.Das gleiche Bild wie das vorherige, nur dass der Bildschirm des Gehirns nach links geneigt ist und die x-, y- und z-Pfeile ihre Ausrichtung beibehalten.Das gleiche Bild wie zuvor, nur dass der Bildschirm des Gehirns nach oben zeigt, als läge er flach auf einer Oberfläche. Die x-, y- und z-Orientierung ist dieselbe.

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

value

Der für den Sensor einzustellende Kurswert in Grad. Dieser Wert kann zwischen 0 und 359,99 liegen.

units

Optional. Kurseinheit: DEGREES (Standard) oder TURNS

# 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

value

Der für den Sensor einzustellende Rotationswert in Grad. Dies kann eine ganze Zahl oder eine Dezimalzahl (Gleitkommazahl) sein.

units

Optional. Die Rotationseinheit: DEGREES (Standard) oder TURNS

# 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

callback

Eine Funktion, die ausgeführt wird, wenn sich die Ausrichtung des Trägheitssensors ändert.

arg

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:

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

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

axis

Die Achse, von der die Gyro-Rate zurückgegeben werden soll:

  • XAXIS
  • YAXIS
  • ZAXIS

units

Optional. Einheit der Kreiseldrehzahl:

  • DPS (Standard) — Grad pro Sekunde
  • RPM — Umdrehungen pro 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#

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

axis

Der Orientierungswinkel für die Rückkehr:

  • ROLL
  • PITCH
  • YAW

units

Optional. Die Orientierungseinheit: DEGREES (Standard) oder 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)

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

smartport

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: PORTx, wobei x die Portnummer ist).

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