Вибрации в ArduPilot: как читать VIBE, IMU и FFT до настройки PID

Симптом: в Acro аппарат летит приемлемо, но в Stabilize, AltHold или Loiter начинает «колбасить», сам набирает высоту, медленно реагирует на стики или теряет устойчивость. В такой ситуации не стоит сразу уменьшать PID или включать все фильтры подряд. Сначала нужно понять, что показывают VIBE, clipping и IMU, затем устранить механическую причину и только после этого настраивать harmonic notch.

Окно Vibe в Mission Planner
Окно Vibe в Mission Planner. Иллюстрация: ArduPilot documentation, CC BY-SA 3.0. Источник.
Безопасность. До осмотра снимите пропеллеры и отключите аккумулятор. При сильной вибрации не проверяйте AltHold, Loiter, RTL или Auto на высоте: неверные данные акселерометра могут испортить оценку высоты и положения. Не воспринимайте vibration failsafe и фильтры как разрешение продолжать полёт с неисправной механикой.

Почему вибрации особенно заметны не в Acro

Акселерометры участвуют в оценке положения вместе с барометром и GPS. В ручном Acro часть ошибки может быть незаметна, потому что пилот сам задаёт движение и не требует от автопилота удерживать угол, высоту и координаты. В Stabilize, AltHold и Loiter эта же ошибка попадает в контур управления. ArduPilot может принять вибрацию за ускорение, наклон или изменение высоты и начать компенсировать несуществующее движение.

Поэтому симптом «в Acro нормально, а в AltHold аппарат резко уходит вверх» не доказывает неисправность режима. Это повод проверить акселерометр, крепление полётного контроллера, пропеллеры, моторы и фильтрацию.

Что смотреть в Mission Planner: Vibe и clipping

В Mission Planner нажмите индикатор Vibe на HUD и наблюдайте VibeX, VibeY и VibeZ на неподвижном аппарате и во время короткого безопасного теста. Это не оценка «на глаз», а численные показатели вибрации акселерометра в м/с².

Наблюдение Что оно подсказывает Следующий шаг
VibeX/Y/Z обычно ниже 30 м/с² По ориентиру официальной документации уровень обычно приемлем, но важен весь лог, а не одно мгновенное значение. Проверить clipping и посмотреть, не растёт ли вибрация на оборотах или скорости.
Пики выше 30 м/с² Могут начаться проблемы с удержанием высоты или позиции. Искать источник вибрации до настройки PID.
Значения выше 60 м/с² Такой уровень почти всегда связан с проблемами AltHold или позиционных режимов. Не использовать автономные режимы, снять лог и вернуть аппарат на механику.
Clip0/Clip1/Clip2 постоянно увеличиваются Один или несколько акселерометров достигают предела измерения. Это серьёзнее обычного шума. Проверить крепление, пропеллеры, моторы и раму; не маскировать проблему фильтром.

Сноска 1. Порог 30 м/с² — ориентир из документации ArduPilot, а не универсальная гарантия исправного полёта. На разных рамах, режимах и версиях прошивки важны форма графика, длительность пиков и поведение всех осей. Clipping желательно видеть равным нулю; небольшое число импульсов, например после жёсткой посадки, само по себе не равно аварии, но регулярный рост по логу требует ремонта.

Как читать VIBE в DataFlash-логе

  1. Запишите обычный полёт. Несколько минут спокойного висения недостаточно: добавьте безопасные изменения газа и движения, чтобы увидеть, при каких оборотах возникает проблема.
  2. Откройте сообщение VIBE. Постройте графики VibeX, VibeY, VibeZ и отдельно Clip0, Clip1, Clip2. Сравните участок до появления симптома и сам симптом.
  3. Сопоставьте ось с механикой. Высокие X и Y одновременно часто указывают на мотор, пропеллер или общую виброразвязку. Высокая только одна из горизонтальных осей может быть связана с креплением полётника или проводом, который касается платы. Высокая Z заставляет проверить биение пропеллера и вертикальный люфт мотора.
  4. Сравните режимы. Если в висении график хороший, а на скорости резко ухудшается, смотрите аэродинамику, жёсткость рамы и влияние потока. Не пытайтесь решить такую причину только снижением частоты фильтра.

