imu — capteur imu

Le module imu sert à lire le capteur IMU situé sous le capteur de la caméra.

Note

Le capteur IMU (et ce module) n’est pas présent sur tous les modèles d’OpenMV Cam.

Pour le cas où la carte de la caméra est posée à plat sur une table, face vers le haut :

  • X pointe vers la droite du capteur de la caméra.

  • Y pointe vers le bas, sous le capteur de la caméra (vers le bas de la carte).

  • Z pointe dans la direction opposée au capteur de la caméra (vers l’intérieur de la table).

Exemple d’utilisation – interroger l’accéléromètre, le gyroscope et la température bruts

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)

Exemple d’utilisation – détecter dans quel sens la caméra est inclinée

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)

Fonctions

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

Renvoie l’accélération pour (x, y, z) sous forme de tuple de flottants en milli-g.

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

Renvoie la vitesse angulaire pour (x, y, z) sous forme de tuple de flottants en milli-degrés par seconde.

imu.temperature_c() float

Renvoie la température du capteur IMU en degrés Celsius.

imu.roll() float

Renvoie l’angle de roulis du module caméra en degrés.

  • 0 -> La caméra est debout.

  • 90 -> La caméra est tournée vers la gauche.

  • 180 -> La caméra est à l’envers.

  • 270 -> La caméra est tournée vers la droite.

imu.pitch() float

Renvoie l’angle de tangage du module caméra en degrés.

  • 0 -> La caméra est debout.

  • 90 -> La caméra pointe vers le bas.

  • 180 -> La caméra est à l’envers.

  • 270 -> La caméra pointe vers le haut.

imu.sleep(enable: bool) None

enable réglé sur True met le capteur IMU en veille. False le réveille (la valeur par défaut).

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

Définit le registre IMU situé à addr à la valeur val.

imu.__read_reg(addr: int) int

Renvoie la valeur du registre IMU situé à addr.