Инерциальные датчики: IMU
Урок про инерциальный измерительный блок: акселерометр меряет ускорение и наклон, гироскоп — скорость вращения.
IMU (Inertial Measurement Unit) — модуль с акселерометром (ускорение по 3 осям) и гироскопом (угловая скорость по 3 осям), часто плюс магнитометр.
IMU — это «вестибулярный аппарат» дрона, телефона и робота. Акселерометр в покое чувствует гравитацию и по её проекциям даёт наклон. Гироскоп даёт скорость поворота. По отдельности оба врут, вместе — дают надёжную ориентацию (раздел 6).
Наклон из акселерометра
В покое акселерометр меряет вектор $g$. Углы тангажа (pitch) и крена (roll) получаются из проекций:
$$ \theta_{pitch} = \arctan\!\frac{a_x}{\sqrt{a_y^2 + a_z^2}}, \qquad \theta_{roll} = \arctan\!\frac{a_y}{a_z} $$
import math
def tilt(ax, ay, az):
pitch = math.degrees(math.atan2(ax, math.sqrt(ay*ay + az*az)))
roll = math.degrees(math.atan2(ay, az))
return round(pitch, 2), round(roll, 2)
print(tilt(0.0, 0.0, 9.81)) # ровно
print(tilt(4.9, 0.0, 8.5)) # наклон вперёдВывод:
(0.0, 0.0) (29.96, 0.0)
Гироскоп: интегрирование скорости
Гироскоп даёт угловую скорость $\omega$. Чтобы получить угол, скорость интегрируют по времени:
$$ \theta(t) = \theta_0 + \int_0^t \omega(\tau)\,d\tau \approx \theta_0 + \sum_k \omega_k \,\Delta t $$
# интегрируем угловую скорость (град/с) с шагом dt
omega = [2.0, 2.1, 1.9, 2.0, 2.0] # град/с
dt = 0.1
angle = 0.0
for w in omega:
angle += w * dt
print("угол =", round(angle, 3), "°")Вывод:
угол = 0.2 ° угол = 0.41 ° угол = 0.6 ° угол = 0.8 ° угол = 1.0 °
Как работает под капотом
Акселерометр и гироскоп MEMS — это микроскопические подвижные массы на кремнии: ускорение смещает массу, ёмкость меняется, схема выдаёт число. Беда акселерометра — он чувствует любое ускорение, не только гравитацию: тряска и вибрация портят оценку наклона, зато в среднем он не «уплывает». Гироскоп, наоборот, мгновенно точен, но интегрирование накапливает дрейф нуля — угол медленно «уезжает». Поэтому их данные сливают: быстрый гироскоп плюс стабильный акселерометр (раздел 6).
Частые ошибки
- Доверять акселерометру при тряске — он покажет ложный наклон.
- Интегрировать гироскоп без коррекции — угол неизбежно уплывёт из-за дрейфа.
- Путать ускорение (м/с²) и угловую скорость (град/с) — это разные физические величины.
Итог
- Акселерометр в покое даёт наклон через arctan проекций гравитации.
- Гироскоп даёт угол интегрированием угловой скорости.
- По отдельности оба ненадёжны; их сливают (комплементарный фильтр, Калман).