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]#
Возвращает ускорение для
(x, y, z)в виде кортежа чисел с плавающей точкой в милли-g.
- imu.angular_rate_mdps() Tuple[float, float, float]#
Возвращает угловую скорость для
(x, y, z)в виде кортежа чисел с плавающей точкой в милли-градусах в секунду.
- imu.roll() float#
Возвращает угол крена модуля камеры в градусах.
0 -> Камера стоит вертикально.
90 -> Камера повёрнута влево.
180 -> Камера перевёрнута вверх ногами.
270 -> Камера повёрнута вправо.
- imu.pitch() float#
Возвращает угол тангажа модуля камеры в градусах.
0 -> Камера стоит вертикально.
90 -> Камера направлена вниз.
180 -> Камера перевёрнута вверх ногами.
270 -> Камера направлена вверх.
- imu.sleep(enable: bool) None#
enable, установленный вTrue, переводит датчик IMU в спящий режим.Falseснова пробуждает его (по умолчанию).
- imu.__read_reg(addr: int, buf: bytearray | None = None) int | None#
Возвращает значение регистра IMU по адресу
addr.Если задан
buf, вместо этого выполняется пакетное чтение:len(buf)байт считываются начиная сaddrв записываемый буфер, и возвращаетсяNone. Используйте это для чтения блока последовательных регистров (например, всех шести выходных байтов акселерометра) за одну транзакцию шины.