LBotics.at

Hinweise für die mündliche Prüfung

Erklärungen anhand von grafischen Darstellungen und einem Codebeispiel

Wofür steht die Abkürzung IMU und wozu dient ein solcher Sensor?

Mit einem IMU-Sensor (Inertial Measurement Unit) ist es zum Beispiel möglich die Lage eines Roboters im Raum zu bestimmen. Auch kann man damit auf Lageänderungen des Sensors im Raum reagieren, wie dies zum Beispiel bei der Stabilisierung oder Bewegung von Drohnen zum Einsatz kommt.

Wie heißen die drei Achsen um welche Drehungen von einem IMU-Sensor dedektiert werden können?

Hochachse, Querachse und Längsachse

Wie heißen die Bewegungen um die drei Raumachsen?
  • Drehung um die Hochachse: yaw
  • Drehung um die Querachse: pitch
  • Drehung um die Längsachse: roll
Mit welchen Funktionen können die aktuellen Drehwinkel des IMU-Sensors auf dem verwendeten Roboters ermittelt werden und in welchen Wertebereichen liegen diese?
mBot2
cyberpi.get_yaw() +180 .. 0 .. -180
cyberpi.get_pitch() +90 .. 0 ..  -90
cyberpi.get_roll() +180 .. 0 .. -180
KeplerBRAIN V4
READ_I2C_BNO055_YAW() 0 .. 359
READ_I2C_BNO055_PITCH() -179 .. 0 .. 179
READ_I2C_BNO055_ROLL() -179 .. 0 .. 179
Zeige anhand eines Codebeispiels eine Drehung des Roboter um exakt 90° ausgehend vom aktuell gemessenen Winkel!

Zunächst wird beim Start des Skripts / Programms der Yaw-Wert in der Variable yawStartWert abgelegt und die Motorgeschwindigkeiten werden so gesetzt, dass sich der Roboter dreht.

Innerhalb einer Endlosschleife wird der aktuell gemessene Yaw-Wert in der Variable yawAktuellWert abgelegt. In einer if-Abfrage wird überprüft, ob der aktuelle Yaw-Wert größer als Startwert + 90° ist. Wenn diese Bedingung erfüllt ist, dann ist die Drehung um 90° beendet und die Motoren werden angehalten.

#import cyberpi, mbot2

yawStartWert = cyberpi.get_yaw()

mbot2.EM_set_speed(20, 1)
mbot2.EM_set_speed(20, 1)

while True:
    yawAktuellWert = cyberpi.get_yaw()
    if yawAktuellWert > yawWert + yawStartWert:
        mbot2.EM_stop()