Как выбрать IMU и настроить слияние датчиков
IMU обычно объединяет трёхосевой акселерометр и гироскоп; иногда систему дополняют магнитометром, барометром или GNSS. Гироскоп хорошо отслеживает быстрые изменения, но его bias интегрируется в дрейф угла. Акселерометр даёт направление гравитации только при отсутствии значительного линейного ускорения. Слияние использует сильные стороны каждого датчика и модель движения. Выбор по максимальному диапазону и числу бит недостаточен. Важны noise density, bias instability, temperature drift, cross-axis sensitivity, bandwidth, timestamp и mechanical placement.
Определите требуемый результат
Нужно различать orientation, angular rate, linear acceleration, velocity и position. IMU может хорошо оценить ориентацию на секунды/минуты, но двойное интегрирование ускорения быстро уводит положение без внешних коррекций. Если требуется сантиметровая навигация, понадобятся GNSS, vision, UWB, wheel odometry или ограничения модели.
Задайте диапазон движения, частоту обновления, допустимую latency и длительность без внешней опоры. Для стабилизации камеры важна низкая задержка и шум; для падения — широкий g; для робота — синхронизация с энкодерами.
Диапазон акселерометра
±2 g даёт лучшее разрешение для спокойного наклона, но насыщается при ударе. ±16/32 g выдерживает динамику, но повышает quantization/noise per LSB. Выберите минимальный диапазон, покрывающий p99.9 события с запасом. Некоторые IMU позволяют dynamic range switching, однако переход нужно логировать и учитывать в фильтре.
Параметр shock survivability не равен измерительному диапазону. Корпус может выжить 2000 g, но данные будут saturated гораздо раньше.
Диапазон гироскопа
±125/250 °/s подходит медленному наклону, ±2000 °/s — быстрым вращениям. Saturated gyro разрушает интеграцию и фильтр может долго восстанавливаться. Для выбора запишите максимальную скорость, включая падение и ручное вращение.
Noise density и bias важнее номинальных 16/20 бит. Цифровое разрешение ниже analog noise floor не добавляет информации.
ODR и bandwidth
Output data rate определяет частоту выдачи, а bandwidth — фильтр. Высокий ODR при узкой bandwidth даёт oversampling, но не новые быстрые данные. Слишком широкая полоса увеличивает шум и vibration rectification error.
Для control loop sampling должен быть регулярным. Используйте data-ready interrupt/FIFO и аппаратный timestamp, а не polling по таймеру ОС. Если accel и gyro обновляются в разные моменты, фильтр должен знать timestamps.
Шум и Allan deviation
Noise density описывает высокочастотный шум, bias instability — медленный дрейф. Allan variance/deviation по длинной неподвижной записи помогает разделить white noise, bias instability и random walk. Эти параметры определяют process/measurement noise фильтра лучше, чем произвольная настройка.
Снимите данные при нескольких температурах. Self-heating MCU и power converter могут менять bias после запуска, поэтому warm-up profile следует учитывать.
Калибровка акселерометра
Шестипозиционная калибровка оценивает offset и scale по ±g на каждой оси. Более полная модель учитывает non-orthogonality/cross-axis. Измерения выполняют после thermal stabilization, а coefficients хранят с серийным номером.
Проверяйте norm acceleration в покое: после калибровки она близка к g независимо от ориентации. Но vibration и стол не дают идеальной неподвижности.
Калибровка гироскопа
Zero-rate bias можно оценить при подтверждённой неподвижности. Если устройство движется при старте, слепое усреднение создаст ошибку. Motion detector должен отличать покой по gyro variance и accel norm.
Температурную зависимость моделируют таблицей/полиномом по calibration chamber. Компенсация требует температуры самого IMU и достаточного settling.
Магнитометр и магнитная среда
Magnetometer даёт абсолютный heading, но рядом с мотором, сталью и токовыми шинами страдает от hard/soft iron. Калибровка строит offset и матрицу преобразования по облаку измерений в разных ориентациях. Если поле меняется с током двигателя, статическая калибровка недостаточна.
Фильтр должен отклонять magnetic anomaly, а не силой тянуть heading к неверному полю. В помещении иногда лучше использовать wheel/vision correction.
Complementary filter
Простой complementary filter объединяет high-frequency gyro и low-frequency tilt акселерометра. Он вычислительно дешёв и понятен. Коэффициент связан с cutoff: слишком сильная коррекция accel переносит линейные ускорения в наклон, слишком слабая — оставляет gyro drift.
Для 3D используют quaternion, чтобы избежать singularity Euler angles. Всегда нормализуйте quaternion и определите convention axes/handedness.
EKF и модель состояния
Extended Kalman Filter может оценивать orientation, gyro bias, velocity и другие состояния, используя covariance и модель. Он полезен при нескольких источниках и переменной достоверности, но сложнее отлаживается. Неверные noise matrices дают уверенный, но ошибочный результат.
Проверяйте innovation/residual, covariance consistency и rejection outliers. Не настраивайте только по визуально гладкому графику: сильная фильтрация увеличивает latency.
Механика и координаты
IMU ставят на жёсткой части, ближе к центру вращения, если требуется translational decoupling. Гибкая плата и корпус создают resonance. Оси корпуса компонента преобразуют в оси изделия матрицей, а не перестановкой «на глаз».
Храните orientation matrix для каждой ревизии платы. Поворот компонента на 90° без изменения firmware может сделать всю оценку неверной.
Оцените временную ошибку отдельно от шумовой
Даже точный IMU даёт неверный угол, если timestamp запаздывает или дрожит. При угловой скорости 500 °/с ошибка времени 1 мс соответствует 0,5°. Измерьте latency от data-ready до момента использования и её разброс под полной загрузкой MCU. FIFO sample time нельзя заменять временем чтения всего пакета.
При объединении с камерой, энкодером или GNSS переведите источники к одной clock domain либо оцените offset/drift часов. Сохраняйте raw timestamps и sequence numbers; потерянный sample должен быть обнаружен, а не незаметно растянуть интервал фильтра.
Постройте набор динамических эталонов
Помимо покоя нужны поворот на известный угол, постоянная скорость, синусоидальное движение, удар/saturation, вибрация и температурный прогон. Ground truth может давать turntable, optical tracker или calibrated encoder. Оценивайте RMS/max orientation error, settling, drift за заданное время и latency, а не только красивую траекторию.
Для каждой версии coefficients/filter сохраняйте replay сырой записи. Offline replay позволяет повторить алгоритм без механического стенда и сравнить изменения. Затем selected build обязательно подтверждают hardware-in-loop, поскольку timing и quantization отличаются.
Отказные режимы
Фильтр должен распознавать stale FIFO, all-zero/all-one, saturation, implausible norm, temperature out-of-range и sensor reset. При временной потере magnetometer/encoder увеличивают uncertainty и продолжают ограниченное время; при потере gyro безопасно деградируют. Не выдавайте старый quaternion как свежий без quality/status.
Практический пример
Мобильный робот требует orientation 200 Гц и коррекцию по wheel odometry. IMU работает ODR 1 кГц с bandwidth 200 Гц, FIFO выдаёт пакеты с timestamp. Gyro интегрируется на 1 кГц, accel корректирует roll/pitch только при норме близкой g, wheel encoder корректирует yaw/velocity.
Стенд включает медленные повороты, быстрый spin, вибрацию моторов, температурный цикл и потерю encoder. Сравнение выполняют с эталонным motion tracker или precision turntable.
Примеры из каталога ChipBaza
BMI088 — пример 6-axis IMU Bosch, ориентированной на приложения с вибрацией. LSM6DSV16XTR — пример IMU ST с встроенными цифровыми функциями/обработкой. Их диапазоны, noise, ODR, FIFO и pinout различаются; замена требует повторной калибровки и настройки фильтра.
Каталожный статус не заменяет проверку package, temperature grade и официальной revision документации.
Что закрепить в конфигурации IMU
Full MPN связывают с range, ODR, filter, FIFO/watermark, axis transform, interrupt polarity и calibration coefficients. Для каждого serial сохраняют temperature calibration/version. Alternate sensor с похожим noise требует повторного latency, vibration, bias и fusion tuning; register-compatible вариант может иметь иной internal filter. Production test проверяет WHO_AM_I, self-test, axes/sign, noise в покое и ориентацию платы контрольным положением.
Сохраняйте короткую raw-запись производственного теста. Она помогает отличить плохой монтаж, повышенный шум питания и неверную ориентацию от ошибки алгоритма после полевого возврата.
Типовые ошибки
- ожидать устойчивого положения от двойного интегрирования IMU;
- выбирать диапазон без измерения пиков;
- путать ODR и bandwidth;
- polling без data-ready/timestamp;
- калибровать gyro во время движения;
- доверять magnetometer рядом с токовой шиной;
- сглаживать сигнал ценой неприемлемой latency;
- забывать преобразование координат после ревизии платы.
Чек-лист IMU-системы
- определены state, duration и внешние corrections;
- range/ODR/bandwidth покрывают измеренные движения;
- noise и bias оценены, включая температуру;
- accel/gyro/mag откалиброваны по серийной процедуре;
- timestamps и coordinate frames однозначны;
- фильтр обрабатывает saturation и outliers;
- механическое крепление и vibration проверены;
- результат сопоставлен с независимым ground truth.
Источники для технической проверки
Параметры и ограничения сверяйте с актуальной документацией производителя для полного артикула и нужного исполнения.
Следующий шаг
Проверьте артикулы и количество до отправки заявки
Загрузите спецификацию в BOM-сервис или пришлите полный код производителя менеджеру. Если точное совпадение не доказано, позиция останется на ручной проверке.