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.