Названия полей в старых и новых логах отличаются. Не переносите снимок чужого графика на свою версию ArduPilot без проверки сообщения и типа EKF. Это особенно важно для старых примеров с NKF и XKF.

«The Leans»: когда оценка начинает уезжать

«The Leans» — ситуация, когда оценка положения или крена становится неверной и аппарат заметно наклоняется, хотя пилот командует ровный полёт. Один из возможных механизмов — aliasing: высокочастотная вибрация после дискретизации выглядит как более низкая частота внутри измерительного диапазона.

Фильтр не может надёжно удалить уже наложившуюся ошибку. Поэтому сначала исправляют источник и крепление, а не пытаются поднять или опустить все фильтры. В логе можно сравнить оценки AHRS/EKF, но конкретные названия полей зависят от версии прошивки и выбранного EKF. Если оценки расходятся на несколько градусов, сохраняйте участок лога и проверяйте вибрации вместе с настройками IMU.

Сначала механика, потом фильтры

Порядок проверки имеет значение: программная фильтрация может сделать график красивее, но не выправит кривую раму или разбитый подшипник.

  • Снимите пропеллеры и проверьте их на трещины, деформацию, люфт и баланс. Не меняйте сразу все винты на новые без фиксации результата.
  • Проверьте вал и подшипники моторов, крепление моторов и одинаковость затяжки. Слишком длинный винт может повредить обмотку.
  • Проверьте лучи, пластины и стойки рамы на люфт, трещины и перекос. Небольшая геометрическая ошибка может заметно увеличить вибрацию на оборотах.
  • Полётный контроллер должен быть закреплён по инструкции производителя. Провод, стяжка или корпус, касающийся платы, способен передавать вибрацию по одной оси.
  • После одного изменения повторите тот же тест. Одновременная замена пропеллеров, моторов и фильтров лишает лог диагностической ценности.

Что делает harmonic notch

ArduPilot использует низкочастотные фильтры для акселерометра и гироскопа, а harmonic notch — для вырезания узких пиков шума на частоте вращения моторов и её гармониках. Механическое устранение вибрации остаётся первым шагом: aliasing и перегрузка акселерометра фильтр надёжно не исправит.

Общая логика настройки такая:

  1. Снять исходный лог и определить, на каких оборотах или частотах появляется пик.
  2. Выбрать способ управления частотой notch: статический, throttle-based, по RPM-сенсору, по телеметрии ESC или In-Flight FFT.
  3. Включить первый набор через INS_HNTCH_ENABLE = 1 и после перезагрузки открыть появившиеся параметры.
  4. Сделать контрольный полёт, сравнить спектр до и после и проверить, не выросла ли нагрузка на процессор.

INS_HNTCH_MODE = 0 задаёт статическую частоту, 1 связывает её с газом, 2 и 5 используют RPM-сенсоры, 3 — телеметрию ESC, а 4 — In-Flight FFT. Точные доступные варианты зависят от типа аппарата, прошивки и аппаратной поддержки.

Сноска 2. Dynamic FFT и фильтр по RPM решают близкую задачу разными измерениями. RPM сообщает, где находится частота вращения, а FFT ищет пики в данных гироскопа. Отсутствие bidirectional DShot не означает автоматически, что FFT невозможен, но режим FFT требует поддержки прошивки и достаточного ресурса CPU. В официальной документации как практический ориентир указаны автопилоты F7/H7; для F4 нужно отдельно проверить ограничения конкретной платы и сборки.

Raw IMU logging: минимальная процедура для FFT

Для прошивки 4.5 и новее на автопилоте с H7 ArduPilot предлагает записывать raw IMU и анализировать лог в Filter Review. Перед тестом выберите способ управления частотой notch и убедитесь, что он действительно настроен: raw-лог показывает шум, но не заменяет настройку ESC telemetry, RPM или throttle-based режима.

  1. Сохраните параметры и установите INS_RAW_LOG_OPT = 9. Это сочетание битов 0 и 3: запись первичного гироскопа до и после фильтра.
  2. Выполните обычный тестовый полёт не только в мягком висении, продолжительностью не менее 30 секунд, затем скачайте DataFlash-лог.
  3. Загрузите лог в Filter Review, выберите стабильный участок висения и нажмите Calculate. Сравнивайте спектр до и после фильтра, особенно в нижней части полосы управления до 40 Гц.
  4. Подберите параметры в инструменте, сохраните их в автопилот и сделайте повторный полёт для проверки.
  5. После анализа очистите INS_RAW_LOG_OPT. Большие raw-логи не следует писать постоянно.

