imu — sensore imu

Il modulo imu è usato per leggere il sensore IMU situato sotto il sensore della camera.

Nota

Il sensore IMU (e questo modulo) non è presente su tutti i modelli di OpenMV Cam.

Per quando la scheda della camera è appoggiata su un tavolo rivolta verso l’alto:

  • X punta verso destra rispetto al sensore della camera.

  • Y punta verso il basso sotto il sensore della camera (verso la parte inferiore della scheda).

  • Z punta nella direzione opposta a quella del sensore della camera (verso il tavolo).

Esempio di utilizzo – interroga i valori raw di accelerometro, giroscopio e temperatura:

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)

Esempio di utilizzo – rileva in che direzione è inclinata la 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)

Funzioni

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

Restituisce l’accelerazione per (x, y, z) come tupla di float in milli-g.

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

Restituisce la velocità angolare per (x, y, z) come tupla di float in milli-gradi-al-secondo.

imu.temperature_c() float

Restituisce la temperatura del sensore IMU in gradi Celsius.

imu.roll() float

Restituisce l’angolo di rollio del modulo della camera in gradi.

  • 0 -> La camera è in piedi.

  • 90 -> La camera è ruotata a sinistra.

  • 180 -> La camera è capovolta.

  • 270 -> La camera è ruotata a destra.

imu.pitch() float

Restituisce l’angolo di beccheggio del modulo della camera in gradi.

  • 0 -> La camera è in piedi.

  • 90 -> La camera punta verso il basso.

  • 180 -> La camera è capovolta.

  • 270 -> La camera punta verso l’alto.

imu.sleep(enable: bool) None

enable impostato su True mette il sensore IMU in stato di sospensione. False lo risveglia (impostazione predefinita).

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

Imposta il registro IMU all’indirizzo addr su val.

imu.__read_reg(addr: int) int

Restituisce il valore del registro IMU all’indirizzo addr.