imu — sensor imu¶
O módulo imu é utilizado para ler o sensor IMU situado por baixo do sensor da câmara.
Nota
O sensor IMU (e este módulo) não está presente em todos os modelos de OpenMV Cam.
Quando a placa da câmara está pousada sobre uma mesa com a face voltada para cima:
X aponta para a direita do sensor da câmara.
Y aponta para baixo, por baixo do sensor da câmara (em direção à parte inferior da placa).
Z aponta na direção inversa ao sensor da câmara (em direção à mesa).
Exemplo de utilização – consultar o acelerómetro, giroscópio e temperatura em bruto:
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)
Exemplo de utilização – detetar a inclinação da câmara:
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)
Funções¶
- imu.acceleration_mg() Tuple[float, float, float]¶
Devolve a aceleração de
(x, y, z)como um tuplo de floats em mili-g.
- imu.angular_rate_mdps() Tuple[float, float, float]¶
Devolve a taxa angular de
(x, y, z)como um tuplo de floats em milésimas de grau por segundo.
- imu.roll() float¶
Devolve o ângulo de rolamento do módulo de câmara em graus.
0 -> A câmara está na vertical.
90 -> A câmara está rodada para a esquerda.
180 -> A câmara está de cabeça para baixo.
270 -> A câmara está rodada para a direita.
- imu.pitch() float¶
Devolve o ângulo de arfagem do módulo de câmara em graus.
0 -> A câmara está na vertical.
90 -> A câmara está apontada para baixo.
180 -> A câmara está de cabeça para baixo.
270 -> A câmara está apontada para cima.