imu — senzor imu

Modulul imu este folosit pentru citirea senzorului IMU aflat sub senzorul camerei.

Notă

Senzorul IMU (și acest modul) nu este prezent pe toate modelele de OpenMV Cam.

Pentru cazul în care placa camerei este așezată pe o masă cu fața în sus:

  • X indică spre dreapta senzorului camerei.

  • Y indică în jos, sub senzorul camerei (spre partea de jos a plăcii).

  • Z indică în direcția opusă senzorului camerei (în masă).

Exemplu de utilizare – citirea valorilor brute ale accelerometrului, giroscopului și temperaturii:

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)

Exemplu de utilizare – detectarea direcției în care este înclinată camera:

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)

Funcții

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

Returnează accelerația pentru (x, y, z) ca tuplu de valori float în milli-g.

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

Returnează viteza unghiulară pentru (x, y, z) ca tuplu de valori float în mili-grade-pe-secundă.

imu.temperature_c() float

Returnează temperatura senzorului IMU în grade Celsius.

imu.roll() float

Returnează unghiul de ruliu (roll) al modulului camerei în grade.

  • 0 -> Camera stă în picioare.

  • 90 -> Camera este rotită spre stânga.

  • 180 -> Camera este cu susul în jos.

  • 270 -> Camera este rotită spre dreapta.

imu.pitch() float

Returnează unghiul de tangaj (pitch) al modulului camerei în grade.

  • 0 -> Camera stă în picioare.

  • 90 -> Camera este îndreptată în jos.

  • 180 -> Camera este cu susul în jos.

  • 270 -> Camera este îndreptată în sus.

imu.sleep(enable: bool) None

enable setat la True pune senzorul IMU în repaus. False îl trezește înapoi (valoarea implicită).

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

Setează registrul IMU de la addr la val.

imu.__read_reg(addr: int) int

Returnează valoarea registrului IMU de la addr.