На более медленных F4 raw-логирование может не успевать записывать данные и приводить к пропускам. ⚠️ Если Filter Review сообщает, что данных недостаточно, сначала уменьшите FFT window с 1024 до 512 или отключите запись post-filter и повторите короткий тест. Не оставляйте raw-логирование включённым «на всякий случай».

Не включайте все гармоники подряд

Параметр INS_HNTCH_HMNCS добавляет фильтры на кратных частотах. Чем больше гармоник, тем больше вычислительная нагрузка. В режиме телеметрии ESC набор фильтров может создаваться для каждого мотора, поэтому число фильтров растёт намного быстрее, чем ожидает новичок. Официальная документация называет три гармоники обычно безопасным началом и отдельно предупреждает о риске исчерпать CPU.

Если после включения notch аппарат стал хуже реагировать, появились сообщения о нагрузке или пропуски логов, вернитесь к последнему рабочему набору параметров. Не лечите перегрузку снижением failsafe и не копируйте чужие значения INS_HNTCH_* без совпадения моторов, рамы, RPM и версии прошивки.

Безопасный тест после изменения

  1. Сохраните параметры до изменения и запишите, какой параметр меняется.
  2. Проверьте аппарат на земле со снятыми пропеллерами: крепление, проводку, направление вращения и отсутствие механического люфта.
  3. Выполните короткий тест в ручном или Stabilize-режиме на безопасной высоте и рядом с местом посадки. Не начинайте с RTL, Loiter или Auto.
  4. Сразу сохраните DataFlash-лог. Сравните VIBE, clipping и спектр с исходным полётом.
  5. Оставьте изменение только если вибрация действительно уменьшилась и аппарат не получил новую задержку или осцилляцию.

Что говорят практические кейсы

В экспортированном чате FPV Club описан симптом: в Acro полёт выглядит нормально, а в Stabilize или AltHold начинаются сильные вибрации, аппарат набирает высоту и становится плохо управляемым (messages3.html#message229865). Это полезный пример для поиска по симптомам, но не готовый диагноз: тот же сценарий дают неверный hover throttle, плохая настройка, механическая вибрация и ошибки оценки.

В другой ветке спрашивали, есть ли смысл включать Dynamic FFT без bidirectional DShot (messages3.html#message233564). В ответ правильно разделили два подхода: FFT ищет пики шума гироскопа, а RPM-фильтрация использует скорость моторов. Но совет «процессор должен потянуть» нужно превращать в проверку возможностей конкретной платы и лога, а не в универсальную рекомендацию.

Ещё одна дискуссия о FSVIBE_ENABLE показывает типичную путаницу: vibration compensation может временно изменить работу оценки и контура высоты, но это не ремонт вибрации (messages3.html#message228087, messages3.html#message228104). Отдельный вопрос про BlueJay и запись телеметрии ESC подчёркивает, что подключение и логирование ESC — самостоятельная задача, которую нельзя подменять включением FFT (messages2.html#message147587).

Сообщество ArduPilot полезно для поиска похожих конфигураций, но любой совет из форума нужно сверять с официальной документацией, версией прошивки, типом рамы и аппаратным ресурсом.

Короткий чек-лист

  • Сняты пропеллеры перед осмотром и сохранён исходный набор параметров.
  • В логе проверены VibeX/Y/Z и Clip0/1/2, а не только ощущения в полёте.
  • Проверены пропеллеры, моторы, рама, крепление FC и провода.
  • Источник вибрации устранён до агрессивной настройки фильтров.
  • Для harmonic notch выбран метод, который поддерживают конкретная плата и прошивка.
  • После изменения сделан повторный лог, а failsafe и защитные пороги не отключались.

Источники и связанные материалы

Сноска 3. Названия параметров, поля логов и ограничения аппаратуры меняются между версиями ArduPilot и типами автопилотов. Перед применением сверяйте официальную документацию для своей версии, платы и конфигурации. Проверено: 31 июля 2026 года.

Прокрутить вверх