imu — imu sensörü#

imu modülü, kamera sensörünün altındaki IMU sensörünü okumak için kullanılır.

Not

IMU sensörü (ve bu modül) tüm OpenMV Cam modellerinde bulunmaz.

Kamera kartı yüzü yukarı bakacak şekilde bir masada yatarken:

  • X, kamera sensörünün sağını gösterir.

  • Y, kamera sensörünün altını gösterir (kartın alt kısmına doğru).

  • Z, kamera sensörünün ters yönünü gösterir (masanın içine doğru).

Örnek kullanım – ham ivmeölçeri, jiroskopu ve sıcaklığı sorgula:

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)

Örnek kullanım – kameranın hangi yöne eğildiğini tespit et:

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)

Fonksiyonlar#

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

(x, y, z) için ivmeyi milli-g cinsinden bir kayan nokta demeti olarak döndürür.

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

(x, y, z) için açısal hızı saniyede milli-derece cinsinden bir kayan nokta demeti olarak döndürür.

imu.temperature_c() → float#

IMU sensörü sıcaklığını Celsius derecesi cinsinden döndürür.

imu.roll() → float#

Kamera modülünün yuvarlanma (roll) açısını derece cinsinden döndürür.

  • 0 -> Kamera dik duruyor.

  • 90 -> Kamera sola döndürülmüş.

  • 180 -> Kamera baş aşağı.

  • 270 -> Kamera sağa döndürülmüş.

imu.pitch() → float#

Kamera modülünün yunuslama (pitch) açısını derece cinsinden döndürür.

  • 0 -> Kamera dik duruyor.

  • 90 -> Kamera aşağıyı gösteriyor.

  • 180 -> Kamera baş aşağı.

  • 270 -> Kamera yukarıyı gösteriyor.

imu.sleep(enable: bool) → None#

enable değeri True olarak ayarlandığında IMU sensörünü uyku moduna alır. False onu yeniden uyandırır (varsayılan).

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

addr konumundaki IMU yazmacını val değerine ayarlar.

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

addr konumundaki IMU yazmacının değerini döndürür.

buf verilirse bunun yerine bir toplu (burst) okuma yapar: addr konumundan başlayarak len(buf) bayt, yazılabilir arabelleğe okunur ve None döndürülür. Ardışık yazmaçlardan oluşan bir bloğu (örneğin altı ivmeölçer çıkış baytının tamamını) tek bir veri yolu işleminde okumak için bunu kullanın.