imu — sensor imu

O módulo imu é utilizado para ler o sensor IMU situado por baixo do sensor da câmara.

Nota

O sensor IMU (e este módulo) não está presente em todos os modelos de OpenMV Cam.

Quando a placa da câmara está pousada sobre uma mesa com a face voltada para cima:

  • X aponta para a direita do sensor da câmara.

  • Y aponta para baixo, por baixo do sensor da câmara (em direção à parte inferior da placa).

  • Z aponta na direção inversa ao sensor da câmara (em direção à mesa).

Exemplo de utilização – consultar o acelerómetro, giroscópio e temperatura em 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)

Exemplo de utilização – detetar a inclinação da 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)

Funções

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

Devolve a aceleração de (x, y, z) como um tuplo de floats em mili-g.

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

Devolve a taxa angular de (x, y, z) como um tuplo de floats em milésimas de grau por segundo.

imu.temperature_c() float

Devolve a temperatura do sensor IMU em graus Celsius.

imu.roll() float

Devolve o ângulo de rolamento do módulo de câmara em graus.

  • 0 -> A câmara está na vertical.

  • 90 -> A câmara está rodada para a esquerda.

  • 180 -> A câmara está de cabeça para baixo.

  • 270 -> A câmara está rodada para a direita.

imu.pitch() float

Devolve o ângulo de arfagem do módulo de câmara em graus.

  • 0 -> A câmara está na vertical.

  • 90 -> A câmara está apontada para baixo.

  • 180 -> A câmara está de cabeça para baixo.

  • 270 -> A câmara está apontada para cima.

imu.sleep(enable: bool) None

enable definido como True coloca o sensor IMU em modo de suspensão. False acorda-o novamente (o padrão).

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

Define o registo IMU em addr para val.

imu.__read_reg(addr: int) int

Devolve o valor do registo IMU em addr.