Releases · betaflight/betaflight · GitHub

Releases · betaflight/betaflight · GitHub Квадрокоптеры

Что такое 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 градусов/сек без перерегулирования.
Смотрите про коптеры:  Phantom 3 SE – Центр загрузкок – DJI
Схема работы PID-контроллера
Схема работы PID-контроллера

Что такое программные фильтры (software filters)

Чтобы настроить фильтры в квадрокоптере, нужно понимать и знать как они работают и что это такое. Но это не значит, что вам нужно выучить трансформации Фурье и другие математические функции, нет. Вам просто нужно знать, что произойдет, когда вы включите и настроите тот или иной фильтр.

– home

Betaflight supports a wide range of flight controllers that have at least an STM32F4 Processor. The Betaflight Configurator runs on Windows, Mac OS, Linux, and Android.

The Betaflight Firmware supports the majority of Remote Control manufacturers such as FrSky, Graupner, Spektrum, DJI and FlySky. ESCs are controlled using a variety of available protocols including PWM, OneShot, MultiShot, DShot or even ProShot.

Even the less-related components do not remain untouched, with Betaflight allowing the control of many VTX and Camera settings directly from the flight controller.

Credits:

– Firmware PR management – Mikeller- Configurator and Blackbox – Haslinghuis, Limon, Asizon, ctzsnooze, McGiverGim, Mikeller, Blckmn- Presets – Limon, Mikeller, ctzsnooze- Sliders – Haslinghuis, UAVTech/spatzengr, IllusionFPV, Asizon, ctzsnooze- Looptime, scheduler, DMA, Gyro EXTI, improved logging and OSD efficiency – Steve C Evans, many massive PR’s :-)- Multi dynamic SDFT notch, filters – Karatebrot #10554- RPM crossfading – Karatebrot #10757- RC smoothing – ctzsnooze #10629, #10650- Feedforward jitter reduction – ctzsnooze #10670- Feedforward smoothing – ctzsnooze – #10164- Antigravity – ctzsnooze #10163- Expo on Gyro LPF – IllusionFPV #10239- Linear and Dynamic mixer options – TylerCorleone, BorisB #10370- Dynamic idle improvements – ctzsnooze #10294- Configurator brilliance – Haslinghuis, McGiverGim, Asizon- LUA Script – klutvott123, kristjanbjarni, codecae- Feedforward in level and horizon – ctzsnooze #10778- PT2 and PT2 lowpass filter options – ctzsnooze #10727- RC Link improvements – TBS #10675, Stepan Dalecky #10801- default to Actual rates – ctzsnooze #10724- 4.

3 Tuning Notes – ctzsnooze, editing by SupaflyFPV- Bugfixes – lots of people!- Keeping everyone and everything on track – blckmn, mikeller- Vue implementation and chore improvements – tomche- Android integration – walcofpv- Encouragement and testing – Brian White, James, SugarK, Cory Ibanez, Tehllama42, SupaflyFPV, UAVTech, QuadMcFly, Limon, bizmar, and so many others : thank you!

Gyro lpf и d-term lpf

Betaflight использует два LPF в стеке фильтрации. Первый LPF применяется ко всем данным гироскопа и упоминается как «Gyro LPF». Как обсуждалось ранее, компонент «D» ПИД-регулятора гораздо более чувствителен к шуму, чем другие компоненты, поэтому разработчики Betaflight дали нам возможность добавить дополнительный LPF для данных, которые подаются на контроллер D.

Pt1 / biquad / fir фильтры

Существует несколько способов программирования фильтра нижних частот в коде. В настоящее время Betaflight поддерживает 3 «стандартных» алгоритма LPF: PT1, BIQUAD и FIR. У каждого алгоритма есть свое уникальное поведение с точки зрения подавления шума и задержки, которую он добавляет.

