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

enableTrue に設定すると、IMU センサーをスリープ状態にします。False で再び起動します(デフォルト)。

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

addr の IMU レジスタを val に設定します。

imu.__read_reg(addr: int) int

addr の IMU レジスタの値を返します。