imu — imu-sensor#

De imu-module wordt gebruikt voor het uitlezen van de IMU-sensor onder de camerasensor.

Notitie

De IMU-sensor (en deze module) is niet op alle OpenMV Cam-modellen aanwezig.

Voor wanneer het camerabord met de voorkant naar boven op een tafel ligt:

  • X wijst naar rechts van de camerasensor.

  • Y wijst naar beneden onder de camerasensor (richting de onderkant van het bord).

  • Z wijst in de tegenovergestelde richting van de camerasensor (de tafel in).

Voorbeeldgebruik – peil de ruwe versnellingsmeter, gyroscoop en temperatuur:

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)

Voorbeeldgebruik – detecteer in welke richting de camera gekanteld is:

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)

Functies#

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

Retourneert de versnelling voor (x, y, z) als een float-tuple in milli-g’s.

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

Retourneert de hoeksnelheid voor (x, y, z) als een float-tuple in milli-graden-per-seconde.

imu.temperature_c() → float#

Retourneert de temperatuur van de IMU-sensor in graden Celsius.

imu.roll() → float#

Retourneert de rolhoek van de cameramodule in graden.

  • 0 -> Camera staat rechtop.

  • 90 -> Camera is naar links gedraaid.

  • 180 -> Camera staat ondersteboven.

  • 270 -> Camera is naar rechts gedraaid.

imu.pitch() → float#

Retourneert de pitchhoek van de cameramodule in graden.

  • 0 -> Camera staat rechtop.

  • 90 -> Camera wijst naar beneden.

  • 180 -> Camera staat ondersteboven.

  • 270 -> Camera wijst naar boven.

imu.sleep(enable: bool) → None#

enable ingesteld op True zet de IMU-sensor in slaapstand. False maakt hem weer wakker (de standaard).

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

Stelt het IMU-register op addr in op val.

imu.__read_reg(addr: int, buf: bytearray | None = None) → int | None#

Retourneert de waarde van het IMU-register op addr.

Als buf is opgegeven, wordt in plaats daarvan een burst-read uitgevoerd: len(buf) bytes worden vanaf addr in de schrijfbare buffer gelezen en None wordt geretourneerd. Gebruik dit om een blok opeenvolgende registers (bijvoorbeeld alle zes uitvoerbytes van de accelerometer) in één enkele bustransactie te lezen.