imu --- cảm biến IMU#

Mô-đun imu được dùng để đọc cảm biến IMU nằm bên dưới cảm biến camera.

Ghi chú

Cảm biến IMU (và mô-đun này) không có mặt trên tất cả các mô hình OpenMV Cam.

Khi bo mạch camera đặt nằm ngửa trên bàn:

  • X hướng sang phải của cảm biến camera.

  • Y hướng xuống dưới cảm biến camera (về phía đáy bo mạch).

  • Z hướng ngược chiều với cảm biến camera (vào trong bàn).

Ví dụ sử dụng -- đọc thô gia tốc kế, con quay hồi chuyển và nhiệt độ:

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)

Ví dụ sử dụng -- phát hiện hướng nghiêng của camera:

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)

Các hàm#

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

Trả về gia tốc cho (x, y, z) dưới dạng tuple float tính bằng milli-g.

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

Trả về tốc độ góc cho (x, y, z) dưới dạng tuple float tính bằng milli-độ-trên-giây.

imu.temperature_c() → float#

Trả về nhiệt độ cảm biến IMU tính bằng độ Celsius.

imu.roll() → float#

Trả về góc lăn của mô-đun camera tính bằng độ.

  • 0 -> Camera đang đứng thẳng.

  • 90 -> Camera bị xoay sang trái.

  • 180 -> Camera bị lật ngược.

  • 270 -> Camera bị xoay sang phải.

imu.pitch() → float#

Trả về góc ngẩng của mô-đun camera tính bằng độ.

  • 0 -> Camera đang đứng thẳng.

  • 90 -> Camera đang hướng xuống.

  • 180 -> Camera bị lật ngược.

  • 270 -> Camera đang hướng lên.

imu.sleep(enable: bool) → None#

enable đặt thành True đưa cảm biến IMU vào chế độ ngủ. False đánh thức nó trở lại (mặc định).

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

Đặt thanh ghi IMU tại địa chỉ addr thành giá trị val.

imu.__read_reg(addr: int, buf: bytearray | None = None) → int | None#

Trả về giá trị của thanh ghi IMU tại địa chỉ addr.

Nếu buf được cung cấp, hàm sẽ thực hiện đọc theo khối (burst read) thay thế: len(buf) byte được đọc bắt đầu từ addr vào bộ đệm ghi được và None được trả về. Hãy dùng cách này để đọc một khối các thanh ghi liên tiếp (ví dụ toàn bộ sáu byte đầu ra của gia tốc kế) trong một giao dịch bus duy nhất.