imu — IMU-Sensor

Das Modul imu wird zum Auslesen des IMU-Sensors unter dem Kamerasensor verwendet.

Bemerkung

Der IMU-Sensor (und dieses Modul) ist nicht auf allen OpenMV-Cam-Modellen vorhanden.

Wenn das Kameraboard mit der Vorderseite nach oben auf einem Tisch liegt:

  • X zeigt nach rechts vom Kamerasensor.

  • Y zeigt nach unten unterhalb des Kamerasensors (zum unteren Rand des Boards).

  • Z zeigt in die entgegengesetzte Richtung des Kamerasensors (in den Tisch).

Beispielverwendung – den rohen Beschleunigungsmesser, das Gyroskop und die Temperatur abfragen:

import imu
import time

while True:
    ax, ay, az = imu.acceleration_mg()
    gx, gy, gz = imu.angular_rate_mdps()
    t = imu.temperature_c()
    print("accel (mg)  : {:8.1f} {:8.1f} {:8.1f}".format(ax, ay, az))
    print("gyro  (mdps): {:8.1f} {:8.1f} {:8.1f}".format(gx, gy, gz))
    print("temp  (degC): {:5.1f}".format(t))
    time.sleep_ms(200)

Beispielverwendung – erkennen, in welche Richtung die Kamera geneigt ist:

import imu
import time

while True:
    r = imu.roll()
    if abs(r - 90) < 15:
        print("camera rotated left")
    elif abs(r - 270) < 15:
        print("camera rotated right")
    elif abs(r - 180) < 15:
        print("camera upside down")
    else:
        print("camera upright")
    time.sleep_ms(100)

Funktionen

imu.acceleration_mg() Tuple[float, float, float]

Gibt die Beschleunigung für (x, y, z) als Float-Tupel in Milli-g zurück.

imu.angular_rate_mdps() Tuple[float, float, float]

Gibt die Winkelgeschwindigkeit für (x, y, z) als Float-Tupel in Milligrad pro Sekunde zurück.

imu.temperature_c() float

Gibt die Temperatur des IMU-Sensors in Grad Celsius zurück.

imu.roll() float

Gibt den Rollwinkel des Kameramoduls in Grad zurück.

  • 0 -> Kamera steht aufrecht.

  • 90 -> Kamera ist nach links gedreht.

  • 180 -> Kamera steht auf dem Kopf.

  • 270 -> Kamera ist nach rechts gedreht.

imu.pitch() float

Gibt den Nickwinkel des Kameramoduls in Grad zurück.

  • 0 -> Kamera steht aufrecht.

  • 90 -> Kamera zeigt nach unten.

  • 180 -> Kamera steht auf dem Kopf.

  • 270 -> Kamera zeigt nach oben.

imu.sleep(enable: bool) None

enable auf True gesetzt versetzt den IMU-Sensor in den Schlafmodus. False weckt ihn wieder auf (Standard).

imu.__write_reg(addr: int, val: int) None

Setzt das IMU-Register an addr auf val.

imu.__read_reg(addr: int) int

Gibt den Wert des IMU-Registers an addr zurück.