imu — senzor imu#
Modulul imu este folosit pentru citirea senzorului IMU aflat sub senzorul camerei.
Notă
Senzorul IMU (și acest modul) nu este prezent pe toate modelele de OpenMV Cam.
Pentru cazul în care placa camerei este așezată pe o masă cu fața în sus:
X indică spre dreapta senzorului camerei.
Y indică în jos, sub senzorul camerei (spre partea de jos a plăcii).
Z indică în direcția opusă senzorului camerei (în masă).
Exemplu de utilizare – citirea valorilor brute ale accelerometrului, giroscopului și temperaturii:
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)
Exemplu de utilizare – detectarea direcției în care este înclinată 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)
Funcții#
- imu.acceleration_mg() Tuple[float, float, float]#
Returnează accelerația pentru
(x, y, z)ca tuplu de valori float în milli-g.
- imu.angular_rate_mdps() Tuple[float, float, float]#
Returnează viteza unghiulară pentru
(x, y, z)ca tuplu de valori float în mili-grade-pe-secundă.
- imu.roll() float#
Returnează unghiul de ruliu (roll) al modulului camerei în grade.
0 -> Camera stă în picioare.
90 -> Camera este rotită spre stânga.
180 -> Camera este cu susul în jos.
270 -> Camera este rotită spre dreapta.
- imu.pitch() float#
Returnează unghiul de tangaj (pitch) al modulului camerei în grade.
0 -> Camera stă în picioare.
90 -> Camera este îndreptată în jos.
180 -> Camera este cu susul în jos.
270 -> Camera este îndreptată în sus.
- imu.sleep(enable: bool) None#
enablesetat laTruepune senzorul IMU în repaus.Falseîl trezește înapoi (valoarea implicită).
- imu.__read_reg(addr: int, buf: bytearray | None = None) int | None#
Returnează valoarea registrului IMU de la
addr.Dacă este dat
buf, efectuează în schimb o citire în rafală:len(buf)octeți sunt citiți începând de laaddrîn tamponul inscriptibil și se returneazăNone. Folosiți aceasta pentru a citi un bloc de registre consecutive (de exemplu toți cei șase octeți de ieșire ai accelerometrului) într-o singură tranzacție pe magistrală.