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, buf: bytearray | None = None) → int | None#

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

Wenn buf angegeben ist, wird stattdessen ein Burst-Lesevorgang ausgeführt: len(buf) Bytes werden ab addr in den beschreibbaren Puffer gelesen und None wird zurückgegeben. Verwenden Sie dies, um einen Block aufeinanderfolgender Register (zum Beispiel alle sechs Ausgabebytes des Beschleunigungssensors) in einer einzigen Bus-Transaktion zu lesen.