Фильтры — это популярная и актуальная тема в сообществе Betaflight. Фильтры могут поразительно сильно влиять на летные характеристики квадрокоптера. Они также являются причиной задержки между управляющими входами и выходами. По этой причине недостаточно просто включить все фильтры и выставить из на 11.
В последнее время команда разработчиков Betaflight внесла многочисленные изменения в систему фильтров прошивки Betaflight. Изменения включают в себя тонкую настройку существующих фильтров, которые некоторые из вас уже наверное знают:
- Low Pass
- и фильтры Notch.
Также добавлены новые фильтры:
- Dynamic Notch,
- PT2,
- FIR + Biquad,
- Фильтры Калмана (Kalman filters).
Цель этой статьи — научить вас тому, как правильно настроить и тестировать фильтры, чтобы вам было удобно летать. В конце статьи также будут несколько рекомендаций по настройке фильтров в Betaflight 3.3 для наилучших полетов.
Статья нацелена в первую очередь на опытных и продвинутых пилотов, с целью улучшения их летных характеристик.
Примите во внимание, что настройка фильтров не гарантирует вам радикальное улучшение летных характеристик, если у вас слабый опыт пилотирования. В первую очередь на это все будет влиять ваш опыт управления гоночным квадрокоптером.
Также, можно включить динамические фильтры и отключить Notch фильтры, это рекомендуется сделать для еще не сильно опытных пилотов, но вы получите более лучшую производительность без копания в настройках фильтров.
Дальнейшие настройки требуют, чтобы у вас уже были определенные знания о поведении вашего квадрокоптера — если таких знаний еще нет, налетайте несколько часов и снова заходите в эту статью для настройки.
- Что такое программные фильтры (Software Filters)
- Что такое PID и Control Logic: логика управления
- Проблема шума
- Программные фильтры
- Как физически можно уменьшить шум
- Фильтры Betaflight
- Какие бывают фильтры у квадрокоптера
- Фильтры нижних частот
- Gyro LPF и D-Term LPF
- Частота фильтров низких частот
- PT1 / BIQUAD / FIR фильтры
- Отключение фильтра нижних частот
- Фильтр низких частот BQRCF2
- Фильтры Notch
- Динамический Notch фильтр (или фильтр DYNAMIC)
- Как отключить фильтры Notch
- Фильтр Калмана (Kalman Filter)
- Рекомендации по фильтрам в Betaflight
Что такое программные фильтры (Software Filters)
Чтобы настроить фильтры в квадрокоптере, нужно понимать и знать как они работают и что это такое. Но это не значит, что вам нужно выучить трансформации Фурье и другие математические функции, нет. Вам просто нужно знать, что произойдет, когда вы включите и настроите тот или иной фильтр.
Что такое PID и Control Logic: логика управления
Квадрокоптеры летают под управлением PID-контроллеров. PID — это пропорционально-интегрально-производный контроллер (с англ. Proportional-Integral-Derivative), это алгоритм, который считывает показания с гироскопа и управляет моторами в зависимости от показаний датчика. Например, ваш дрон находится в идеальном положении — 0 roll, 0 pitch и 0 yaw. Например, вы нажимаете стик ROLL влево до конца, подавая команду повернуться по оси и дрон с полным ходом влево будет крутиться со скоростью 540 градусов/сек влево. Вот тут-то PID и выполнит свою работу, рассчитав работу двигателей таким образом, чтобы дрон только повернулся по оси, но не наклонился в какую-либо другую сторону.
PID выполняет эти расчеты и разбивает действие на 3 компонента:
- Пропорциональная составляющая — P. Работает непосредственно для поворота и наклона квадрокоптера в плоскостях, добавляя дополнительный газ к двигателям 1 и 2 и уменьшая газ у двигателей 3 и 4.
- Интегральная составляющая — I. Эта составляющая обрабатывает показания — как быстро меняется положение квадрокоптера в пространстве. Например, вы дали полный поворот влево, но регулятор видит, что дрон поворачивается со скоростью 400 градусов, а не 540 как положено и в этот момент начинает корректировать двигатели, чтобы дрон начал поворачиваться со скоростью 540 градусов/сек.
- Производная составляющая — D. Этот компонент сопротивляется быстрому изменению ROLL. Компонент пытается сгладить нарастание и снижение скорости крена из-за команд P и D. Если хорошо настроить D, то он будет четко держать заданные (к примеру) 540 градусов/сек без перерегулирования.
Проблема шума
Основная проблема, с которой сталкиваются разработчики прошивок для квадрокоптеров — шумы с данными гироскопа. Гироскоп, который используется на дронах — это невероятно точный датчик, который записывает абсолютно все изменения в пространстве — крен, поворот, высота. Дальше по статье, поток информации вместе с шумом будет называться «сигнал». При построении графика, кривая сигнала будет с большим разбросом синусоидных волн — это и есть помехи, шум.
Общее описание первичных источников этих волн:
- Высокочастотные шумы вызваны вибрацией несбалансированных двигателей и пропеллеров на квадрокоптере и обычно находятся между 100Гц и 500Гц. Если проблема не слишком явная, вы, как правило, не будете знать, что у вас высокочастотный шум, пока не запишите логи в BlackBox.
- Среднечастотные шумы вызываются PID — регулятором, пилот ощущает это как вибрацию или подобное. Также, это заметно и на видео, оно немного будет вибрировать. Эти шумы находятся на отметках 5-100Гц.
- Низкочастотные шумы вызываются динамикой полета самого квадрокоптера. Например, если вы совершаете очень много поворотов и наклонов за короткое время. На графике это проявляется в виде сигнала частотой 1Гц.
Высокочастотные и низкочастотные шумы плохо влияют на PID’ы. Причина в том, что эти сигналы не вызваны динамикой полета самого квадрокоптера, но ПИД-регулятор будет пытаться исправить их, изменив значения газа и сделав их частью полета.
Компонент D у PID особо чувствителен к шуму. Поскольку он реагирует только на степень изменения данных гироскопа, большие наклоны, вызванные синусоидальными волнами, движущимися вверх и вниз, нарушают его. Раньше D-компонент просто уменьшали до минимума и он практически переставал играть роль в полете.
Проблема заключается в том, что основная ответственность компонента D заключается в том, чтобы противостоять вибрации пропеллеров, которые вызваны компонентом Р. Поэтому, если вы сильно уменьшите D, то получите вибрацию на пропеллеры. Поэтому, нужно более лучшее решение.
Программные фильтры
Программный фильтр — это алгоритм, который анализирует гирограмму (сигнал с шумом) со временем, находит образцы шума (синусоидальные волны) и пытается математически удалить их из фида.
Фильтры нужны для удаления высоко и -среднечасточных шумов до того, как сигнал передастся PID-контроллеру. Таким образом получится, что ПИД будет обрабатывать уже чистый сигнал и качество полета заметно улучшится, точнее поведение квадрокоптера улучшится.
Программные фильтры должны анализировать некоторый временной интервал данных гиросигнала, прежде чем они смогут реагировать на воспринимаемый шум. Это требование означает, что фильтры должны задерживать доставку данных гироскопа в ПИД-контроллер, пока они не смогут получить достаточное количество данных для их обработки. Задержка означает, что ваш PID реагирует на то, что квадрокоптер делал некоторое время назад, а не сейчас. Задержка это плохо.
В общем: у квадрокоптера должны быть программные фильтры с наименьшей задержкой обработки.
Как физически можно уменьшить шум
Самый лучший способ уменьшить вибрации от моторов — это поставить их на виброгасительные подушки или любой другой материал, которые будет гасить вибрации. Например, можно использовать простые резиновые шайбы на местах крепления моторов.Таким образом, получится убрать физически нижние частоты шума без дополнительной задержки программной обработки.
На данный момент, многие полетные контроллеры продаются вместе с резиновыми подушками, вот такие и рекомендуется использовать для моторов и для самих контроллеров.
Фильтры Betaflight
Теперь, когда у вас есть общее понятие о фильтрах и как они работают, давайте перейдем к рассмотрению конкретных фильтров в Betaflight.
Существует два основных типа фильтров:
фильтры нижних частот, их иногда называют LPF и Notch. Сложность добавляется, потому что разработчики Betaflight решили добавить два слоя фильтров LPF и Notch: один набор «основных» фильтров и вторичный набор, который выполняет дополнительную фильтрацию для данных, подаваемых на компонент «D» ПИД-регулятора.
Разработчики также добавили значительные параметры конфигурации в оба этих типа фильтров. Это включает в себя возможность установки программного алгоритма, который управляет фильтрами LPF, а также несколькой функций, таких как «динамический» фильтр Notch.
То, что нужно помнить, — это цель: мы хотим максимизировать подавление моторных шумов и минимизировать задержку, создаваемую фильтрами.
Какие бывают фильтры у квадрокоптера
Чтобы минимизировать шум и поддерживать максимальное количество сборок дронов, Betaflight имеет настраиваемый стак фильтра.
Стак — список фильтров.
Этот список включает в себя до 6 фильтров, работающих последовательно, после чего отправляют данные в PID-контроллер. Визуально, принцип работы стака фильтров будет выглядеть вот так:
Теперь давайте рассмотрим фильтры в отдельности.
Фильтры нижних частот
Цель низкочастотных фильтров состоит в том, чтобы уменьшить (или уменьшить) высокочастотные сигналы, оставив только низкочастотные сигналы. При настройке LPF вы обычно устанавливаете частотный «ворота». Все частоты ниже этих ворот игнорируются. Все частоты выше ворот затухают, причем более высокие частоты экспоненциально ослабевают. Чем выше частота сигнала, тем больше он ослабляется.
LPF отлично подходят для уменьшения широкой полосы шума в высокочастотной полосе. Тем не менее, им не хватает энергии, необходимой для удаления вибрации от моторов. В частности, на квадрокоптерах с жестко закрепленными полетными контроллерами или двигателями (или обоими) эти вибрации настолько интенсивны, что они легко пропускают большинство LPF. Именно там появляются фильтры Notch, о которых мы поговорим позже. Давайте взглянем на несколько различных алгоритмов, используемых для реализации LPF:
Gyro LPF и D-Term LPF
Betaflight использует два LPF в стеке фильтрации. Первый LPF применяется ко всем данным гироскопа и упоминается как «Gyro LPF». Как обсуждалось ранее, компонент «D» ПИД-регулятора гораздо более чувствителен к шуму, чем другие компоненты, поэтому разработчики Betaflight дали нам возможность добавить дополнительный LPF для данных, которые подаются на контроллер D. Этот второй фильтр может быть более жестким, но задержка, добавленная этой жесткостью, будет добавлена только к D-компоненту ПИД-регулятора и намного менее заметна.
Частота фильтров низких частот
Частота работы LPF — это переменная, описанная выше. Сигналы ниже этого значения игнорируются LPF. Сигналы над ним ослаблены. Эти «ворота» настраиваются в разделе «Filter Settings» на вкладке «PID Tuning» в Betaflight Configurator:
Обычному пилоту не рекомендуется самому настраивать этот фильтр, так как он уже хорошо настроен командой Betaflight.
PT1 / BIQUAD / FIR фильтры
Существует несколько способов программирования фильтра нижних частот в коде. В настоящее время Betaflight поддерживает 3 «стандартных» алгоритма LPF: PT1, BIQUAD и FIR. У каждого алгоритма есть свое уникальное поведение с точки зрения подавления шума и задержки, которую он добавляет. В общем, большинство пилотов либо выбирают фильтры BIQUAD, либо PT1. PT1 имеет самую низкую задержку, поэтому он лучше всего работает, в то время как BIQUAD имеет лучшее подавление шума и должен использоваться на квадрокоптерах с большим шумом.
В Betaflight Configurator даже нет опции для настройки того, какой алгоритм фильтрации используется в Gyro LPF. Это связано с тем, что по умолчанию установлено высокопроизводительное PT1, и разработчики решили, что большинство пилотов не будут нуждаться в дополнительной фильтрации другими алгоритмами. Однако алгоритм фильтра, используемого гироскопом LPF, можно настроить, установив параметр «gyro_lowpass_type» в CLI.
D-Term LPF можно настроить. Он находится в разделе «Filter Settings» во вкладке «PID Tuning»:
По умолчанию он настроен на более жесткий алгоритм BIQUAD LPF. Многие пилоты сообщают о значительном выигрыше в производительности, переключив эту настройку на алгоритм PT1.
Отключение фильтра нижних частот
У фильтров LPF нет «включения / выключения» в Betaflight. Вместо этого вы можете отключить фильтр, установив частоту обновления соответствующего фильтра LPF на 0.
Фильтр низких частот BQRCF2
Разработчики Betaflight добавили «секретный» фильтр нижних частот в Betaflight 3.3, который называется «BQRCF2». Он похож на PT1 / BIQUAD / FIR, поскольку это еще один алгоритм, который может достичь результатов, подобных LPF. Главным преимуществом этого является то, что он еще больше уменьшает задержку с помощью алгоритма PT1. Вы можете включить фильтр BQRCF2, установив опцию CLI «gyro_stage2_lowpass_hz». Мы рекомендуем установить его на 90, а частоту обновления гироскопа LPF по умолчанию. Если вы это сделаете, убедитесь, что вы отключили Gyro LPF, чтобы реализовать все преимущества фильтра.
Фильтры Notch
Целью Notch фильтров является применение большого уменьшения (ослабления) к определенной полосе частот сигнала. Термин «Notch» описывает форму кривой затухания, применяемой к сигналу: большое значение затухания на центральной частоте с уменьшенным затуханием, движущимся наружу.
Фильтры Notch были добавлены в Betaflight по одной причине: применить значительное, целенаправленное снижение шума от двигателей. Поскольку шум двигателей обычно находится в ограниченной полосе частот, которая не имеет отношения к фактическим (низким) частотам фактического полета, такой фильтр — идеальный способ избавиться от него.
В Betaflight обычно используют 4 разных фильтра:
- Два фильтра гироскопа. Это позволит вам самостоятельно уменьшать шум в двух частотах сигнала. Для большинства квадрокоптеров требуется только один из них. Параметры Betaflight по умолчанию настроены с включенными фильтрами Notch с частотой 200 Гц и 400 Гц, что позволяет ослаблять почти всю полосу, где у 99% квадрокоптеров есть шум двигателей. Это довольно неэффективная настройка, которая может быть улучшена за счет правильной настройки одного фильтра Notch и отключения другого.
- Данные для компонента PID — D — обрабатывает фильтр Notch, он похож на фильтр D-term LPF.
- Есть динамический Notch фильтр (DYNAMIC filter), о нем будет ниже.
Динамический Notch фильтр (или фильтр DYNAMIC)
Динамический Notch фильтр стал хорошим улучшением для Betaflight, который был представлен в версии 3.2. Динамический фильтр — программный алгоритм, который непрерывно анализирует данные с гироскопа и находит пиковый шумовой сигнал в спектре 200-400 Гц. Затем он центрирует нормальный Notch фильтр при этом пиковом шуме. Проще говоря, он точно определяет, где находится шум двигателей и избавляется от него прямо в процессе полета. Настройка не требуется.
Динамический фильтр полностью устраняет необходимость в двух фильтрах гироскопа. Он делает свою работу в таком случае даже лучше. Вот почему мы рекомендуем всем пилотам включить динамический фильтр и отключить фильтры Notch.
Динамический фильтр настраивается в Betaflight Configurator: он отображается как «feature» на вкладке «Configuration»:
Как отключить фильтры Notch
Опытные пилоты вообще не рекомендуют настраивать фильтры Notch. Ручная настройка все равно не будет такой же эффективной, как включение динамического фильтра.
Фильтр Калмана (Kalman Filter)
Фильтр Kalmana — это продвинутый алгоритм, в котором вместо анализа используется предсказание для подавления будущего возникающего шума. Например, фильтр Калмана сделает вывод, если квадрокоптер будет генерировать шум на частоте 123,59 Гц в течение последних нескольких секунд, он будет продолжит фильтровать этот шум в течение следующей миллисекунды. Ему не требуется анализировать данные с гироскопа, поэтому задержка будет минимальной.
Этот алгоритм дает заметное улучшение, только если полетный контроллер будет работать на частоте 32 кГц. Это очень сложный алгоритм, который потребляет много мощности процессора, а это значит, что вам нужно разгонять большинство полетников на F4.
Фильтр Kalman был некоторое время в бета версии Betaflight 3.3, но в конечном итоге был удален командой разработчиков, которая решила, что фильтр BQRCF2 является более лучшей заменой. Но этот фильтр теперь есть в прошивке Butterflight.
Рекомендации по фильтрам в Betaflight
При настройке фильтров квадрокоптера (прошивки) главная цель — отключить максимальное количество фильтров, но одновременно не испортив полетные характеристики, т.е. не влияя отрицательно на PID\перегрев двигателей и компонентов. Начинать нужно с изменения настроек по-умолчанию. Ниже список рекомендаций.
Вы должны понимать последствия недостаточной фильтрации сигнала. Или наоборот, двигатели «вялыми» при слишком сильной фильтрации. Например, высокочастотные нагрузки нефильтрованного сигнала с гироскопа, которые будут передаваться в PID, приведут к тому, что двигатели буду перегреваться и работать с большой нагрузкой даже в режиме спокойного полета.
Фильтры нужно отключать или настраивать по одному, затем пробовать летать в течение 15-20 сек, а после посадки контролировать температуру двигателей!
Если двигатели горячие, верните настройку в исходное положение и перейдите к другому фильтру.
Как уже писали выше, рекомендуем начать с настроек по-умолчанию:
- Включите динамический Notch фильтр:
- Отключите два этих notch фильтра:
- Отключите notch фильтр D-term:
- Выберите PT1 в D-Term LPF:
- Включите BQRCF2 Gyro LP в командной строке:
- Отключите Gyro LPF:
Если вы выполните все эти шаги и у вас не будут греться моторы — то вы получите квадрокоптер с очень хорошими летными характеристиками, начиная с версии Betaflight 3.3 — это лучшие настойки фильтров.
Можно даже ограничиться только динамическим фильтром, отключив фильтры notch — результат уже будет хорошим.