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

回傳相機模組的翻滾角,以度為單位。

  • 0 -> 相機直立。

  • 90 -> 相機向左旋轉。

  • 180 -> 相機上下顛倒。

  • 270 -> 相機向右旋轉。

imu.pitch() float

回傳相機模組的俯仰角,以度為單位。

  • 0 -> 相機直立。

  • 90 -> 相機朝下。

  • 180 -> 相機上下顛倒。

  • 270 -> 相機朝上。

imu.sleep(enable: bool) None

enable 設為 True 會使 IMU 感測器進入睡眠。False 則將其喚醒(預設值)。

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

將位於 addr 的 IMU 暫存器設為 val

imu.__read_reg(addr: int) int

回傳位於 addr 的 IMU 暫存器值。