imu --- مستشعر imu

تُستخدم وحدة imu لقراءة مستشعر IMU الموجود أسفل مستشعر الكاميرا.

ملاحظة

مستشعر IMU (وهذه الوحدة) غير موجود في جميع طرازات OpenMV Cam.

عندما تكون لوحة الكاميرا موضوعة على طاولة ووجهها لأعلى:

  • يشير X إلى يمين مستشعر الكاميرا.

  • يشير Y إلى أسفل مستشعر الكاميرا (نحو أسفل اللوحة).

  • يشير Z في الاتجاه المعاكس لمستشعر الكاميرا (نحو الطاولة).

مثال على الاستخدام -- استطلاع قيم مقياس التسارع والجايروسكوب ودرجة الحرارة الخام:

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)

مثال على الاستخدام -- كشف الاتجاه الذي تميل إليه الكاميرا:

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)

الدوال

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

يُرجع التسارع لـ (x, y, z) كصفّ من أعداد عشرية بوحدة milli-g.

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

يُرجع المعدل الزاوي لـ (x, y, z) كصفّ من أعداد عشرية بوحدة milli-degrees-per-second.

imu.temperature_c() float

يُرجع درجة حرارة مستشعر IMU بالدرجات المئوية.

imu.roll() float

يُرجع زاوية اللفّ (roll) لوحدة الكاميرا بالدرجات.

  • 0 -> الكاميرا منتصبة.

  • 90 -> الكاميرا مُدارة إلى اليسار.

  • 180 -> الكاميرا مقلوبة رأسًا على عقب.

  • 270 -> الكاميرا مُدارة إلى اليمين.

imu.pitch() float

يُرجع زاوية الميل (pitch) لوحدة الكاميرا بالدرجات.

  • 0 -> الكاميرا منتصبة.

  • 90 -> الكاميرا تشير إلى الأسفل.

  • 180 -> الكاميرا مقلوبة رأسًا على عقب.

  • 270 -> الكاميرا تشير إلى الأعلى.

imu.sleep(enable: bool) None

ضبط enable على True يُدخل مستشعر IMU في وضع السكون. وضبطه على False يوقظه مجددًا (الوضع الافتراضي).

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

يضبط سجل IMU عند addr على القيمة val.

imu.__read_reg(addr: int) int

يُرجع قيمة سجل IMU عند addr.