В Betaflight Configurator даже нет опции для настройки того, какой алгоритм фильтрации используется в Gyro LPF. Это связано с тем, что по умолчанию установлено высокопроизводительное PT1, и разработчики решили, что большинство пилотов не будут нуждаться в дополнительной фильтрации другими алгоритмами. Однако алгоритм фильтра, используемого гироскопом LPF, можно настроить, установив параметр «gyro_lowpass_type» в CLI.

D-Term LPF можно настроить. Он находится в разделе «Filter Settings» во вкладке «PID Tuning»:

По умолчанию он настроен на более жесткий алгоритм BIQUAD LPF. Многие пилоты сообщают о значительном выигрыше в производительности, переключив эту настройку на алгоритм PT1.

Target updates:

  • Fixed target YUPIF7 (6271).

Динамический notch фильтр (или фильтр dynamic)

Динамический Notch фильтр стал хорошим улучшением для Betaflight, который был представлен в версии 3.2. Динамический фильтр — программный алгоритм, который непрерывно анализирует данные с гироскопа и находит пиковый шумовой сигнал в спектре 200-400 Гц.

Динамический фильтр полностью устраняет необходимость в двух фильтрах гироскопа. Он делает свою работу в таком случае даже лучше. Вот почему мы рекомендуем всем пилотам включить динамический фильтр и отключить фильтры Notch.

Динамический фильтр настраивается в Betaflight Configurator: он отображается как «feature» на вкладке «Configuration»:

Другие нововведения

Начиная с версии Betaflight 4.0, производителям будет легче массово устанавливать прошивку в свои полетные контроллеры. Это достигнуто с помощью технологии Unified Targets, так называемая «единая прошивка для всех полетных контроллеров».  Эта технология, после того, как ее добавят в конфигуратор, позволит производителям делать прошивку для любого количества плат (имеется в виду для разных полетных контроллеров) или RTF наборов.

Как отключить фильтры notch

Опытные пилоты вообще не рекомендуют настраивать фильтры Notch. Ручная настройка все равно не  будет такой же эффективной, как включение динамического фильтра.

Как физически можно уменьшить шум

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

На данный момент, многие полетные контроллеры продаются вместе с резиновыми подушками, вот такие и рекомендуется использовать для моторов и для самих контроллеров.

Какие бывают фильтры у квадрокоптера

Чтобы минимизировать шум и поддерживать максимальное количество сборок дронов, Betaflight имеет настраиваемый стак фильтра.

Стак — список фильтров.

Этот список включает в себя до 6 фильтров, работающих последовательно, после чего отправляют данные в PID-контроллер. Визуально, принцип работы стака фильтров будет выглядеть вот так:

Теперь давайте рассмотрим фильтры в отдельности.

Отключение фильтра нижних частот

У фильтров LPF нет «включения / выключения» в Betaflight. Вместо этого вы можете отключить фильтр, установив частоту обновления соответствующего фильтра LPF на 0.

Проблема шума

Основная проблема, с которой сталкиваются разработчики прошивок для квадрокоптеров — шумы с данными гироскопа. Гироскоп, который используется на дронах — это невероятно точный датчик, который записывает абсолютно все изменения в пространстве — крен, поворот, высота.

Общее описание первичных источников этих волн:

  • Высокочастотные шумы вызваны вибрацией несбалансированных двигателей и пропеллеров на квадрокоптере и обычно находятся между 100Гц и 500Гц. Если проблема не слишком явная, вы, как правило, не будете знать, что у вас высокочастотный шум, пока не запишите логи в BlackBox.
  • Среднечастотные шумы вызываются PID — регулятором, пилот ощущает это как вибрацию или подобное. Также, это заметно и на видео, оно немного будет вибрировать. Эти шумы находятся на отметках 5-100Гц.
  • Низкочастотные шумы вызываются динамикой полета самого квадрокоптера. Например, если вы совершаете очень много поворотов и наклонов за короткое время. На графике это проявляется в виде сигнала частотой 1Гц.

