imu — sensor imu

El módulo imu se usa para leer el sensor IMU situado bajo el sensor de la cámara.

Nota

El sensor IMU (y este módulo) no está presente en todos los modelos de OpenMV Cam.

Para cuando la placa de la cámara está apoyada sobre una mesa con la cara hacia arriba:

  • X apunta hacia la derecha del sensor de la cámara.

  • Y apunta hacia abajo del sensor de la cámara (hacia la parte inferior de la placa).

  • Z apunta en la dirección opuesta al sensor de la cámara (hacia el interior de la mesa).

Ejemplo de uso – sondear el acelerómetro, el giroscopio y la temperatura en bruto:

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)

Ejemplo de uso – detectar hacia qué lado está inclinada la cámara:

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)

Funciones

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

Devuelve la aceleración para (x, y, z) como una tupla de floats en mili-g.

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

Devuelve la velocidad angular para (x, y, z) como una tupla de floats en mili-grados por segundo.

imu.temperature_c() float

Devuelve la temperatura del sensor IMU en grados Celsius.

imu.roll() float

Devuelve el ángulo de alabeo (roll) del módulo de la cámara en grados.

  • 0 -> La cámara está de pie.

  • 90 -> La cámara está girada hacia la izquierda.

  • 180 -> La cámara está boca abajo.

  • 270 -> La cámara está girada hacia la derecha.

imu.pitch() float

Devuelve el ángulo de cabeceo (pitch) del módulo de la cámara en grados.

  • 0 -> La cámara está de pie.

  • 90 -> La cámara está apuntando hacia abajo.

  • 180 -> La cámara está boca abajo.

  • 270 -> La cámara está apuntando hacia arriba.

imu.sleep(enable: bool) None

enable establecido en True pone el sensor IMU en reposo. False lo despierta de nuevo (el valor por defecto).

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

Establece el registro IMU en addr con el valor val.

imu.__read_reg(addr: int) int

Devuelve el valor del registro IMU en addr.