Trägheit#
Einführung#
Ein Inertialsensor misst die Bewegungen und Drehungen des Roboters.
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.
Damit Inertialbefehle in VEXcode V5 angezeigt werden, muss im Gerätefenster ein Inertialsensor konfiguriert werden.
Nachfolgend finden Sie eine Liste der 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.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.set_heading— Setzt den aktuellen Kurs des Inertialsensors auf einen neuen Kurswert.set_rotation— Setzt die aktuelle Rotation des Inertialsensors auf einen neuen Rotationswert.calibrate— Kalibriert den Inertialsensor.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.is_calibrating— Gibt zurück, ob der Inertialsensor gerade kalibriert wird.changed— Registriert eine Funktion, die ausgeführt wird, wenn sich der Wert des Inertialsensors ändert.installed— Prüft, ob der Inertialsensor installiert ist.
Bewegung – Messung von Beschleunigung, Kollisionen und Drehrichtungsverhalten.
acceleration— Gibt zurück, wie schnell der Sensor auf der ausgewählten Achse beschleunigt oder abbremst.collision— Registriert eine Funktion, die ausgeführt werden soll, wenn der Inertialsensor eine Kollision erkennt.set_turn_type— Legt fest, welche Drehrichtung positive Kurswerte zurückgibt.get_turn_type— Gibt zurück, welche Drehrichtung positive Kurswerte liefert.
Konstrukteur
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 als Gleitkommazahl 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:
inertial_1.heading(units)
Parameter |
Beschreibung |
|---|---|
|
Optional. Kurseinheit: |
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.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 gesetzt. Der Befehl rotation gibt die aktuelle Rotation des Inertialsensors als Gleitkommazahl 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:
inertial_1.rotation(units)
Parameter |
Beschreibung |
|---|---|
|
Optional. Die Rotationseinheit: |
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print(inertial_1.rotation())
gyro_rate#
Die Gyro-Rate gibt an, wie schnell sich der Inertialsensor dreht. Der Wert gyro_rate liefert die aktuelle Rotationsgeschwindigkeit des Inertialsensors um die ausgewählte Achse als Gleitkommazahl.
Der Wert kann positiv oder negativ sein, je nachdem, in welche Richtung sich der Sensor um diese Achse dreht.
Usage:
inertial_1.gyro_rate(axis, units)
Parameter |
Beschreibung |
|---|---|
|
Die Achse, von der die Gyro-Rate zurückgegeben werden soll:
|
|
Optional. Gyro-Rate-Einheit:
|
# Display the rate of change of
# rotation while turning
drivetrain.turn(RIGHT)
wait(1, SECONDS)
brain.screen.print(inertial_1.gyro_rate(AxisType.ZAXIS, VelocityUnits.DPS))
drivetrain.stop()
orientation#
Die Orientierung gibt den aktuellen Winkel des Inertialsensors um eine ausgewählte Drehachse an. Der Wert orientation liefert den Roll-, Nick- oder Gierwinkel des Inertialsensors im Bereich von -180,00 bis 180,00 Grad als Gleitkommazahl.
Rollen, Nicken und Gieren beschreiben verschiedene Arten, wie sich der Sensor neigen oder drehen kann.
Usage:
inertial_1.orientation(type, units)
Parameter |
Beschreibung |
|---|---|
|
Der zurückzukehrende Orientierungswinkel:
|
|
Optional. 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(inertial_1.orientation(AxisType.ROLL, DEGREES))
brain.screen.next_row()
brain.screen.print(inertial_1.orientation(AxisType.PITCH, DEGREES))
brain.screen.next_row()
brain.screen.print(inertial_1.orientation(AxisType.YAW, DEGREES))
brain.screen.next_row()
brain.screen.set_cursor(1, 1)
wait(0.1, SECONDS)
set_heading#
Die Richtung, in die der Sensor zeigt, wird in Grad von 0 bis 359,99 gemessen. Mit dem Befehl set_heading wird die aktuelle Richtung des Inertialsensors auf einen neuen Richtungswert geändert.
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:
inertial_1.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
inertial_1.set_heading(180, DEGREES)
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:
inertial_1.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
inertial_1.set_rotation(-180, DEGREES)
drivetrain.turn_to_rotation(0)
calibrate#
calibrate kalibriert den Inertialsensor.
Die Kalibrierung hilft dem Sensor, Drehungen korrekt zu messen. Halten Sie den Sensor während der Kalibrierung ruhig. Bewegt sich der Sensor während der Kalibrierung, werden Kurs, Rotation, Kreiselrate und Orientierung möglicherweise nicht korrekt gemessen.
Das Projekt wartet, bis die Kalibrierung abgeschlossen ist, bevor die nächste Codezeile ausgeführt wird.
Usage:
inertial_1.calibrate()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
# Start calibration.
inertial_1.calibrate()
# Print that the Inertial Sensor is calibrating while
# waiting for it to finish calibrating.
while inertial_1.is_calibrating():
brain.screen.clear()
brain.screen.print("Inertial Sensor Calibrating")
wait(50, MSEC)
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:
inertial_1.reset_heading()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
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:
inertial_1.reset_rotation()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
is_calibrating#
is_calibrating gibt an, ob der Inertialsensor gerade kalibriert wird.
True— Der Inertialsensor kalibriert.False— Der Inertialsensor kalibriert nicht.
Usage:
inertial_1.is_calibrating()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
changed#
changed registriert eine Funktion, die aufgerufen werden soll, sobald sich der Wert des Inertialsensors ändert.
Usage:
inertial_1.changed(callback, arg)
Parameter |
Beschreibung |
|---|---|
|
Eine zuvor definierte Funktion, die ausgeführt wird, wenn sich der Wert des Inertialsensors ändert. |
|
Optional. Ein Tupel mit Argumenten, die an die Callback-Funktion übergeben werden sollen. Weitere Informationen finden Sie unter Verwendung von Funktionen mit Parametern. |
def my_function():
brain.screen.print("Value changed!!")
# Call my_function whenever inertial_1's value changes
inertial_1.changed(my_function)
installed#
installed prüft, ob der Inertialsensor installiert ist.
True— Der Inertialsensor ist installiert.False— Der Inertialsensor ist nicht installiert.
Usage:
inertial_1.installed()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
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 AxisType.XAXIS, AxisType.YAXISund AxisType.ZAXIS.
Usage:
inertial_1.acceleration(type)
Parameter |
Beschreibung |
|---|---|
|
Die Achsen, auf denen die Beschleunigung gemessen werden soll:
|
# Return the acceleration for the Z axis of the Inertial Sensor
zaccel = inertial_1.acceleration(AxisType.ZAXIS)
collision#
collision registriert eine Funktion, die aufgerufen wird, sobald der Inertialsensor einen plötzlichen Aufprall oder eine Kollision erkennt.
Usage:
inertial_1.collision(callback, arg)
Parameter |
Beschreibung |
|---|---|
|
Eine zuvor definierte Funktion, die ausgeführt wird, wenn eine Kollision erkannt wird. |
|
Optional. Ein Tupel mit Argumenten, die an die Callback-Funktion übergeben werden sollen. Weitere Informationen finden Sie unter Verwendung von Funktionen mit Parametern. |
def my_function():
brain.screen.print("Collision!")
# Call my_function whenever a collision is detected
inertial_1.collision(my_function)
set_turn_type#
set_turn_type legt fest, welche Drehrichtung positive Kurswerte zurückgibt.
Usage:
inertial_1.set_turn_type(turntype)
Parameter |
Beschreibung |
|---|---|
|
Die einzustellende Drehrichtung:
|
get_turn_type#
get_turn_type gibt zurück, welche Drehrichtung positive Kurswerte liefert.
LEFT— Linkskurven liefern positive Richtungswerte.RIGHT— Rechtskurven liefern positive Kurswerte.
Usage:
inertial_1.get_turn_type()
Parameter |
Beschreibung |
|---|---|
Diese Methode hat keine Parameter. |
Konstruktoren#
Inertial#
Inertial erzeugt einen Inertialsensor.
Usage:
Inertial(port)
Parameter |
Beschreibung |
|---|---|
|
Der Smart Port, an den der Inertialsensor angeschlossen ist, von 1 bis 21. |
# Create a new object "inertial_1" with the Inertial class.
inertial_1 = Inertial(Ports.PORT1)