Высокочастотные и низкочастотные шумы плохо влияют на PID’ы. Причина в том, что эти сигналы не вызваны динамикой полета самого квадрокоптера, но ПИД-регулятор будет пытаться исправить их, изменив значения газа и сделав их частью полета.

Компонент D у PID особо чувствителен к шуму. Поскольку он реагирует только на степень изменения данных гироскопа, большие наклоны, вызванные синусоидальными волнами, движущимися вверх и вниз, нарушают его. Раньше D-компонент просто уменьшали до минимума и он практически переставал играть роль в полете.

Проблема заключается в том, что основная ответственность компонента D заключается в том, чтобы противостоять вибрации пропеллеров, которые вызваны компонентом Р. Поэтому, если вы сильно уменьшите D, то получите вибрацию на пропеллеры. Поэтому, нужно более лучшее решение.

Программные фильтры

Программный фильтр — это алгоритм, который анализирует гирограмму (сигнал с шумом) со временем, находит образцы шума (синусоидальные волны) и пытается математически удалить их из фида.

Фильтры нужны для удаления высоко и -среднечасточных шумов до того, как сигнал передастся PID-контроллеру. Таким образом получится, что ПИД будет обрабатывать уже чистый сигнал и качество полета заметно улучшится, точнее поведение квадрокоптера улучшится.

Программные фильтры должны анализировать некоторый временной интервал данных гиросигнала, прежде чем они смогут реагировать на воспринимаемый шум. Это требование означает, что фильтры должны задерживать доставку данных гироскопа в ПИД-контроллер, пока они не смогут получить достаточное количество данных для их обработки.

В общем: у квадрокоптера должны быть программные фильтры с наименьшей задержкой обработки.

Рекомендации по фильтрам в betaflight

При настройке фильтров квадрокоптера (прошивки) главная цель — отключить максимальное количество фильтров, но одновременно не испортив полетные характеристики, т.е. не влияя отрицательно на PIDперегрев двигателей и компонентов. Начинать нужно с изменения настроек по-умолчанию. Ниже список рекомендаций.

Вы должны понимать последствия недостаточной фильтрации сигнала. Или наоборот, двигатели «вялыми» при слишком сильной фильтрации. Например, высокочастотные нагрузки  нефильтрованного сигнала с гироскопа, которые будут передаваться в PID, приведут к тому, что двигатели буду перегреваться и работать с большой нагрузкой даже в режиме спокойного полета.

Фильтры нужно отключать или настраивать по одному, затем пробовать летать в течение 15-20 сек, а после посадки контролировать температуру двигателей!

Если двигатели горячие, верните настройку в исходное положение и перейдите к другому фильтру.

Как уже писали выше, рекомендуем начать с настроек по-умолчанию:

  1. Включите динамический Notch фильтр:
    Динамический фильтр
  2. Отключите два этих notch фильтра:
    отключение notch фильтров
  3. Отключите notch фильтр D-term:
    Отключение d-term
  4. Выберите PT1 в D-Term LPF:
    pt1 в d-term
  5. Включите BQRCF2 Gyro LP в командной строке:
    включение LPF
  6. Отключите Gyro LPF:
    LPF

Если вы выполните все эти шаги и у вас не будут греться моторы — то вы получите квадрокоптер с очень хорошими летными характеристиками, начиная с версии Betaflight 3.3 — это лучшие настойки фильтров.

Можно даже ограничиться только динамическим фильтром, отключив фильтры notch — результат уже будет хорошим.

Телеметрия: обороты двигателей в реальном времени и обновленный notch-фильтр

Betaflight 4.0 представили обратную связь RPM (обороты) регуляторов оборотов (ESC) в реальном времени, а также добавили фильтрацию NOTCH (это такой фильтр) на основе оборотов двигателей. Эти обновления стали доступны благодаря недавно разработанному двунаправленному протоколу DSHOT.

