imu — sensor imu

Moduł imu służy do odczytu sensora IMU znajdującego się pod sensorem kamery.

Informacja

Sensor IMU (oraz ten moduł) nie jest obecny we wszystkich modelach OpenMV Cam.

Dla sytuacji, gdy płytka kamery leży na stole skierowana do góry:

  • X wskazuje na prawo od sensora kamery.

  • Y wskazuje w dół, poniżej sensora kamery (w stronę dolnej krawędzi płytki).

  • Z wskazuje w kierunku przeciwnym do sensora kamery (w głąb stołu).

Przykład użycia – odczyt surowych danych akcelerometru, żyroskopu i temperatury:

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)

Przykład użycia – wykrywanie, w którą stronę kamera jest przechylona:

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)

Funkcje

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

Zwraca przyspieszenie dla (x, y, z) jako krotkę liczb zmiennoprzecinkowych w mili-g.

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

Zwraca prędkość kątową dla (x, y, z) jako krotkę liczb zmiennoprzecinkowych w mili-stopniach na sekundę.

imu.temperature_c() float

Zwraca temperaturę sensora IMU w stopniach Celsjusza.

imu.roll() float

Zwraca kąt przechyłu (roll) modułu kamery w stopniach.

  • 0 -> Kamera stoi pionowo.

  • 90 -> Kamera jest obrócona w lewo.

  • 180 -> Kamera jest do góry nogami.

  • 270 -> Kamera jest obrócona w prawo.

imu.pitch() float

Zwraca kąt pochylenia (pitch) modułu kamery w stopniach.

  • 0 -> Kamera stoi pionowo.

  • 90 -> Kamera jest skierowana w dół.

  • 180 -> Kamera jest do góry nogami.

  • 270 -> Kamera jest skierowana w górę.

imu.sleep(enable: bool) None

enable ustawione na True usypia sensor IMU. False budzi go ponownie (wartość domyślna).

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

Ustawia rejestr IMU pod adresem addr na wartość val.

imu.__read_reg(addr: int) int

Zwraca wartość rejestru IMU pod adresem addr.