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]

以毫 g 为单位返回 (x, y, z) 的加速度(浮点元组)。

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

addr 处的 IMU 寄存器设置为 val

imu.__read_reg(addr: int) int

返回 addr 处 IMU 寄存器的值。