Не поняли, что написано выше? Добавлена функция, которая позволяет полетному контроллеру получать по телеметрии данные оборотов двигателей в реальном времени, по сигнальному кабелю. Таким образом, используются только базовые провода, не надо паять дополнительную проводку для этой телеметрии.

Каждый сигнал по протоколу DSHOT от полетного контроллера подтверждается и сравнивается регулятором оборотов, содержащего текущее значение eRPM (еОбороты) и вы получаете верное показание оборотов двигателей на своем экране. Но если вы не паяли сигнальный кабель к полетному контроллеру от ESC, либо такое не предусмотрено вашим ПК, то эти данные вы не сможете получить.

RPM-фильтр (фильтр оборотов) представляет из себя набор из 36 notch-фильтров на гироскопе и и Dterm. RPM-фильтр использует эти данные телеметрии для реализации фильтра harmonic, который убирает с большой точностью шумы двигателей.

Двунаправленный DSHOT поддерживается BLHeli_32, но требуется обновление прошивки до последней версии:

Фильтр калмана (kalman filter)

Фильтр Kalmana — это продвинутый алгоритм, в котором вместо анализа используется предсказание для подавления будущего возникающего шума. Например, фильтр Калмана сделает вывод, если квадрокоптер будет генерировать шум на частоте 123,59 Гц в течение последних нескольких секунд, он будет продолжит фильтровать этот шум в течение следующей миллисекунды. Ему не требуется анализировать данные с гироскопа, поэтому задержка будет минимальной.

Этот алгоритм дает заметное улучшение, только если полетный контроллер будет работать на частоте 32 кГц. Это очень сложный алгоритм, который потребляет много мощности процессора, а это значит, что вам нужно разгонять большинство полетников на F4.

Фильтр Kalman был некоторое время в бета версии Betaflight 3.3, но в конечном итоге был удален командой разработчиков, которая решила, что фильтр BQRCF2 является более лучшей заменой. Но этот фильтр теперь есть в прошивке Butterflight.

Фильтр низких частот bqrcf2

Разработчики Betaflight добавили «секретный» фильтр нижних частот в Betaflight 3.3, который называется «BQRCF2». Он похож на PT1 / BIQUAD / FIR, поскольку это еще один алгоритм, который может достичь результатов, подобных LPF. Главным преимуществом этого является то, что он еще больше уменьшает задержку с помощью алгоритма PT1.

Вы можете включить фильтр BQRCF2, установив опцию CLI «gyro_stage2_lowpass_hz». Мы рекомендуем установить его на 90, а частоту обновления гироскопа LPF по умолчанию. Если вы это сделаете, убедитесь, что вы отключили Gyro LPF, чтобы реализовать все преимущества фильтра.

Фильтры betaflight

Теперь, когда у вас есть общее понятие о фильтрах и как они работают, давайте перейдем к рассмотрению конкретных фильтров в Betaflight.

Существует два основных типа фильтров:

фильтры нижних частот, их иногда называют LPF и Notch. Сложность добавляется, потому что разработчики Betaflight решили добавить два слоя фильтров LPF и Notch: один набор «основных» фильтров и вторичный набор, который выполняет дополнительную фильтрацию для данных, подаваемых на компонент «D» ПИД-регулятора.

Разработчики также добавили значительные параметры конфигурации в оба этих типа фильтров. Это включает в себя возможность установки программного алгоритма, который управляет фильтрами LPF, а также несколькой функций, таких как «динамический» фильтр Notch.

То, что нужно помнить, — это цель: мы хотим максимизировать подавление моторных шумов и минимизировать задержку, создаваемую фильтрами.

Фильтры notch

Целью Notch фильтров является применение большого уменьшения (ослабления) к определенной полосе частот сигнала. Термин «Notch» описывает форму кривой затухания, применяемой к сигналу: большое значение затухания на центральной частоте с уменьшенным затуханием, движущимся наружу.

