imu — imu-sensor

Modulen imu används för att läsa av IMU-sensorn under kamerasensorn.

Anteckning

IMU-sensorn (och denna modul) finns inte på alla OpenMV Cam-modeller.

För när kamerakortet ligger på ett bord med framsidan uppåt:

  • X pekar åt höger om kamerasensorn.

  • Y pekar nedåt under kamerasensorn (mot kortets underkant).

  • Z pekar i motsatt riktning mot kamerasensorn (in i bordet).

Exempelanvändning – avläs den råa accelerometern, gyrot och temperaturen:

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)

Exempelanvändning – detektera åt vilket håll kameran är lutad:

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)

Funktioner

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

Returnerar accelerationen för (x, y, z) som en flyttalstupel i milli-g.

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

Returnerar vinkelhastigheten för (x, y, z) som en flyttalstupel i milli-grader-per-sekund.

imu.temperature_c() float

Returnerar IMU-sensorns temperatur i grader Celsius.

imu.roll() float

Returnerar kameramodulens rollvinkel i grader.

  • 0 -> Kameran står upp.

  • 90 -> Kameran är roterad åt vänster.

  • 180 -> Kameran är upp och ned.

  • 270 -> Kameran är roterad åt höger.

imu.pitch() float

Returnerar kameramodulens pitchvinkel i grader.

  • 0 -> Kameran står upp.

  • 90 -> Kameran pekar nedåt.

  • 180 -> Kameran är upp och ned.

  • 270 -> Kameran pekar uppåt.

imu.sleep(enable: bool) None

enable satt till True försätter IMU-sensorn i viloläge. False väcker den igen (standard).

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

Sätter IMU-registret vid addr till val.

imu.__read_reg(addr: int) int

Returnerar värdet av IMU-registret vid addr.