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) כטאפל עשרוני ביחידות מילי-g.

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

מחזיר את הקצב הזוויתי עבור (x, y, z) כטאפל עשרוני ביחידות מילי-מעלות-לשנייה.

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, buf: bytearray | None = None) → int | None#

מחזיר את ערך אוגר ה-IMU בכתובת addr.

אם ניתן buf, מתבצעת במקום זאת קריאת צרור (burst): len(buf) בתים נקראים החל מ-addr אל תוך החוצץ הניתן לכתיבה ומוחזר None. השתמשו בזה כדי לקרוא בלוק של אוגרים עוקבים (למשל כל ששת בתי הפלט של מד התאוצה) בטרנזקציית אפיק אחת.