Фильтры Notch были добавлены в Betaflight по одной причине: применить значительное, целенаправленное снижение шума от двигателей. Поскольку шум двигателей обычно находится в ограниченной полосе частот, которая не имеет отношения к фактическим (низким) частотам фактического полета, такой фильтр — идеальный способ избавиться от него.

В Betaflight обычно используют 4 разных фильтра:

  1. Два фильтра гироскопа. Это позволит вам самостоятельно уменьшать шум в двух частотах сигнала. Для большинства квадрокоптеров требуется только один из них. Параметры Betaflight по умолчанию настроены с включенными фильтрами Notch с частотой 200 Гц и 400 Гц, что позволяет ослаблять почти всю полосу, где у 99% квадрокоптеров есть шум двигателей. Это довольно неэффективная настройка, которая может быть улучшена за счет правильной настройки одного фильтра Notch и отключения другого.
  2. Данные для компонента PID — D — обрабатывает фильтр Notch, он похож на фильтр D-term LPF.
  3. Есть динамический Notch фильтр (DYNAMIC filter), о нем будет ниже.

Фильтры нижних частот

Цель низкочастотных фильтров состоит в том, чтобы уменьшить (или уменьшить) высокочастотные сигналы, оставив только низкочастотные сигналы. При настройке LPF вы обычно устанавливаете частотный «ворота». Все частоты ниже этих ворот игнорируются. Все частоты выше ворот затухают, причем более высокие частоты экспоненциально ослабевают. Чем выше частота сигнала, тем больше он ослабляется.

LPF отлично подходят для уменьшения широкой полосы шума в высокочастотной полосе. Тем не менее, им не хватает энергии, необходимой для удаления вибрации от моторов. В частности, на квадрокоптерах с жестко закрепленными полетными контроллерами или двигателями (или обоими) эти вибрации настолько интенсивны, что они легко пропускают большинство LPF.

Фильтры: динамические фильтры гироскопа и d-term

В Betaflight 4.0 обновлены динамические фильтры гироскопа и D-Term, а также добавлена возможность управлять фильтром D-Term. Теперь D-Term будет работать так: D сокращается на определенный процент при нормальном полете и плавно возвращается в исходное состоянии при быстрых ускорениях (по сигналу гироскопа) — при различных переворачиваниях.

Функции: переключение между профилями osd и положение стиков на экране

Теперь вы сможете создавать несколько профилей OSD и переключаться между ними. Раньше (для тех, кто не знает), можно было только создать одну настройку и пользоваться ей, в противном случае — создавать новую. Теперь, вы сможете переключаться между ними в полете. Это нужно для различных стилей полета и случаев.

В OSD появился новый параметр «Stick Overlay», с помощью которого можно выводить на экран текущее положение стиков. Для использования, необходимо обновить шрифты OSD с помощью конфигуратора последней версии — 10.5.0 или новее.

Функция: контроль старта (launch control)

Также, появилась новая функция — Контроль старта (Launch control adds). Функция обеспечивает дополнительным контролем момент старта — поможет дрону (пилоту) при старте лететь вперед, то есть, удерживать положение дрона для наиболее эффективного старта.

Как запустить функцию Контроль старта (Launch control adds)?

  • Включаем режим Launch Control;
  • Армимся (снимаем дрон с охраны);
  • Стик газа доводим до минимума;
  • Набираем угол наклона стиком (поднимаем аккуратно ввверх);
  • Возвращаем стик в исходное положение;
  • Даем газ и летим.

Видео, как это работает:

Частота фильтров низких частот

Частота работы LPF — это переменная, описанная выше. Сигналы ниже этого значения игнорируются LPF. Сигналы над ним ослаблены. Эти «ворота» настраиваются в разделе «Filter Settings» на вкладке «PID Tuning» в Betaflight Configurator:

Обычному пилоту не рекомендуется самому настраивать этот фильтр, так как он уже хорошо настроен командой Betaflight.

Оцените статью
Радиокоптер.ру
Добавить комментарий