Перейти к содержимому
Betaflight 4.2 и 4.3: Краткая информация по настройке

Betaflight 4.2 и 4.3: Краткая информация по настройке

28 сентября 2026
Пилоту БПЛА | Технику БПЛА | Хобби

В этой статье объединены два документа: заметки по настройке Betaflight 4.2 и заметки по настройке Betaflight 4.3.

Термины и сокращения

Термин или сокращениеЗначение
PID пропорционально-интегрально-дифференциальный регулятор; далее по тексту — регуляторы PID
CLI командная строка (интерфейс ввода команд)
OSD экранное меню, отображение данных поверх видеосигнала
ESC электронный регулятор хода двигателя
RPM-фильтр фильтр шумов, построенный на измеренной частоте вращения двигателей
eRPM электрическая частота вращения, используемая для синхронизации фильтров
Feed forward (FF) упреждающее звено регулятора, реагирующее на движение органов управления
Setpoint уставка, заданное значение угловой скорости
Rates настройки чувствительности и максимальных угловых скоростей
TPA ослабление коэффициентов PID на высоком газе
DShot цифровой протокол управления регуляторами хода
CRSF, ELRS, Crossfire, Ghost протоколы связи с приёмником аппаратуры управления
Пропвош влияние потока воздуха от воздушных винтов на устойчивость аппарата
Джиттер высокочастотные случайные колебания сигнала
Пресет готовый набор команд настройки
Слайдер элемент интерфейса настройки в Configurator

Часть 1. Betaflight 4.2 — заметки по настройке

Новые возможности Betaflight 4.2

В Betaflight 4.2 реализованы:

  • Более точные времена цикла (loop times) — улучшенная работа RPM-фильтра.
  • Улучшенный Feed Forward — более плавный полёт, плюс готовые наборы команд настройки для оптимизации параметров усреднения и сглаживания — от гоночных задач до кинематографичной съёмки.
  • Динамическая экспо-кривая D-фильтра — улучшение пропвоша (propwash) за счёт более быстрого повышения частоты среза D-фильтра по мере роста газа.
  • Динамическая компенсация просадки батареи (battery sag compensation) — стабильные отзывчивость газа и ощущение PID на протяжении всего полёта.
  • Новые режимы rates — более интуитивная настройка действительно важных параметров и возможности сверхнизкого expo для гонок и съёмки.
  • Улучшенный динамический notch-фильтр — лучшее подавление шумов, упрощённая настройка минимального и максимального значений.
  • Автоматическая настройка анти-йоу-спин (anti-yaw spin) — вращение по yaw останавливается быстрее.
  • Усиление AntiGravity, не зависящее от значений I — если вы измените I, сила эффекта антигравитации не изменится.
  • Более простая и качественная RC-смузинг — тщательная оптимизация метода автосглаживания по умолчанию означает, что ручное сглаживание почти никогда не потребуется.
  • Iterm Relax корректно работает в режиме setpoint — исправлена ошибка версий 4.0 и 4.1, из-за которого снижение cutoff в режиме setpoint давало очень мало. Теперь, когда режим setpoint работает корректно, пользователям, которые перешли на режим gyro, стоит вернуться к setpoint. Значение по умолчанию iterm_relax_cutoff снижено до 15, чтобы лучше подавлять отскок на квадрокоптерах с низкой управляемостью.
  • NFE Race Mode — интересный режим полёта: acro по pitch, самовыравнивание по roll.
  • Configurator 10.7 — множество улучшений, в частности корректное графическое отображение разных типов rates.
  • Улучшения OSD — логотип теперь можно показывать ненадолго при каждой разблокировке двигателей; CRSF отображает и режим, и уровень сигнала; добавлены рамка камеры, расстояние от точки старта и эффективность.

4.2 должна отлично летать на настройках по умолчанию, без модификаций, на большинстве квадрокоптеров. Если вы знаете, что вашему квадрокоптеру требуются особые, нестандартные PID — проведите повторную настройку, потому что с новыми возможностями 4.2 вы можете получить ещё лучший результат с другими PID. Например, если вам хотелось добавить больше D, но мешал шум, теперь это может быть возможно.

Некоторые квадрокоптеры с низкой управляемостью (маломощные аппараты микрокласса, HD-аппараты микрокласса в защитных кожухах, квадрокоптеры 7 дюймов и крупнее, сборки для длительных полётов и тому подобное) могут требовать специфических настроек, чтобы минимизировать отскок (bounce-back).

Если вы новичок в 4.2, прочитайте также заметки по настройке 4.0 и 4.1.

Configurator версии 10.7 или новее обязателен. Скачать его можно из раздела Configurator Releases. Более ранние версии не будут работать корректно.

Примечание 1. НЕ вставляйте вывод команд diff или dump из любой предыдущей сборки в CLI версии 4.2. Рекомендуется с помощью слайдеров приблизительно воспроизвести прежние значения PID и настроек фильтров: это упростит дальнейшее использование слайдеров.

Примечание 2. Если ранее вы устанавливали dyn_notch_range в LOW, измените dyn_notch_max_hz на 350, а для HIGH — на 700. В остальных случаях значение 500 по умолчанию подходит для большинства квадрокоптеров. Подробнее о настройке диапазона читайте здесь.

Примечание 3. Если ваши прежние значения PID I отличались от используемых по умолчанию, значения усиления anti-gravity в 4.2, возможно, придётся немного изменить, чтобы получить тот же результат. Мы рекомендуем выполнить полёт со значением anti-gravity по умолчанию и затем подобрать оптимальное значение. Подробности здесь.

Примечание 4. Если используется акселерометр, разблокировка двигателей не пройдёт, пока он не откалиброван.

Примечание 5. Мы рекомендуем использовать фильтрацию на основе eRPM. О включении и настройке RPM-фильтрации читайте здесь.

Быстрые настройки (Quick settings)

Приведённые ниже наборы команд — это предложения о том, как некоторые из менее распространённых параметров можно подстроить под определённый тип полётов. Значения по умолчанию должны подойти для быстрого фристайла и общих гоночных задач. Гарантировать их оптимальность для конкретного квадрокоптера нельзя; они не включают настройку PID и значения фильтров, но показывают примерные диапазоны значений.

ProRace

*(агрессивный feed forward, требует действительно чистого RC-сигнала, иначе возможен джиттер от ступенек RC и перегрев двигателей)*

set iterm_relax_cutoff = 30
set rc_smoothing_auto_smoothness = 5
set ff_interpolate_sp = ON
set ff_smooth_factor = 0
set ff_spike_limit = 60
set ff_boost = 20
set feedforward_transition = 0
set yaw_lowpass_hz = 100
set throttle_boost = 7
set throttle_boost_cutoff = 25
set dyn_lpf_dterm_curve_expo = 7
set gyro_rpm_notch_q = 600

(включите компенсацию просадки, настолько высокую, насколько вам подходит, а также D expo)

Race и Fast Freestyle

*(сильный feed forward, переносит типичный RC-сигнал, очень отзывчиво)*

set iterm_relax_cutoff = 20
set rc_smoothing_auto_smoothness = 7
set ff_interpolate_sp = AVERAGED_2
set ff_smooth_factor = 20
set ff_spike_limit = 70
set ff_boost = 15
set feedforward_transition = 0
set yaw_lowpass_hz = 100
set throttle_boost = 7
set throttle_boost_cutoff = 25
set dyn_lpf_dterm_curve_expo = 7
set gyro_rpm_notch_q = 700

HD

*(сглаженный FF для HD-камер, сильная плавность на низких угловых скоростях, низкий iterm relax для минимизации отскока)*

set iterm_relax_cutoff = 10
set rc_smoothing_auto_smoothness = 20
set ff_interpolate_sp = AVERAGED_3
set ff_smooth_factor = 40
set ff_spike_limit = 55
set ff_boost = 0
set feedforward_transition = 40
set yaw_lowpass_hz = 70
set throttle_boost = 5
set throttle_boost_cutoff = 10
set dyn_lpf_dterm_curve_expo = 7
set gyro_rpm_notch_q = 800

Cinematic

*(только для медленных плавных разворотов; в остальных случаях может ощущаться вяло)*

set iterm_relax_cutoff = 5
set rc_smoothing_auto_smoothness = 40
set ff_interpolate_sp = AVERAGED_4
set ff_smooth_factor = 50
set ff_spike_limit = 50
set ff_boost = 0
set feedforward_transition = 70
set yaw_lowpass_hz = 50
set throttle_boost = 2
set throttle_boost_cutoff = 10
set dyn_lpf_dterm_curve_expo = 8
set gyro_rpm_notch_q = 900
set iterm_windup = 75

Следующие рекомендации по настройке могут помочь свести к минимуму незначительные случайные покачивания в HD-видео:

  • отключите D_min;
  • установите D примерно на 20 % выше P, используя слайдер соотношения P к D;
  • настройте TPA только на D, чтобы он начинался с вашего крейсерского значения газа, и немного увеличьте процент среза;
  • установите значение expo для D-фильтра низких частот как можно выше (ограничением будет шум по D на среднем газу); с возросшим D вам, возможно, потребуется больше фильтрации D, например 2 щелчка влево по слайдеру D-фильтра;
  • используйте примерно на 20 % меньше P, чем в вашей обычной фристайл-настройке, — ровно столько, чтобы обеспечить базовую стабильность по P;
  • и примерно половину значения по умолчанию I по pitch и roll;
  • высокий feedforward transition, например 0,7;
  • убедитесь, что в аппаратных настройках OpenTx не отмечен пункт ADC;
  • используйте Actual Rates со значением центра 10–50, expo 0 и вашей обычной максимальной скоростью. Actual с нулевым expo даёт мягкий центр и более быстрое возвращение к нормальной отзывчивости за пределами центра. Transition или deadband могут не потребоваться, когда чувствительность в центре очень низкая.

При нестабильности на нулевом газе:

  • вернитесь к PWM 24 кГц, если вы установили ESC на 48 кГц;
  • постепенно повышайте DShot idle, пока квадрокоптер не начнёт неустойчиво парить, и правильно настройте dynamic idle;
  • попробуйте thrust linear = 25;
  • попробуйте отключить Dmin и немного поднять общие PID.

Возврат к значениям по умолчанию (нулевые значения означают «выключено»)

set iterm_relax_cutoff = 15
set rc_smoothing_auto_smoothness = 10
set ff_interpolate_sp = AVERAGED_2
set ff_smooth_factor = 37
set ff_spike_limit = 60
set ff_boost = 15
set feedforward_transition = 0
set yaw_lowpass_hz = 0
set throttle_boost = 5
set throttle_boost_cutoff = 15
set dyn_lpf_dterm_curve_expo = 5
set gyro_rpm_notch_q = 500
set iterm_windup = 100

Чтобы включить все остальные рекомендованные новые функции одним разом:

set dyn_lpf_dterm_curve_expo = 6
set vbat_sag_compensation = 100
set vbat_pid_gain = OFF
set rc_smoothing_type = FILTER
set rc_smoothing_input_hz = 0
set rc_smoothing_derivative_hz = 0
set rc_smoothing_input_type = BIQUAD
set rc_smoothing_derivative_type = PT1
set rc_smoothing_auto_smoothness = 10

Чтобы включить динамическую компенсацию просадки батареи:

set vbat_sag_compensation = 100
set vbat_pid_gain = OFF

Настройки для минимизации отскока (bounce-back)

Настройки по умолчанию Betaflight в настоящее время рассчитаны на то, чтобы отлично летать на квадрокоптерах средней и высокой производительности — на большинстве лёгких, отзывчивых квадрокоптеров размером 5 дюймов и меньше.

Квады с низкой управляемостью — маломощные аппараты микрокласса, HD-квадрокоптеры в кожухах, тяжёлые фристайл-сборки на 4S, а также многие сборки 7 дюймов и больше и сборки для длительных полётов — имеют общую проблему: они медленнее реагируют на быстрые входные воздействия, чем обычные квадрокоптеры. У них появляется отскок после быстрых флипов или бочек и после быстрых воздействий по yaw.

Этот раздел объясняет, почему у таких квадрокоптеров появляется отскок и как это исправить.

I-составляющая PID в Betaflight обеспечивает точность в плотных разворотах, точность по pitch в быстром полёте вперёд, стабильность в ветреные дни, устойчивость при падениях и в середине флипа, компенсирует асимметричные эффекты аэродинамического сопротивления и устраняет множество мелких устойчивых остаточных ошибок, с которыми P не может справиться полностью. Она накапливает коррекцию для небольших остаточных ошибок со временем, и эта коррекция удерживает квадрокоптер точно на траектории. Более высокие значения I сделают это быстрее и полнее, особенно в плотных разворотах и в ветреные дни, где есть небольшие устойчивые остаточные ошибки, которые P, D или FF не в силах контролировать. Относительно высокий I — одна из причин, по которым Betaflight 4.x так точно идёт по траектории в плотных разворотах и на длинных прямых.

Если пилот запрашивает изменение угловой скорости, которое квадрокоптер слишком быстр для отработки, сигнал гироскопа начнёт отставать от уставки (setpoint), и это будет большим сигналом ошибки. I начнёт накапливаться, чтобы помочь это исправить. iterm_relax будет пытаться контролировать это накопление. Если relax недостаточно для величины ошибки, может накопиться большое значение I, и когда пилот останавливает флип, весь накопленный I даст движение в обратную сторону, которое медленно спадает, пока не вернётся к нулю. Именно это пилот видит как единичный, довольно медленный отскок (bounce-back) при завершении флипа.

Это явление называется переполнение I-терма (iterm windup).

Для управления отскоком, связанным с I-термом, используются настройки iterm_relax и iterm_windup. Значения по умолчанию для этих параметров в 4.2 очень хорошо работают на сборках нормальной управляемости. iterm_relax при значении по умолчанию 15 сильно подавляет накопление I во время обычных флипов и бочек. iterm_windup работает с проблемами по yaw, и поскольку обычно он не требуется, по умолчанию он отключён.

Однако у квадрокоптеров с низкой управляемостью часто возникает отскок после быстрых флипов и бочек, а также после быстрых воздействий по yaw, потому что у них гораздо больше задержки и ошибки по отношению к движению стика. Значения iterm_relax и iterm_windup Betaflight придётся подстраивать под такие квадрокоптеры.

Вы понимаете, что у вас квадрокоптер с низкой управляемостью, когда получаете заметный отскок после флипа или бочки со скоростью 600 градусов в секунду или отскок после быстрого воздействия по yaw. Другие признаки: требуется более высокое, чем обычно, значение газа висения (то есть газ висения больше 25 %), или появляются медленные покачивания при падениях и на низком газе.

По yaw любой квадрокоптер с более длинными лучами, всё, что крупнее 6 дюймов, теряет управляемость по yaw и обычно имеет проблемы с отскоком и подпрыгиванием по yaw.

Проблемы отскока из-за iterm windup можно решать тремя способами.

1. Лучший способ — изменить настройку или доработать аппаратную часть квадрокоптера так, чтобы он стал более отзывчивым. В идеале квадрокоптер получает настройку, которая отзывается настолько быстро, что значения по умолчанию работают правильно. Это даст дополнительный плюс — улучшит общую управляемость квадрокоптера. Рассмотрим способы достижения этого.

Квадрокоптерам с низкой управляемостью обычно требуются более высокие P и FF. В некоторых случаях — вплоть до удвоенных значений P и утроенных значений FF относительно значений по умолчанию. Есть предел тому, насколько высоко можно подняться, но подниматься нужно высоко. Вероятно, D тоже потребуется увеличить вслед за P, иначе появятся колебания от P, а ограничителем высоты может стать шум по D. Следует мощно подталкивать FF и постепенно смещать слайдер «усиление P и D» вправо. Эти изменения должны уменьшить покачивания и отскок, потому что квадрокоптер начнёт разворачиваться быстрее, а величина и длительность ошибки сократятся. Следует учитывать, что очень высокий D замедлит отзывчивость и сделает отскок хуже. Правильно подобрать значения P и D на таких квадрокоптерах действительно важно.

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

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

На очень больших квадрокоптерах (beast или X-class) вращение двигателей внутрь улучшит управляемость по yaw.

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

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

3. Настройка предусмотренных функций iterm_relax и iterm_windup.

iterm_relax — то, что Betaflight использует для предотвращения нежелательного накопления I при действительно быстрых воздействиях по pitch и roll.

Связанное значение iterm_relax_cutoff определяет силу подавления и то, как долго оно длится. Более низкие значения подавляют накопление I сильнее и дольше — именно это нужно для контроля отскока, связанного с I-термом.

Попробуйте пошагово уменьшать iterm_relax_cutoff с используемых по умолчанию 15 до 10, затем до 7, затем до 5, отмечая улучшение отскока на каждом шаге. Остановитесь на самом высоком значении, которое работает. Чем ниже вы опускаетесь, тем менее точными станут ваши плотные развороты. Так что есть компромисс. Вам нужно самое высокое число, которое контролирует отскок.

Мы настоятельно рекомендуем оставлять iterm relax в значении по умолчанию режиме setpoint. В 4.2 нет необходимости переходить на режим gyro. В 4.2 iterm relax, скорее всего, будет работать лучше в режиме setpoint, чем в режиме gyro.

Для отскока по yaw улучшить ситуацию может оптимизация PID по yaw, и сначала нужно попробовать именно её. По yaw FF обеспечивает начальный толчок по мере движения стиков, P — своего рода усиление сразу после этого, а основную работу делает I. Для хорошего поведения по yaw нужны все три составляющие.

В идеале нужно получить журнал полёта и подстроить yaw P, FF и I так, чтобы на малых и средних воздействиях по yaw отзывчивость совпадала с задержкой по pitch и roll.

Вы увидите, что при больших быстрых воздействиях по yaw двигатели быстро выходят на очень большой дифференциал: одна пара на 100 %, другая на нуле. Это означает, что квадрокоптер не может выполнить то, что вы у него просите. Переполнение I-терма и отскок в такой ситуации неизбежны.

Именно эту проблему по yaw и решает iterm_windup. В 4.2 iterm_windup применяется исключительно к yaw, раньше он работал по всем осям. Он подавляет накопление I каждый раз, когда дифференциал двигателей превышает заданный процент. По умолчанию 100, что означает «выключено». Значение 70 — хорошее, чтобы предотвратить отскок по yaw на квадрокоптерах с низкой управляемостью.

Останавливая накопление по yaw при 70 % дифференциала двигателей, iterm windup не возникнет всякий раз, когда мы командуем развороты, которые квадрокоптер не может выполнить, и отскок по yaw, опосредованный I, перестанет быть проблемой. Отличная особенность iterm_windup в том, что он не ухудшает реакцию на меньшие воздействия — они остаются полностью незатронутыми.

acc_limit и acc_limit_yaw — настройки, которые избирательно подавляют накопление I, когда пилот запрашивает скорость изменения уставки (то есть ускорение), слишком высокую для квадрокоптера. По умолчанию они отключены. Они подавляют I только пока уставка быстро меняется, а это лишь кратко. Поскольку плохой iterm windup может происходить в течение продолжительного периода, в том числе после остановки стиков, их использование не рекомендуется.

Это основные сведения, необходимые для работы.

Для опытных настройщиков ниже приведены технические подробности.

Более точные времена цикла (loop times)

Планирование (scheduling) гироскопа и PID-цикла было полностью переписано, что привело к снижению джиттера PID-цикла и уменьшению загрузки CPU. Специальная конфигурация не требуется — оно работает без дополнительной настройки. Вы получаете более точную работу фильтров, более холодные двигатели, более длительные полёты; Q-фактор RPM-фильтра обычно можно ставить выше без проблем.

Код обработки RC-входа также улучшен и стал значительно точнее, что даёт более гладкие графики feedforward, чем раньше.

Частота цикла гироскопа теперь зафиксирована на нативной частоте дискретизации гироскопа и не может быть изменена пользователем. Обычно это 8k.

Частоту PID-цикла можно и нужно подстраивать под возможности процессора. Время PID-цикла отображается в нижней части Configurator. Самое важное для сборок с RPM-фильтрацией — стабильность этого времени цикла. Ошибка времени цикла в 1 % означает, что RPM-notch-фильтры будут на 1 % в стороне от своих правильных позиций.

Без RPM-фильтрации большинство плат на F4 и F7 будут прекрасно работать с PID-циклом 8k.

С RPM-фильтрацией платы F405 и F7xx тоже должны нормально работать с PID-циклом 8k, но F405 точнее на 4k. Мы рекомендуем 4k, затем попробуйте 8k; оставайтесь на 8k, только если это выглядит как минимум так же стабильно, как 4k.

F411 следует ставить на 4k, и обычно для получения оптимальных результатов потребуется разгон.

Чтобы джиттер был минимально возможным, отключите логирование в blackbox. Во время логирования используйте 1k, если более высокие частоты не критичны, и отключайте debug, если он не нужен.

При работе с PID-циклом 4k или 2k могут возникать артефакты алиасинга из-за процесса понижающей дискретизации. Обычно их предотвращает фильтр gyro lowpass 2, работающий в цикле гироскопа. Это единственный фильтр низких частот, работающий на скорости цикла гироскопа. Если его отключить, автоматически включается простой фильтр усреднения по 2 точкам при выборе PID-цикла 4k или ниже. Усреднение по 2 точкам достаточно неплохо снижает артефакты алиасинга для PID-циклов 4k, хотя и не так хорошо, как lowpass 2 на 1000 Гц, но не предотвращает алиасинг полностью при 2k. Поэтому gyro lowpass 2 не следует отключать при PID-цикле 2k.

PID-циклы 8k не имеют проблем с алиасингом, поэтому gyro lowpass 2 можно свободно настраивать для снижения шума или отключать, если он не нужен, без опасений по поводу алиасинга.

При PID-цикле 4k, если gyro lowpass 2 вам не нужен для снижения шума, установите его как можно выше (сейчас — до 1000 Гц) или выключите.

При PID-цикле 2k не отключайте gyro lowpass 2.

Настройки DShot:

С включённым RPM используйте DShot300 с PID-циклом 4k и DShot600 с PID-циклом 8k.

Протокол DShotС включённой двунаправленной передачей и RPM-фильтрациейБез двунаправленной передачи
DShot150 не выше 2k не выше 4k
DShot300 не выше 4k не выше 8k
DShot600 не выше 8k до 16k

Итоговые значения приведены для PID-цикла 4k и 8k. При PID-цикле 8k с двунаправленной передачей данные протокола DShot300 передаются только через один PID-цикл, поэтому для RPM-фильтрации при 8k используется протокол DShot600. Максимальная настраиваемая частота PID-цикла в версии 4.2 составляет 8k.

Улучшенный Feed Forward

4.2 предоставляет оптимизации feed forward под всё: от скоростных гонок до кинематографичного HD.

При агрессивной настройке Feed Forward реагирует немедленно на любое движение стика. Базовая составляющая feed forward пропорциональна скорости движения стиков, а составляющая boost — мгновенному ускорению стиков. Агрессивный feed forward может свести задержку от уставки до гироскопа к нулю для большинства воздействий, обеспечивая высокий уровень контроля и мгновенности, необходимый лучшим гонщикам. Более мягкий feed forward, в том числе с Feed Forward Transition 30, даёт очень плавное ощущение в центре при быстрой реакции на резкие движения стиками — идеально для современного фристайла или съёмки.

Основной минус агрессивного feed forward — джиттер при попытке летать плавные линии. У большинства аппаратур в сигнале есть немного джиттера, многие теряют пакеты или отправляют дубликаты, и у всех нас есть дрожь пальцев. Если квадрокоптер реагирует мгновенно на мельчайший вход, он может дрожать или слегка нервничать там, где должен быть в плавном прямом полёте или во время мягких разворотов с большим радиусом.

Потребности гонщика сильно отличаются от потребностей человека, которому нужны сверхплавные HD-кадры, поэтому в 4.2 мы много думали о том, как лучше всего учесть эти разные требования.

Feed forward сильно зависит от стабильности RC-линка и гладкости ступенек между поступающими пакетами. Мы настоятельно рекомендуем пользователям Crossfire обновиться до последней версии ПО CRSF Shot (включая обновление OpenTx, обеспечивающее синхронизацию внешнего модуля для CRSF). Пользователям FrSky-аппаратур следует обновиться до OpenTx 2.3 и отключить ADC.

Режим: ff_interpolate_sp

Самый важный параметр feed forward — это режим, в котором он работает. Его можно задать командой set ff_interpolate_sp в CLI следующим образом:

РежимНазначение
OFF Прежний метод линейной интерполяции, без boost и без подавления глитчей.
ON Режим интерполяции на основе уставки, с немедленной реакцией на каждое изменение RC, с boost и подавлением глитчей. Предназначен для гонок.
AVERAGED_2 То же, что ON, но со скользящим усреднением по двум точкам для подавления глитчей и для устранения чередующегося джиттера feedforward вверх и вниз, при сниженном джиттере в прямом полёте и по плавным дугам. Для общего применения, включая гонки и современный фристайл. Значение по умолчанию.
AVERAGED_3 Подавление глитчей скользящим средним по трём точкам, значительное снижение джиттера на плавных дугах и в прямом полёте. Предназначено для фристайла с HD-камерами. Эффективно снижает джиттер с шагом 3 (20 мс) в зафиксированных на 150 Гц настройках Crossfire, которые не были обновлены до CRSF Shot.
AVERAGED_4 Сглаживание скользящим средним по четырём точкам и максимальное подавление джиттера, оптимальное для плавных кинематографичных HD-записей. Также может быть эффективно для сглаживания джиттера графиков R9.

Плавность: ff_smooth_factor

Следующий по важности — фактор плавности, который ограничивает величину изменения, которую может внести любая одна входящая ступенька радио. Он работает как экспоненциальное сглаживание или сглаживание по принципу фильтра низких частот. Параметр CLI: ff_smooth_factor. По умолчанию 37, максимум 75.

При set ff_smooth_factor = 0 сглаживания исходящих ступенек FF нет. Полная величина FF и boost для любой входящей ступеньки RC применяется немедленно. Вероятно, это предпочёл бы гонщик с чистой радиоаппаратурой.

При значении по умолчанию 37 — 63 % входящей ступеньки feed forward применяется немедленно. Отклик похож на фильтр низких частот первого порядка с постоянной времени в один интервал RC, то есть частотой среза, равной 1000, делённому на произведение 2π и интервала RC, или около 24 Гц для RC-шагов 6,66 мс. Этот параметр сглаживает резкие ступеньки в сигнале FF, снижая часть джиттера, характерного для многих аппаратур.

Значения выше значений по умолчанию дадут более гладкий сигнал feedforward, но могут внести настолько большую задержку, что feed forward станет почти бесполезным. Не рекомендуется, за исключением медленных кинематографичных HD-сборок.

Boost: ff_boost

Этот параметр не изменился с версии 4.1; сведения приведены в заметках по настройке 4.1.

Кратко: boost реагирует на ускорение стиков и помогает преодолеть задержку двигателей при быстрых движениях стиками. Он также генерирует джиттер RC и артефакты глитчей лучше, чем что-либо другое. Настройки по умолчанию в 4.2 пытаются найти хороший баланс.

Значение boost по умолчанию — 15, и это работает почти для всех квадрокоптеров. Гонщики могут предпочесть 20. Более высокие значения, вероятно, вызовут небольшие перебросы, джиттер и избыточную чувствительность на обычных квадрокоптерах, но до 30 может быть полезно на квадрокоптерах с низкой управляемостью.

Ограничение выбросов: ff_spike_limit

ff_spike_limit обеспечивает простой метод мягкого ограничения (soft clipping), чтобы срезать вершины больших выбросов FF. Значение по умолчанию должно быть приемлемым для большинства аппаратур. Большинству людей стоит оставить это значение по умолчанию.

Более высокие числа будут пропускать всё более крупные выбросы. Гонщики или люди с чистыми радиоаппаратурами, желающие полной агрессивности feed forward, могут увеличить это значение, но должны внимательно смотреть на график feed forward, чтобы видеть, что происходит.

Самой большой обычной единичной ступенькой FF, которую когда-либо генерирует пилот, является резкий возврат от полного отклонения стика, то есть при завершении быстрого флипа. Если минимально возможная задержка в этой точке важна, возможно, стоит попробовать поднять предел выбросов выше.

Ограничение переброса: ff_max_rate_limit

ff_max_rate_limit также не изменился с 4.1, прочитайте заметки по настройке 4.1.

Оставьте значение 100.

Улучшения RC-смузинга

После обширного тестирования значения по умолчанию RC-смузинга были упрощены и оптимизированы. Обычно никаких изменений от значений по умолчанию не требуется.

Метод автосглаживания по умолчанию будет динамически рассчитывать постоянные времени RC-смузинга исходя из определённых интервалов RC-пакетов. Это отлично работает с большинством радиоаппаратур и с интерполированным feed forward. Тип входного фильтра по умолчанию — BIQUAD, он сглаживает уставку и P. Тип фильтра производной — PT1, он сглаживает острые углы интерполированной графики feed forward.

Большинству пилотов стоит придерживаться значений по умолчанию.

rc_smoothing_auto_smoothness задаёт, насколько плавными будут графики RC-сигнала. Более высокие значения дают большую плавность, но добавляют задержку RC. 10 — оптимально для большинства видов общего полёта. Гонщики могут предпочесть 8 или даже 5, но получат в результате более неплавные графики управляющих сигналов двигателей, что часто не улучшает производительность сколько-нибудь заметно; для старых шумных аппаратур 20 или даже 40 могут немного сгладить картину.

Вот новые настройки по умолчанию:

set rc_smoothing_type = FILTER
set rc_smoothing_input_hz = 0
set rc_smoothing_derivative_hz = 0
set rc_smoothing_input_type = BIQUAD
set rc_smoothing_derivative_type = PT1
set rc_smoothing_auto_smoothness = 10

Динамическое expo D-фильтрации

dyn_lpf_dterm_curve_expo теперь заставляет значение частоты среза D lowpass расти быстрее с увеличением газа, чем раньше. Рост D lowpass теперь начинается с момента увеличения газа. Значения 5 и выше могут улучшить контроль пропвоша.

Крайние точки, dyn_lpf_dterm_min_hz и dyn_lpf_dterm_max_hz, остаются теми же; разница в том, что мы быстрее приближаемся к максимуму.

  • По умолчанию — полезный рост (6).
  • Значение 1 даёт очень мягкую кривую — почти линейную — от min до max Гц на всём диапазоне газа.
  • Значение 6 даёт криволинейный рост с газом с более быстрым подъёмом от min к среднему газу.
  • Максимум 10 даёт очень быстрый рост.

Графики смотрите в PR9486.

Динамическая компенсация просадки батареи

Этот PR применяет начальное снижение выхода двигателей, когда батарея полная, и повышает выход двигателей в процессе полёта, чтобы быстро компенсировать просадку напряжения батареи по мере её возникновения.

Это даёт более стабильное ощущение стиков — как по газу, так и по PID — на всём рабочем диапазоне напряжения батареи, компенсируя обычную потерю производительности по мере просадки. Квад не будет ощущаться сверхагрессивным в начале полёта или вялым в конце.

Лучше всего включать так:

set vbat_sag_compensation = 100
set vbat_pid_gain = OFF

Это означает 100-процентная компенсация просадки напряжения.

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

Примечание 2. Старый метод компенсации просадки vbat_pid_gain не следует использовать одновременно с этим.

Примечание 3. Использовать это следует только при активном контроле батареи через телеметрию или OSD. Потери ощущения стиков не будет, пока батарея не начнёт падать ниже 3,5 В.

Примечание 4. Это не будет работать в режиме 3D.

Код компенсирует изменения напряжения с 4,2 В вплоть до настроенного пользователем напряжения предупреждения 3,5 В.

Падение с 4,2 В до 3,5 В — это снижение напряжения примерно на 16 %. При 100 % компенсации, когда батарея полная, применяется снижение выхода двигателей примерно на 16 %. По мере падения напряжения батареи выход двигателей динамически поднимается обратно к норме, отменяя эффект просадки. Как только батарея опускается до 3,5 В или ниже, выход двигателей становится нормальным, то есть возвращается к 100 %, и дальнейшая компенсация невозможна.

Возможно, после включения компенсации просадки потребуется подстроить и лимиты газа, и лимиты двигателей. Если у вас уже есть статическое значение motor_output_limit ниже 100, этот код дополнительно снижает выход двигателей ниже этого значения. Возможно, вам захочется поднять motor_output_limit примерно на 10 для сопоставимой общей производительности. Если у вас есть лимит газа, обычно менять его не нужно.

Чтобы сохранить немного больше агрессивности в начале, ценой чуть большей просадки во время полёта, примените неполную компенсацию, например 50 %: set vbat_sag_compensation = 50.

Установка компенсации больше 100 % может помочь аппаратам микрокласса, которые проседают очень сильно, но обычно это не нужно.

Просадки батареи бывают двух видов:

  • Медленные падения, за минуты, по мере потери батареей общего напряжения и ёмкости.
  • Быстрые просадки из-за кратковременных больших токовых нагрузок при кратковременных повышений газа.

Чтобы охватить только медленное падение, установите vbat_sag_lpf_period в 200 (период 20 секунд, или постоянная времени около 3,3 секунды). Это не будет компенсировать быстрые кратковременные просадки. Высокие значения имеют смысл для медленных и кинематографичных полётов.

Для быстрой реакции придерживайтесь значения по умолчанию vbat_sag_lpf_period, равного 2, то есть 200 мс. Это даёт постоянную времени около 33 мс — достаточно быстро, чтобы очень быстро реагировать на резкие подгазовки и быстрые просадки при выполнении манёвра split-S.

Аппараты микрокласса обычно эксплуатируются на более низких напряжениях, чем мини-квадрокоптеры, поэтому напряжение предупреждения часто выставляют ниже, например 3,3 В. Диапазон ослабления и начальное максимальное значение подавления выхода двигателей будут несколько больше. В этом случае небольшое снижение величины компенсации, скажем до 80 %, не даст квадрокоптеру ощущаться очень вялым в начале. Однако некоторые аппараты микрокласса проседают сильно, и на некоторых значение выше 100 может быть полезно для получения постоянного ощущения на всём диапазоне батареи.

При использовании HV-элементов никаких корректировок не требуется.

Включение debug режима BATTERY покажет величины компенсации по мере их применения — в OSD или в журнале полёта.

Battery debug 2 — это compensationStrength, значение от 0 до 100. Ноль означает, что вы у нижнего края диапазона батареи и дальнейшая компенсация недоступна. 100 означает, что батарея свежая и активна ваша максимальная настроенная компенсация. При желании это можно использовать как простой индикатор состояния батареи от 0 до 100.

Battery debug 3 несёт фактический процент снижения, применённый к выходу двигателей. Нормальное значение для полной батареи — около 160 (16 %). Если бы вы применили только 50 % компенсации, вы увидели бы только около 8 % ослабления при полной батарее.

Новые режимы Rates

Мы ввели два новых режима конфигурации Rates и обновили Configurator так, чтобы он графически отображал результат всех конфигураций Rates. Использование последнего Configurator критически важно. Для кинематографичного или фристайл-полёта настоятельно рекомендуются Actual rates с нулевым expo и низкой чувствительностью в центре.

Два новых режима rates называются ACTUAL и QUICK.

Они позволяют напрямую и полностью независимо настраивать ощущение в центре стика, expo и максимальную скорость бочки.

Ощущение или чувствительность в центре стика определяется углом кривой rates вблизи центрального положения стика. В обоих новых методах это задаётся напрямую и не зависит от других параметров rates.

QUICK rates сохраняет традиционное значение rcRate, как в предыдущих версиях Betaflight, для задания чувствительности в центре; вы можете сохранить то же значение, которое использовали всегда.

ACTUAL rates позволяют задать целевую скорость в центре в градусах в секунду. Чтобы перевести старое значение rcRate в градусы в секунду, умножьте его на 200. Например, rcRate = 1,0 вводится как чувствительность в центре 200 в ACTUAL rates. В ACTUAL rates значения центра и максимума имеют одинаковые единицы измерения и напрямую сравнимы с точки зрения как это ощущается в центре по сравнению с дальними отклонениями.

В обеих новых моделях expo сдвигает кривую дальше наружу, но не меняет ни чувствительность в центре (наклон кривой RC rate в центре), ни максимальную скорость. Более высокий expo продлевает низкую скорость вращения дальше наружу, так что квадрокоптер не начнёт быстро вращаться, пока стики не уйдут далеко. Это часто предпочитают для фристайла или LOS acro. Более низкий expo держит диапазон низкой чувствительности ближе к центру и даёт более предсказуемые реакции на всём диапазоне хода стика, как только вы покидаете центр. Это предпочитают гонщики — с относительно высокой чувствительностью в центре — и кинематографичные HD-пилоты, которые хотят крайне низкую чувствительность в центре, не теряя слишком много управляемости при дальнейших отклонениях стиков.

В ACTUAL rates величину expo можно уменьшить ниже того, что было возможно ранее. Это очень хорошо для кинематографичного фристайла, где нам нужна выраженная мягкость в центре, но довольно ранний переход к сильной управляемости.

Для LOS acro высокий expo в режиме Actual даёт более линейное ощущение стика на более широком диапазоне, а затем резкое возрастание только для быстрых флипов, когда стики отклонены далеко.

В QUICK rates expo имеет более традиционную кривую. Разные кривые можно визуализировать в Configurator.

Наконец, максимальная скорость теперь останется неизменной, когда пользователь добавляет deadband.

Этот онлайн-калькулятор позволяет визуализировать Betaflight rates против Actual Rates, что упрощает перевод ваших старых rates. А этот онлайн-калькулятор помогает с Quick Rates.

Автоматическая настройка анти-йоу-спин (anti-yaw spin)

Betaflight 4.2 теперь по умолчанию автоматически настраивает yaw_spin_threshold на значение чуть выше максимальной настроенной скорости по yaw. Для большинства пользователей это позволит коррекции йоу-спина активироваться быстрее после удара в ворота и вращения. Кроме того, пользователь теперь может переключать профили с гоночного (низкие rates) на фристайл (более высокие rates) и на LOS (очень высокие скорости по yaw), и yaw_spin_threshold всегда будет подходящим.

Режим настраивается в CLI параметром yaw_spin_recovery. Он может быть OFF, ON или AUTO, по умолчанию AUTO. Чтобы настроить порог вручную, выберите ON и задайте нужное значение в yaw_spin_threshold.

Мы надеемся, что AUTO будет лучшим вариантом для всех пользователей. Больше информации здесь.

Усиление AntiGravity не зависит от значений I

Ранее значение усиления anti-gravity действовало как множитель значения PID I. Это означало, что при увеличении PID I сила эффекта антигравитации тоже увеличивалась, и наоборот. Это могло приводить к колебаниям, опосредованным I, при резких изменениях газа, если пользователь поднимал PID I до высоких значений, или к недостаточному эффекту антигравитации, если пользователь уменьшал PID I.

В 4.2 эффект антигравитации не зависит от значения PID I пользователя и изменяется только усилением anti-gravity.

Если пользователь ранее использовал более высокие значения PID I, чем значения по умолчанию, ему потребуется увеличить значение усиления anti-gravity, и наоборот, если он хочет получить тот же эффект антигравитации, что и раньше. Изменение должно быть пропорционально отношению его прежнего значения I к значению по умолчанию 4.1 и 4.2.

Улучшенный динамический notch-фильтр

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

Вместо выбора диапазона через AUTO, LOW, MEDIUM или HIGH пользователь теперь задаёт фактическую максимальную частоту, которую должен охватывать динамический notch, с помощью dyn_notch_max_hz. Динамический notch затем поможет контролировать шум между своими минимальным и максимальным значениями частоты.

Значение по умолчанию dyn_notch_max_hz, равное 600 Гц, лучше всего подходит для большинства квадрокоптеров, но его можно подстроить. Оптимальное значение зависит от того, используете ли вы RPM-фильтрацию и каков диапазон RPM квадрокоптера.

Если вы использовали LOW, примерно эквивалентным должно быть dyn_notch_max_hz около 350 Гц. Если вы использовали HIGH, скорее всего, достаточно около 700 Гц — частоты вращения, существенно превышающие это значение, встречаются на практике редко.

Когда RPM-фильтрация не используется, динамический notch должен охватывать весь диапазон возможных частот, генерируемых двигателями. Необходимое значение можно точно определить, записав журнал полёта с debug GYRO_SCALED и посмотрев на самую высокую частоту, отображаемую в спектральном анализе. Как вариант, его можно оценить как 70 % от пикового теоретического RPM без нагрузки. Например, двигатель 2000KV на 6S имеет RPM без нагрузки 2000 × 6 × 4 = 48 000 об/мин. 70 % от этого — 33 600 об/мин, делим на 60 и получаем 560 Гц.

Медленные летуны и квадрокоптеры X-класса должны использовать dyn_notch_max_hz порядка 350–400 Гц и более низкий dyn_notch_min_hz, чем используемый по умолчанию. Более низкие максимумы улучшат разрешение по сравнению с значениями по умолчанию.

С RPM-фильтрацией линии шума от двигателей обычно убираются полностью, и динамическому notch почти нечего делать. Во многих случаях его можно отключить. Однако он может быть полезен для ослабления остаточного шума или резонанса рамы. Если конкретного резонанса рамы нет, он будет удерживаться около середины своего диапазона. С настройками по умолчанию это держит его в стороне, вызывая относительно небольшую задержку.

Если есть специфический резонанс на какой-то конкретной частоте, значения min и max можно отцентрировать по обе стороны от линии резонанса. Например, если у вас резонанс на 150 Гц, попробуйте установить минимум 100, а максимум 200.

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

Заметки руководства 4.1 о ширине notch и Q-факторе по-прежнему применимы… если кратко, при использовании RPM-фильтра:

set dyn_notch_width_percent = 0
set dyn_notch_q = 250

А это восстанавливает значения по умолчанию для использования без RPM-фильтрации:

set dyn_notch_width_percent = 8
set dyn_notch_q = 120

Iterm Relax корректно работает в режиме setpoint

В 4.0 и 4.1 была ошибка, влиявшая на режим setpoint у iterm relax. Режим setpoint работал нормально с настройками по умолчанию, но изменение iterm_relax_cutoff почти не давало эффекта. Режим gyro у iterm_relax затронут не был.

Вот почему казалось, что отскок лучше контролируется снижением iterm_relax_cutoff только в режиме gyro. Теперь режим setpoint корректно работает для всех значений iterm_relax_cutoff.

Мы рекомендуем большинству пользователей вернуться к режиму setpoint в 4.2.

Настраивая iterm_relax_cutoff, чтобы уменьшить отскок, опосредованный I, после флипа или бочки, стремитесь к самому высокому значению, при котором отскок всё ещё адекватно контролируется.

Чтобы убедиться, что отскок на фристайл-квадрокоптере связан с I, а не с чем-то ещё, временно установите iterm_relax_cutoff в высокое значение, например 40, и сделайте тестовый полёт. Если отскок определённо ухудшился, уменьшайте iterm_relax_cutoff, пока он не будет адекватно контролироваться.

Для большинства современных фристайл-квадрокоптеров с GoPro снижения iterm_relax_cutoff примерно до 10 должно быть достаточно. Для сборок 7 дюймов, возможно, 5–7. X-классу может потребоваться 5 или меньше.

NFE Race Mode

Эта функция активна только в режимах самовыравнивания.

Когда она активна, самовыравнивание происходит только по оси roll. Ось pitch ведёт себя как в режиме acro.

Чтобы включить, используйте команду CLI: set level_race_mode = ON.

Улучшения OSD

Ваш собственный логотип теперь может появляться каждый раз при разблокировке двигателей. Логотип может отображаться в гоночные дни. — с set osd_logo_on_arming = ON. Опции: OFF, ON, FIRST_ARMING.

Качество линка CRSF теперь отображается как A:BB, где A — режим RF (2 = 150 Гц, 1 = 50 Гц), а BB — качество линка. Это изменение позволяет корректно работать сигнализациям о качестве линка.

В OSD добавлены следующие новые элементы:

  • рамка камеры (#9261);
  • сигнализация расстояния от точки старта — мигает расстоянием. Внимание: расстояние в метрах (#8862);
  • эффективность в мА·ч на километр или мА·ч на милю (#9601).

Улучшения Configurator

  • Вкладка настройки RC Rates теперь полностью поддерживает графическое отображение формы кривой для всех поддерживаемых методов rates, с классными иконками.
  • Слайдер баланса P:D теперь изменяет D, а не P, что упрощает проверку того, как влияют небольшие изменения D.
  • Dynamic idle можно включить и настроить на вкладке PID.
  • Когда Dmin включён, колонка D переименовывается в Dmax, чтобы яснее показывать, что она делает.
  • Yaw P изменяется так же, как pitch и roll. Значение по умолчанию немного выше.

Часть 2. Betaflight 4.3 — заметки по настройке (Betaflight 4.3 Tuning Notes)

Введение

Ниже приведено подробное руководство по обновлению Betaflight 4.3.

Перед началом работы необходимо изучить следующие замечания:

  1. После обновления до Betaflight 4.3 вы ОБЯЗАНЫ использовать последний Betaflight Configurator 10.8. Более ранние версии конфигуратора 10.8 и 10.7 не будут корректно работать с 4.3.
  1. Процессоры F4 должны работать с PID-циклом 4k. Пользователям F411 следует использовать DShot300, а не DShot600, и им заблокирован PID-цикл 8k. Большинство F411 следует разогнать до 120 МГц, хотя некоторые выдержат только 108 МГц.
  1. В 4.3 новый подход к настройке через Слайдеры и появились Пресеты (Presets). Из-за изменений параметров не вставляйте в CLI diff или dump из предыдущих версий. Подходящий Preset должен дать отличный результат. Слайдеры упрощают заключительную настройку вашей настройки.
  1. Опытным пользователям, которые хотят использовать числовой ввод данных для настройки и фильтров, НЕОБХОДИМО сначала отключить слайдеры. Проще всего сделать это в Configurator.
  1. Перед первой разблокировкой двигателей внимательно проверьте все настройки. Проверьте PID, фильтры, Rates, конфигурацию двигателей и направление вращения двигателей. Для первых полётов выполняйте разблокировку двигателей в безопасном месте, летайте мягко и следите за любыми проблемами сборки или настройки.
  1. Мы рекомендуем использовать фильтрацию на основе RPM для лучшей производительности. О включении и настройке RPM-фильтрации читайте здесь.
  1. Пользователи радиолинков 250 Гц или 500 Гц ОБЯЗАНЫ выбрать подходящий Preset. Для радиолинков 500 Гц feedforward_smoothing должен быть установлен в 65–70 с усреднением по 2 точкам. Для радиолинков 250 Гц feedforward_smoothing нужно установить в 35–40 с усреднением по 2 точкам.
  1. Загрузка CPU теперь показывается как гораздо более высокое значение, чем раньше. Это нормально и связано только с изменением способа отображения. Опасений это не вызывает; контролировать значение следует при приближении к 75 %.

Возможности Betaflight 4.3

«Более плавный и точный полёт с лучшей работой против пропвоша, а также более простая настройка и конфигурирование — чтобы раскрыть полный потенциал Betaflight 4».

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

  • Новые слайдеры настройки PID — нужна ли вам подстройка настройки или построение его с нуля, теперь у нас есть более простые и более полные слайдеры настройки на уровне прошивки в Configurator. Они активны по умолчанию. Позиции слайдеров сохраняются вместе с квадрокоптером и могут быть изменены через OSD или LUA. Новые экспертные слайдеры позволяют тонко настраивать баланс Pitch к Roll и DMax к Dmin и I относительно P.
  • Пресеты (Presets) — существенно расширенная система пресетов. Для аппарата микрокласса, небольшого аппарата (twig), гоночного квадрокоптера 5 дюймов, фристайл-конфигурации или X-класса можно легко применить готовую настройку без дополнительной доработки. Пресеты также существуют для настроек радио, конфигураций VTX и так далее. Пользователи могут выбирать из официальных пресетов Betaflight и сообщества. И те, и другие проверяются разработчиками Betaflight. Также предоставлен доступ к внешним репозиториям пресетов, но будьте осторожны при их использовании, поскольку Betaflight не контролирует их содержимое.
  • Меньше фильтрации гироскопа при более высоких P и D, что даёт лучшую производительность без дополнительной доработки.
  • Мы изменили способ настройки D. Теперь у нас есть настройки Derivative и D_Max. Значение Derivative — это то, что задаёт значение D при плавном полёте. Когда вы разворачиваетесь быстро, D растёт до Dmax, обеспечивая более эффективное демпфирование быстрых движений, а при полёте по прямой D возвращается к Derivative и снижает шум по D и нагрев двигателей. Разница между двумя значениями уменьшена, а значение Derivative существенно выше. В отличие от 4.2, обычно вам не потребуется поднимать слайдер D выше — если только вы не ищете более сильную стабильность на прямых в чистой HD или кинематографичной сборке.
  • Более точные времена цикла — мы внесли масштабные улучшения в код планировщика и DMA, включая считывание гироскопа по SPI по прерыванию EXTI (на поддерживаемых платах), что даёт сверхстабильные времена цикла, более гладкую работу фильтров, более быстрое логирование и улучшенную эффективность CPU. ПРИМЕЧАНИЕ: загрузка CPU, отображаемая в 4.3, выше, чем в 4.2, из-за изменения способа её расчёта. Теперь она показывает % времени, которое процессор занят выполнением задач, а не цифру на основе load average.
  • Мульти-динамический notch — у нас полностью переписанные, значительно улучшенные мульти-динамические notch-фильтры на основе SDFT. Одновременно можно отслеживать более одного резонансного пика — точнее и быстрее, чем раньше, с низкими затратами на задержку. Это позволяет снизить общую фильтрацию низких частот и добиться лучшей производительности.
  • Два вышеуказанных изменения значительно улучшили входящий шум гироскопа. Это позволило поднять используемую по умолчанию фильтрацию гироскопа выше, чем раньше. В сочетании с более высоким D это улучшает пропвош. Многие квадрокоптеры теперь могут летать с слайдером фильтра гироскопа, выкрученным до упора вправо.
  • RC-смузинг на основе PT3 — RC-смузинг был полностью переработан и теперь целиком основан на фильтрах, с использованием оптимизированного сглаживания PT3 (третьего порядка). RC Smoothing теперь имеет идеальную форму фильтра без переброса и с очень гладким откликом. Значение автосглаживания обеспечивает всё: от низкой задержки до исключительной плавности, пригодной для кинематографичной съёмки.
  • Кроссфейд RPM (RPM crossfading) — теперь мы можем полностью и плавно отключать перекрывающиеся notch-фильтры RPM-фильтрации на низких RPM. Это значительно снижает задержку фильтра на низком газе. Вы немедленно услышите разницу в звуке двигателей и почувствуете меньше пропвоша около низкого газа.
  • Опции фильтров PT2 и PT3 — старая опция биквадратного фильтра низких частот больше недоступна для гироскопа из-за проблем с задержкой, перебросом и резонансом. Прежним пользователям биквадратного lowpass на гироскопе следует перейти на PT2, но, скорее всего, они обнаружат, что в 4.3 для гироскопа оптимальна одиночная или двойная фильтрация первого порядка. Биквадратная фильтрация по-прежнему доступна для D, где более жёсткий срез, чем у PT2, может быть полезен.
  • Снижение джиттера feed forward — 4.3 вводит снижение джиттера feed forward, что является улучшением по сравнению с feedforward transition. Оно даёт feed forward эффект динамического перехода: вы получаете шелковисто-плавные отклики при медленных движениях стиками и немедленные, хлёсткие отклики feed forward на быстрые входы. Обычно Transition теперь не требуется. Снижение джиттера обеспечивает эффект, аналогичный функции Transition, но при любом положении стика. Оно также ослабляет шум RC-линка при медленных движениях, особенно для новых высокоскоростных Rx-линков. Гонщики будут склонны использовать более низкие значения снижения джиттера, чем фристайлеры, поскольку это ослабляет шум линка без задержки реакции на стики.
  • Другие улучшения feed forward — теперь у нас есть сглаживание второго порядка для boost, мягкая интерполяция при медленных движениях стиков и более точная интерполяция дублирующихся пакетов. Большинству более медленных радиолинков усреднение не потребуется, и теперь оно по умолчанию отключено. Высокоскоростные радиолинки (250 Гц и выше) обычно выигрывают от усреднения по 2 точкам и более сильного сглаживания. Пресеты под большинство распространённых типов линков делают настройку радиолинка простой.
  • Улучшения AntiGravity — добавлен boost по P, вместе с оптимизацией согласования по времени boost по I, чтобы он достигал пика тогда, когда он наиболее нужен. Это даёт большую стабильность при быстрых изменениях газа. Значение по умолчанию 3,5 не следует увеличивать без тщательного тестирования.
  • Динамическая экспо-кривая фильтра гироскопа — настройка экспо-кривых фильтра улучшает пропвош за счёт более быстрого повышения частот среза динамического фильтра гироскопа по мере роста газа.
  • Улучшенный dynamic idle — код dynamic idle был серьёзно переработан и теперь может удерживать RPM на более стабильном значении, быстрее и точнее, чем раньше, и его можно тонко настраивать с помощью нового одностороннего PID-регулятора. Теперь его гораздо проще настроить. Нет необходимости измерять RPM или менять процент D_Shot idle: следует оставить обычное значение. Достаточно включить DShot Telemetry (убедившись в её работоспособности) и установить подходящее значение idle RPM на странице PID Tuning. Обычно 3000–4000 об/мин работает отлично. Это улучшает поведение двигателей при раскрутке с низких оборотов, повышая отзывчивость на низком газе, и снижает риск рассинхронизации двигателей, позволяя при этом управляющему воздействию на двигатели доходить до нуля для улучшенного торможения, когда это уместно, и для более долгого висения в перевёрнутом положении.
  • Опции линейного и динамического микшера — это альтернативы штатному коду микшера Betaflight. Динамическая опция может давать менее агрессивные реакции на удары и при посадке в режимах самовыравнивания или в кинематографичных полётах.
  • Feed forward в режимах Level и Horizon — Feed forward теперь активен в режимах Horizon, Level и Level Race, что приводит к более быстрому изменению углов в режиме Level и делает режим Horizon таким же отзывчивым, как Acro, для флипов и других быстрых манёвров. Величину feed forward в этих режимах можно настраивать и сохранять в профиле, как и для других параметров PID.
  • Actual Rates — новое значение по умолчанию Betaflight — Actual rates дают более простой и интуитивный способ настройки Rates и теперь являются значением по умолчанию. Rates по умолчанию менее агрессивны в центре, но более прогрессивны около середины хода стика, чем прежние значения по умолчанию. Максимальная скорость бочки при полном отклонении стика та же, что и раньше. Betaflight rates необязательны и по-прежнему могут использоваться. При обновлении требуется внимательность. Если вы копируете и вставляете свои старые значения rates, обязательно скопируйте и вставьте также тип rates. Используйте этот калькулятор для перевода ваших старых rates в Actual rates.
  • Улучшения RC-линков CrossfireV3 и Ghost — помимо поддержки новейших протоколов Crossfire, ELRS и Ghost, внутренний RC-код Betaflight теперь поддерживает 12-битные и более высокоразрядные RC-данные в float-цепочке, лучше, чем раньше, обрабатывает очень низкоскоростные RC-линки (вплоть до 16 Гц), полностью поддерживает высокоскоростные линки до 1000 Гц и лучше ослабляет глитчи feed forward при восстановлении RC-линка после потерь.
  • Поддержка ELRS over SPI для бортовых приёмников ELRS V2. Большое спасибо Phobos и другим разработчикам ELRS за помощь в этом.
  • Обновления Lua-скриптов — теперь у нас есть RSSI в OSD через LUA, управление слайдерами с аппаратуры и множество других изменений.
  • Изменены имена команд CLI — многие параметры CLI переименованы. В результате множество попыток копирования и вставки не сделают всех изменений, которые вы задумали. Использование команды CLI get теперь позволяет легче находить связанные значения. Например, get gyro_lp найдёт все настройки фильтра низких частот гироскопа, get feed найдёт все значения feed forward и так далее.

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

Если вы новичок в Betaflight, прочитайте предыдущие заметки по настройке (4.2, 4.1) по любым темам, которые здесь не раскрыты.

Решение проблем

Отскок (Bounceback)

Обратитесь к руководству по настройке 4.2. Большинство отскоков вызваны слишком большим I на квадрокоптере с низкой управляемостью, и обычно лучше всего исправляются снижением значения cutoff у iterm relax и увеличением значений tracking и D. Случайные покачивания в конце некоторых (но не всех) флипов или бочек, особенно более быстрых ближе к концу полёта, обычно вызваны задержкой запуска двигателей из-за чрезмерно низкого idle, завышенного размера воздушных винтов или слабого старта ESC с низких оборотов (режимы 48 кГц или динамические режимы ESC). Лучше всего с этим справляется включение dynamic idle с достаточно высоким минимальным значением RPM (например, 3500–4000 об/мин).

Случайные покачивания в HD-видео

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

  • возьмите действительно жёсткую раму, проверьте подшипники и люфт вала, отбалансируйте воздушные винты, не допускайте, чтобы что-либо болталось;
  • настройте максимально возможный D, который выдержит конфигурация аппарата, и избегайте слишком высокого P;
  • держите значение Derivative близко к P или до 20 % выше P. Возможно, вам потребуется больше фильтрации D, чем обычно, — проверяйте температуру двигателей и слушайте на предмет шлифовки на холостом ходу и других признаков резонанса по D;
  • настройте TPA так, чтобы он начинался чуть ниже крейсерского значения газа, чтобы у вас не было слишком много D на высоком газе;
  • когда D будет настолько высок, насколько получится, поэкспериментируйте с большим и меньшим P. Слишком высокий P вызовет покачивания и слышимое неплавные колебания в быстрых разворотах и может усугубить проблему случайных покачиваний. Если вы никогда не разворачиваетесь быстро, возможно, вам удастся поставить P выше, чем обычно;
  • если квадрокоптеру не хватает управляемости, ослабьте I с помощью экспертного слайдера настройки I;
  • убедитесь, что в аппаратных настройках OpenTx не отмечен ADC.
  • убедитесь, что рама сверхжёсткая и ничто не может болтаться или хлопать;
  • убедитесь, что ваш конденсатор большой;
  • иногда чип гироскопа работает неправильно, а некоторые ESC работают некорректно, — если всё остальное не помогло, попробуйте заменить эти компоненты на детали с квадрокоптера, который летает идеально;
  • используйте коэффициент снижения джиттера 10–12. Чтобы проверить, не ухудшает ли ситуацию feed-forward, сделайте тестовый полёт с feedforward на нуле. Если изменений нет, feed-forward не является проблемой и его можно использовать на обычных настройках;
  • высокий уровень RC-смузинга (auto smoothing 90 или выше) ослабит хаотичное поведение старых гимбалов или непроизвольные движения пальцев. Чтобы проверить, не является ли проблемой ваш RC-линк, временно установите широкий deadband. Мы не особо рекомендуем deadband, но тест с высоким deadband устранит весь случайный шум на RC-линке, когда стики в центре. Если это ничего не изменит, ваш RC-линк не является причиной проблемы;
  • используйте очень мягкое крепление камеры.

Нестабильность на нулевом газе

  • вернитесь к PWM 24 кГц, если вы установили ESC на 48 кГц;
  • включите dynamic idle на 3500–4000 об/мин;
  • попробуйте thrust linear = 25;
  • попробуйте немного более высокие общие PID.

Пресеты (Presets)

Новая вкладка Preset — вероятно, самое полезное улучшение Configurator за долгое время.

Настройки по умолчанию Betaflight изначально были сделаны под фристайл-квадрокоптеры размером 5 дюймов для развлекательных полётов в парке. Сегодня между гоночными, фристайл- и кинематографичными сборками 5 дюймов огромные различия в производительности, и ещё большие различия — между аппаратами микрокласса, небольшими аппаратами (twig), тяжёлыми сборками с камерой, сборками 7–10 дюймов и X-классом. У всех у них очень разные диапазоны характеристик.

Релиз Configurator для 4.3 (10.8) теперь предоставляет систему Пресетов, облегчающую поиск одного или нескольких наборов команд CLI, чтобы легко найти настройка, подходящий вашему квадрокоптеру, вашему стилю полётов, вашей настройке Radio или VTx и так далее. После применения Пресетов нажмите Save и выполняйте полёт.

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

Страница Preset также предоставляет простой способ резервного копирования и восстановления вашей конфигурации.

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

Пресеты одобряются после оценки через метод GitHub pull request и не включаются в Configurator, если мы не уверены, что они достаточно качественными.

Чтобы добавить новый Пресет в Betaflight, откройте pull request.

Внешние репозитории пресетов поддерживаются, но не проверяются и не валидируются Betaflight.

Комментарии или отзывы о любом конкретном пресете следует оставлять через исходный pull request. В менеджере Пресетов предусмотрена кнопка-ссылка.

Новые слайдеры настройки

Слайдеры настройки PID полностью переработаны. Они дают очень быстрый и простой способ настроить квадрокоптер — как на поле, так и за компьютером.

  • Позиции слайдеров теперь хранятся в полётном контроллере и могут обновляться через OSD или Lua на поле.
  • P и D теперь задаются независимо, своими собственными слайдерами. Больше нет соотношения P к D и усиления P&D.
  • Пользователи базового режима (Basic) видят только три самых важных слайдера (PI, D и Feedforward) с ограниченным диапазоном регулировки.
  • Экспертный режим (Expert) показывает дополнительные слайдеры тонкой настройки для I, Dmax и соотношения pitch:roll для D и P, а также общий мастер-усилитель.
  • Когда экспертный слайдер не на своей используемой по умолчанию позиции или базовый слайдер вышел за пределы базового диапазона регулировки, он виден, но выделен серым в базовом виде. Чтобы настроить выделенный серым слайдер, переключитесь в экспертный вид.
  • Соотношение P:D можно приблизительно сохранить, двигая слайдеры PI и D вместе, поддерживая похожие относительные позиции.
  • Слайдер мастер-усилителя можно использовать для увеличения или уменьшения общей силы PID, сохраняя всё в точных пропорциях.
  • Слайдеры по умолчанию ВКЛЮЧЕНЫ. Числовой ввод параметров блокируется в Configurator, когда слайдеры управляют значением. Если вы хотите использовать старый метод прямого ввода чисел без слайдеров, вы ОБЯЗАНЫ сначала отключить слайдеры, установив их в OFF.
  • Обычный режим работы слайдеров PID — RPY. Это означает, что контролируются все три оси: Roll, Pitch и Yaw. Если квадрокоптеру требуются особые настройки по yaw, можно выбрать режим RP и использовать прямой числовой ввод только для yaw.

Баланс и общая сила P и D теперь визуально очевидны по позициям соответствующих слайдеров.

Внимание. Ручные изменения значений PID или lowpass при включённых слайдерах не вносятся. Сначала следует выключить слайдеры (проще всего это сделать в Configurator).

Осторожно. При использовании слайдеров в Configurator изменения настроек на поле также следует вносить слайдерами. Если изменять числовые значения через CLI, OSD или LUA при активных слайдерах, возникают конфликтующие наборы слайдеров и чисел. Сохранённые числовые значения сохраняются, и полёт на них возможен. Однако если сохранить PID или фильтры с экрана, где слайдеры включены, введённые значения будут перезаписаны значениями, рассчитанными из слайдеров, и будут утеряны без предупреждения. Поэтому конфликтов следует избегать: при работе со слайдерами настройку выполняют только слайдерами, в том числе на поле; для ввода числовых значений слайдеры отключают.

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

Методы настройки

Новые слайдеры PID поддерживают любой метод настройки, который предпочитает пользователь, включая большинство знакомых методов с YouTube.

Простая настройка

Самый быстрый и простой способ настроить с новыми слайдерами — двигать оба слайдера, P и D, вместе вправо, пока не произойдёт что-то нежелательное явление. Это приблизительно сохраняет соотношение P:D. Остановитесь или немного откатитесь назад, когда двигатели начнут греться, или вы услышите посторонние звуки в скоростных разворотах или при разблокировке двигателей, — затем отступите немного. Для быстрой и простой настройки это, скорее всего, даст вам действительно хороший результат.

Затем отрегулируйте слайдер Stick Response (feedforward) по своему вкусу.

Как вариант, можно быстро привести усиления в требуемый диапазон экспертного режима с помощью мастер-слайдера. Он увеличивает или уменьшает все PID в строгой пропорции. Как только мы получим примерно верный результат, отдельные слайдеры позволят донастроить результат.

Метод настройки «D first» («сначала D»)

Метод «D first» подразумевает пошаговое увеличение D, пока не произойдёт что-то плохое, затем откат на щелчок-два назад и отказ от дальнейшего повышения. После этого процесс повторяется для P — и готово.

Он основан на двух фундаментальных концепциях:

  • чем больше D вы можете применить, тем больше P вы сможете использовать;
  • квадрокоптер точнее всего идёт по траектории с максимально высокими P и D, которые он может выдержать.

Вот обычные признаки того, что при увеличении D пора немного отступить:

  • двигатели начинают греться;
  • мы слышим скрежет или гул при разблокировке двигателей;
  • квадрокоптер с шумом резко уходит вверх при разблокировке двигателей;
  • погнутые воздушные винты очень быстро и очень сильно нагревают двигатели.

Мы знаем, что основной предел того, сколько D вы можете использовать, — это то, насколько чистой является сборка. Сборки с хорошими подшипниками, хорошо отбалансированными и точно отцентрированными двигателями, жёсткими рамами, жёсткими воздушными винтами и и так далее выдержат больше D. Влияние могут оказывать другие воздушные винты или настройки ESC.

Когда D будет настолько высок, насколько разумно возможно, поднимите P, пока не произойдёт что-то плохое, например:

  • трепещущий звук от колебаний P в жёстких разворотах на среднем и высоком газе, или
  • недостаточно задемпфированные кратковременные перебросы или резонансы в откликах на ступенчатое воздействие, или
  • откровенные колебания от P.

Обычно у большинства квадрокоптеров P оказывается около значения D или немного выше.

Классический метод настройки

В этом методе пользователь поднимает P вверх, шагами, до его предела, при слайдере D, установленном немного ниже обычного для этой сборки (например, ⅔ от P). Обычно мы останавливаемся, когда квадрокоптер начинает неплавно колебаться, неплавно колебаться или дрожать в конце флипов или бочек либо в жёстких быстрых разворотах. Затем мы возвращаем P назад, пока не останется лишь лёгкий намёк на это покачивание, и постепенно поднимаем D, шагами, насколько можем, но обычно не выше P, пытаясь заблокировать это остаточное покачивание. Мы можем быть ограничены в том, сколько D можем применить, нагревом двигателей или шумом. Если нам удаётся контролировать покачивание, иногда можно поднять P ещё на щелчок и снова добавить щелчок-два D, чтобы посмотреть, удастся ли это проконтролировать.

Цель — получить оба параметра настолько высокими, насколько возможно, без нежелательных проблем: трепыхания, резонанса или чрезмерного нагрева двигателей.

Более точные времена цикла (loop times)

Steve C Evans внёс масштабные изменения, которые почти полностью устраняют джиттер PID-цикла и повышают общую эффективность планировщика. В большинстве случаев специальная конфигурация не требуется — оно работает без дополнительной настройки. Вы получите более точную работу фильтров, более холодные двигатели и более длительные полёты.

Изменения планировщика и задач для более точного тайминга

Betaflight использует схему кооперативной многозадачности, а это означает, что планировщику нужно знать, сколько времени займёт выполнение задачи, чтобы вызывать её только тогда, когда есть время до критичной операции — такой как выполнение задач гироскопа, фильтров и PID. Если задача выполняется дольше предсказанного, другие важные задачи будут запаздывать. Это часто случалось в 4.2, особенно для задач RX и OSD. В 4.3 задачи реструктурированы, чтобы повысить вероятность их завершения в ожидаемое время, так что планировщик может принимать лучшие решения о планировании.

В 4.3 лучше запускать платы F405 и F411 на 4k, а не на 8k, если включена RPM-фильтрация. Для процессоров F411 это принудительно.

Процессоры F411 можно разогнать до 120 МГц. Они не греются так, как F405; большинство прекрасно работает на 120 МГц. Некоторые могут работать нестабильно на 120 МГц, но нормально на 108 МГц — возможно, это зависит от класса чипа, использованного на плате, или других связанных с платой факторов; если они стабильнее на 108 МГц, используйте это. Сообщите нам через GitHub, и, возможно, мы сможем обновить информацию о Target для платы.

DShot300 следует всегда использовать на 4K. Хотя ошибок может и не сообщаться, использование DShot600 может вызвать нестабильность цикла на 4k.

Синхронизация с гироскопом и передача данных гироскопа по DMA

В 4.2 было несколько проблем при чтении данных с гироскопа.

  1. Процессор читал данные с гироскопа в задаче гироскопа через polling — то есть ему приходилось ждать завершения чтения, не имея возможности делать что-либо ещё.
  1. Гироскоп MPU6000 обновляется неравномерно. Каждое 8-е обновление занимает не 125 мкс, а 170 мкс, за которым следует ещё одно на 80 мкс. В результате задача гироскопа иногда считывала два сэмпла с интервалом 125 мкс внутри 170-микросекундного интервала и полностью пропускала обновление в 80-микросекундном цикле.
  1. Поскольку частота обновления гироскопа и цикл гироскопа были асинхронны, существовала случайная задержка до 125 мкс между обновлением данных в гироскопе и получением, чтением и обработкой данных полётным контроллером.

В 4.3 эти проблемы исправлены:

  1. Передачей данных через прямой доступ к памяти (DMA), где процессор инициирует передачу и может заниматься другими делами, пока ждёт её завершения. Это снизит загрузку CPU.
  1. Синхронизацией планировщика с обновлениями гироскопа через аппаратную линию прерывания от гироскопа к полётному контроллеру. Используемый пин FC задаётся ресурсом GYRO1_EXTI. Когда эта синхронизация активна, мы надёжно захватываем каждое обновление гироскопа.
  1. Чтением данных с гироскопа сразу после уведомления от EXTI о доступности обновления и обработкой данных через согласованное время после этого.

Для синхронизации обновлений гироскопа с FC требуется аппаратная линия внешнего прерывания от гироскопа к FC. Она есть не на всех платах. Не все платы могут использовать DMA для запросов данных гироскопа.

Команда CLI status сообщает dma в строке Gyros detected, если используется DMA (преимущество 1 выше), и если гироскоп захвачен FC через EXTI (преимущества 2 и 3 выше), она покажет locked. Например, при наличии и DMA, и locked вы увидите:

Gyros detected: gyro 1 locked dma

Подробности: PR #10525, PR #10573, PR #10813 и PR #11033.

Логирование Blackbox по SPI теперь гораздо эффективнее

Более высокие частоты логирования будут работать с меньшим числом разрывов. Логирование теперь обрабатывается через DMA, а не через polling, как описано выше. В 4.2 процессору приходилось ждать до 90 мкс, пока блок данных будет записан во FLASH-память. В 4.3 требуется менее 5 мкс, чтобы запустить запись, после чего передача завершается в фоновом режиме, пока процессор занимается другими задачами.

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

Технические замечания

Чтобы все вышеописанные улучшения гироскопа и FLASH работали, нужен SPI DMA. В следующем примере с FC на F745 видно, что SPI_MOSI и SPI_MISO определены и для SPI-шины 3 (оба нужны для доступа к FLASH), и для SPI-шины 1 (оба нужны для доступа к гироскопу). Для шины 4 определён только SPI_MOSI, но это нормально, поскольку она используется только для OSD, который не использует SPI_MISO.

# dma show

Currently active DMA:
--------------------
DMA1 Stream 0: LED_STRIP
DMA1 Stream 1: FREE
DMA1 Stream 2: SPI_MISO 3
DMA1 Stream 3: FREE
DMA1 Stream 4: FREE
DMA1 Stream 5: SPI_MOSI 3
DMA1 Stream 6: FREE
DMA1 Stream 7: FREE
DMA2 Stream 0: SPI_MISO 1
DMA2 Stream 1: SPI_MOSI 4
DMA2 Stream 2: DSHOT_BITBANG 2
DMA2 Stream 3: SPI_MOSI 1
DMA2 Stream 4: ADC
DMA2 Stream 5: FREE
DMA2 Stream 6: DSHOT_BITBANG 5
DMA2 Stream 7: FREE

К сожалению, из-за эрраты в процессорах F4 ТОЛЬКО (см. раздел 2.1.10 документа ST) невозможно использовать DMA на SPI-шине 1 и bit-banged DSHOT одновременно. Поэтому, если bit-banged DSHOT включён, вы можете увидеть locked в выводе status, но не dma. Если вы попробуете отключить bit-banged DSHOT, чтобы включить DMA, у вас могут возникнуть конфликты ресурсов DMA из-за того, что дескрипторы DMA для MOTOR 1–MOTOR 4 конфликтуют с SPI, используемым для FLASH, OSD и иногда LED-функций. В результате RPM-фильтрация, Flash, LEDs или OSD могут не работать.

Когда DMA недоступен для OSD, рекомендуется очень простая конфигурация OSD, чтобы минимизировать время передачи данных.

Ниже — примеры того, как продвинутый пользователь может оптимизировать свою конфигурацию аппарата.

Например, на MATEKF411 с включённым bit-banged DSHOT мы видим включённые SPI-шины 1 и 2, но без DMA для гироскопа.

# status
MCU F411 Clock=108MHz (PLLP-HSE), Vref=3.30V, Core temp=30degC
...
Gyros detected: gyro 1 locked
GYRO=MPU6000, ACC=MPU6000
...

# dma show

Currently active DMA:
--------------------
DMA1 Stream 0: FREE
DMA1 Stream 1: FREE
DMA1 Stream 2: FREE
DMA1 Stream 3: SPI_MISO 2
DMA1 Stream 4: SPI_MOSI 2
DMA1 Stream 5: FREE
DMA1 Stream 6: FREE
DMA1 Stream 7: FREE
DMA2 Stream 0: SPI_MISO 1
DMA2 Stream 1: DSHOT_BITBANG 2
DMA2 Stream 2: FREE
DMA2 Stream 3: SPI_MOSI 1
DMA2 Stream 4: ADC 1
DMA2 Stream 5: FREE
DMA2 Stream 6: FREE
DMA2 Stream 7: FREE

С включённым bit-banged DSHOT мы видим включённой только SPI-шину 1, с DMA для гироскопа. SPI-шина 2, используемая для OSD, не может использовать DMA, так как необходимые ресурсы заняты MOTOR 4 и MOTOR 1. Таким образом, хотя производительность полёта в этой конфигурации улучшится, обновления OSD будут работать не так быстро, поэтому следует использовать только простое отображение OSD.

# status
MCU F411 Clock=108MHz (PLLP-HSE), Vref=3.30V, Core temp=30degC
...
Gyros detected: gyro 1 locked dma
GYRO=MPU6000, ACC=MPU6000
...

# dma show

Currently active DMA:
--------------------
DMA1 Stream 0: MOTOR 3
DMA1 Stream 1: FREE
DMA1 Stream 2: FREE
DMA1 Stream 3: MOTOR 4
DMA1 Stream 4: MOTOR 1
DMA1 Stream 5: MOTOR 2
DMA1 Stream 6: FREE
DMA1 Stream 7: FREE
DMA2 Stream 0: SPI_MISO 1
DMA2 Stream 1: FREE
DMA2 Stream 2: FREE
DMA2 Stream 3: SPI_MOSI 1
DMA2 Stream 4: ADC 1
DMA2 Stream 5: FREE
DMA2 Stream 6: FREE
DMA2 Stream 7: FREE

На FURYF4OSD, если включён bit-banged DSHOT, DMA для гироскопа будет недоступен, но обе шины — 2 и 3, используемые соответственно для OSD и FLASH, — доступны.

# status
MCU F40X Clock=168MHz (PLLP-HSE), Vref=3.26V, Core temp=51degC
...
Gyros detected: gyro 1 locked
GYRO=MPU6000, ACC=MPU6000
...

# dma show

Currently active DMA:
--------------------
DMA1 Stream 0: SPI_MISO 3
DMA1 Stream 1: FREE
DMA1 Stream 2: LED_STRIP
DMA1 Stream 3: SPI_MISO 2
DMA1 Stream 4: SPI_MOSI 2
DMA1 Stream 5: SPI_MOSI 3
DMA1 Stream 6: FREE
DMA1 Stream 7: FREE
DMA2 Stream 0: SPI_MISO 1
DMA2 Stream 1: DSHOT_BITBANG 1
DMA2 Stream 2: DSHOT_BITBANG 2
DMA2 Stream 3: SPI_MOSI 1
DMA2 Stream 4: ADC 1
DMA2 Stream 5: FREE
DMA2 Stream 6: FREE
DMA2 Stream 7: FREE

Если его отключить, то благодаря тщательному выбору пинов для выходов двигателей все SPI-шины поддерживают DMA, что даёт оптимальную производительность полёта. Следует учитывать, что LED_STRIP больше не сможет быть назначен на DMA1 Stream 2, так как он занят MOTOR 3. При выборе между мигающими светодиодами и оптимальной производительностью полёта решение принять легко, но это иллюстрирует некоторые компромиссы, на которые, возможно, придётся идти ради лучшей производительности полёта.

# status
MCU F40X Clock=168MHz (PLLP-HSE), Vref=3.26V, Core temp=51degC
...
Gyros detected: gyro 1 locked dma
GYRO=MPU6000, ACC=MPU6000
...

# dma show

Currently active DMA:
--------------------
DMA1 Stream 0: SPI_MISO 3
DMA1 Stream 1: MOTOR 4
DMA1 Stream 2: MOTOR 3
DMA1 Stream 3: SPI_MISO 2
DMA1 Stream 4: SPI_MOSI 2
DMA1 Stream 5: SPI_MOSI 3
DMA1 Stream 6: MOTOR 1
DMA1 Stream 7: MOTOR 2
DMA2 Stream 0: SPI_MISO 1
DMA2 Stream 1: FREE
DMA2 Stream 2: FREE
DMA2 Stream 3: SPI_MOSI 1
DMA2 Stream 4: ADC 1
DMA2 Stream 5: FREE
DMA2 Stream 6: FREE
DMA2 Stream 7: FREE

Антиалиасинг данных гироскопа для PID-циклов 4k

При работе с PID-циклом 4k мы настоятельно рекомендуем оставлять фильтр gyro lowpass 2 активным. Если вы хотите перейти к единственному фильтру низких частот гироскопа, оставьте lowpass 2.

Причина в том, что lowpass 2 — очень эффективный антиалиасинговый фильтр при понижающей дискретизации гироскопа с 8k до 4k. Если gyro lowpass 2 отключён, а плата работает на 4k, вместо него включается простой фильтр усреднения по 2 точкам. Это не такой хороший антиалиасинговый фильтр, как PT1 на 1000 Гц, и совсем не такой хороший, как на 500 Гц.

Для PID-циклов 2k фильтр gyro lowpass 2 на 500 Гц (PT1) абсолютно необходим.

Большинство чистых квадрокоптеров на 4k будут отлично летать с выключенным gyro lowpass 1 и всего одним фильтром gyro lowpass 2 на 500 Гц.

PID-циклы 8k не имеют проблем с алиасингом, поэтому gyro lowpass 2 можно отключать без опасений по поводу алиасинга; однако квадрокоптер должен быть чистым, чтобы отключать всю фильтрацию гироскопа.

Мульти-динамический notch

Новый динамический notch-фильтр на основе SDFT (Sliding Discrete Fourier Transform — скользящее дискретное преобразование Фурье) может отслеживать несколько независимых шумовых пиков и назначит отдельный notch-фильтр каждому пику. Пользователь может задать до 5 notch-фильтров на ось. Обычно требуется не более двух-трёх, в зависимости от сборки, а часто только один.

SDFT отслеживает источники шума гораздо эффективнее, чем раньше. Код полностью другой. Он оптимизирован для контроля проблем с резонансом при использовании в сочетании с RPM-фильтрацией. RPM-фильтр по-прежнему лучше всего подходит для шума, связанного с RPM.

Q-факторы порядка 300–450 хорошо работают для фристайл-применений. Удержание минимального значения настолько высоким, насколько практично (например, 200 Гц), и использование минимального количества notch-фильтров минимизирует задержку, связанную с notch-фильтрами.

Чтобы правильно настроить динамический notch, запишите журнал полёта с выключенным динамическим notch, проведите спектральный анализ и посмотрите, есть ли резонанс, который нужно контролировать, и каковы резонансные частоты. Задайте диапазон динамического notch так, чтобы он включал резонансные пики с дополнительными 20 Гц с каждой стороны от шума, чтобы наверняка полностью отфильтровать нужные частоты. Затем полетайте снова и проверьте, что входящие линии резонанса исчезли с графиков гироскопа. Затем повторите с более высокими значениями Q, чтобы найти максимальный Q, который адекватно контролирует эти резонансы.

Для квадрокоптеров, которые не могут использовать RPM-фильтрацию, код SDFT будет работать достаточно эффективно, если настроить его на три-четыре notch-фильтра и Q-факторы порядка 120–150. Эти более широкие notch-фильтры помогают учесть быстро меняющиеся центральные частоты колебаний, вызванных частотой двигателей, которые наблюдает гироскоп, поскольку мульти-динамический notch не может реагировать так же быстро, как notch-фильтры RPM-фильтра, управляемые двунаправленным DShot, но работает достаточно эффективно на самых разнообразных аппаратах.

Мульти-динамический notch по-прежнему можно использовать вместе со статическими notch-фильтрами, применяемыми к gyro и к значениям D-Term. Статические notch-фильтры лучше всего работают против резонанса с постоянной частотой. Если вы обнаружите у себя сильный резонанс с постоянной частотой, вам может потребоваться применить узкий статический notch по частоте резонанса в gyro или D Term, чтобы захватить остаточный шум, оставшийся от SDFT. Для аппаратов с известными конкретными статическими частотами, такими как резонанс рамы, вручную добавленный статический notch с правильной частотой среза должен работать лучше мульти-динамического notch, а также позволит сделать диапазон частот мульти-динамического notch шире. Если у аппарата есть специфический резонанс, присутствующий ровно на одной частоте во всём диапазоне газа и условий полёта, рекомендуется добавить статический notch и уменьшить количество мульти-динамических notch-фильтров на один.

Изменение диапазона мульти-динамического notch приводит к изменению размеров бинов (bin), которые использует алгоритм SDFT, хотя включён второй этап квадратичной оценки, который центрирует каждый динамический notch на наиболее точной оценке центральной частоты, используя данные обоих соседних бинов. Увеличение диапазона между значениями MinHz и MaxHz обменивает часть разрешения на более широкий частотный диапазон и может заставить систему динамических notch-фильтров быстрее реагировать на изменения частоты, что может помочь в подавлении быстро меняющихся резонансов на высокой частоте.

Больше деталей — в PR #10554.

RC-смузинг на основе PT3

Система RC-смузинга была упрощена и улучшена. Кинематографичные и HD-пилоты теперь могут получить потрясающе гладкие результаты, которые раньше были невозможны.

Старый метод линейной интерполяции удалён, потому что метод на основе фильтра PT3 работает лучше (без переброса, с меньшей задержкой, с лучшей настраиваемостью).

Мы очень настоятельно рекомендуем держать rc smoothing включённым всё время — то есть set rc_smoothing = ON. Если вы его выключите, двигатели получат очень ступенчатые управляющие сигналы, будут греться и шуметь сильнее, а на более низких скоростях линка квадрокоптер будет трястись на частоте линка.

Алгоритм автосглаживания не изменился. Он определяет скорость вашего RC-линка при разблокировке двигателей, автоматически устанавливает частоты среза RC-смузинга и меняет их значения, если скорость линка изменится в полёте (хотя на это требуется время).

Значение по умолчанию автосглаживания теперь 30, что даёт достаточно хорошо сглаженную линию уставки и очень небольшую задержку по сравнению с несглаженным сигналом.

Для HD-фристайла значение авто 60 обеспечит большую плавность и не так уж много дополнительной задержки.

Для кинематографичного видео, где нужна абсолютная плавность, значения авто около 90–120 дадут ту шелковистую, лёгкую плавность, к которой вы стремитесь, ценой заметной задержки стиков. В сочетании со снижением джиттера и сглаживанием feed forward большинство кинематографичных кадров будет невероятно гладким.

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

Для кинематографичных полётов с быстрым радиолинком и для Crossfire в незафиксированном режиме, возможно, лучше вручную переопределить автосглаживание, чтобы получить постоянную степень плавности на протяжении полёта и между сборками с разными радиолинками. Это можно сделать, задав в CLI фиксированные, не-автоматические значения. Для кинематографичных целей хорошо работает 10–15 Гц независимо от скорости линка. Этот набор команд подходит для этого:

set rc_smoothing_setpoint_cutoff = 10
set rc_smoothing_feedforward_cutoff = 10

То же самое применимо к незафиксированному Crossfire, который может случайно переключаться между 50 Гц и 150 Гц. Здесь значение 20–30 Гц даст достаточно стабильное ощущение стиков и приемлемую плавность даже в режиме 50 Гц:

set rc_smoothing_setpoint_cutoff = 25
set rc_smoothing_feedforward_cutoff = 25

Обычно мы не советуем опускать автосглаживание ниже 30, хотя на высоких скоростях линка, например 250 или 500 Гц, значение 20 может быть хорошо для гонок, поскольку сводит задержку к абсолютному минимуму. Будет некоторая передача частот RC-линка в ваши двигатели, но небольшая. Если вы слышите разницу или двигатели греются сильнее, вернитесь к 30.

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

Значение RC-смузинга для газа настраивается независимо — автоматически или вручную. Лучше оставить его на 30, если только вы не гонщик с высокоскоростным линком и не хотите попробовать 20. Чтобы избежать скачков газа на кинематографичной сборке, поднимите его выше, но следует учитывать возможное запаздывание газа при выводе из пикирования

В режиме Auto RC-смузинг теперь применяется в равной мере к уставке и к feedforward. В заголовке журнала полёта будут показаны фактические частоты, используемые с вашим линком. В CLI вы можете вручную настроить величину сглаживания feedforward относительно уставки. Тестирование на сегодняшний день не показало, что эта опция явно полезна в каком-либо практическом смысле, и, вероятно, в будущем её уберут. Гораздо больше смысла управлять ступенчатостью feed forward через сглаживание feedforward (feedforward_smooth_factor); тяжёлый RC-смузинг по feedforward неэффективен против джиттера линка и добавит много задержки.

Больше деталей — в PR #10650.

Кроссфейд RPM (RPM crossfading)

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

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

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

Это чрезвычайно полезно для RPM-фильтрации. Ранее, когда любой двигатель опускался ниже минимальной частоты RPM, его три RPM-notch-фильтра оставались активными, но удерживались на своей минимальной частоте. Хотя шума для удаления не было, они создавали задержку, реагировали на близлежащие частоты, вызывая своего рода интермодуляционные искажения и ухудшая пропвош.

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

Как только RPM-фильтры полностью выключены, они не создают никакой задержки или помех, что даёт более чистые и лучшие графики гироскопа, чем раньше.

На большинстве сборок значимый шум, связанный с RPM, не начинает появляться примерно до 100 Гц (6000 об/мин). Так что можно начать RPM-фильтрацию, скажем, с 80 Гц и растянуть кроссфейд на 50 Гц, чтобы к 130 Гц, то есть 10 000 об/мин, у вас снова была полная RPM-фильтрация. Например:

set rpm_filter_min_hz = 80
set rpm_filter_fade_range_hz = 50

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

Минимальное значение RPM по умолчанию, при котором RPM-фильтрация впервые включается, равное 80 Гц, также хорошо подходит большинству квадрокоптеров. Квадрокоптеры с очень чистыми воздушными винтами и очень небольшим собственным RPM-шумом могут сдвинуть это значение выше, например:

set rpm_filter_min_hz = 100
set rpm_filter_fade_range_hz = 70

Для очень крупных квадрокоптеров с низкими RPM мы бы выбрали пропорционально более низкие значения, поскольку они работают на низких оборотах.

Настройка кроссфейда требует включения debug dshot_telemetry, выполнения нескольких плавных равномерных наборов газа от нуля до 50 % без других воздействий стиками и затем добавления сбросов газа. Лучше установить PID низкими с тяжёлой фильтрацией по D, чтобы убрать шум по D. По графикм debug посмотрите на точку, где обороты двигателей попадают в область кроссфейда, и проверьте, не попадает ли в график гироскопа шум, связанный с оборотами двигателей. Если минимум RPM задан слишком высоко, вы получите заметный шум от двигателей, просачивающийся через зону кроссфейда. Если вы не уверены, что видите, установите минимум кроссфейда очень высоко. Это фактически отключит RPM-фильтрацию на низких оборотах и пропустит шум. Если задать минимум с очень низким значением кроссфейда, например 10, будет резкое изменение, когда RPM-фильтрация включится. Минимум следует задавать ниже точки, где шум RPM становится проблемой, а диапазон кроссфейда можно расширять вверх, пока он тоже не допустит некоторое, но не слишком сильное просачивание в верхней зоне перехода. Цель — максимальные значения, совместимые с разумным ослаблением шума от двигателей.

Больше деталей — в PR #10757.

Снижение джиттера feed forward (Feedforward jitter reduction)

Это существенное изменение, которое обеспечивает настоящую плавность, когда она вам нужна, и при этом столько же feed forward резкости реакции, сколько вы можете пожелать при быстрых движениях стиками. Оптимально для плавных скоростных гонок и для резких фристайл-воздействий.

Оно полностью устраняет необходимость использовать старую функцию Transition для Dterm и feedforward, которая обеспечивала ослабление feed forward только когда стики в центре. Новое решение даёт похожее ослабление в любом положении, пока стики неподвижны или движутся медленно.

Feed forward, особенно с boost, известен как параметр отзывчивости стиков — и не зря. Он обеспечивает сильную и немедленную реакцию на движения стиков. Хорошее количество feed forward (скажем, 120–130) сделает квадрокоптер суперотзывчивым, не добавляя переброса. Оно придаёт резким фристайл-воздействиям дополнительную искру и даёт гонщикам почти нулевую задержку от уставки до гироскопа.

Однако он усиливает даже мельчайшие RC-воздействия и может привести к неплавному полёту и рывкам в HD-видео. Неважно, происходят ли эти подёргивания RC от нервозности, слегка липких или шумных гимбалов, проблем с соединением RC-линка — все они преувеличиваются feed forward… до сих пор.

Прежний способ борьбы с этими джиттера — использовать feedforward transition, который линейно ослаблял feed forward до нуля, когда ваши стики были близко к центральному положению. Это решало проблему избыточного feed forward в центральном положении стиков — но нигде больше.

У Transition есть ряд ограничений. Он работает только когда стики в центре; если вы в плавном развороте, стики не в центре, но неподвижны — вы тоже хотите плавного полёта. Однако Transition в такой ситуации куда менее эффективен. Кроме того, при движении стиков через центр в плавном движении Transition резко вырежет feed forward в центре, вызвав покачивание — хуже всего при узких диапазонах перехода. Если же сделать диапазон перехода широким, вся польза feed forward теряется в середине, и резкие перевороты становятся труднодостижимыми.

Снижение джиттера сильно ослабляет feed forward, когда стики движутся медленно, независимо от их абсолютного положения.

Это изменение можно рассматривать как своего рода функцию динамического перехода.

Значение jitter_reduction_factor по умолчанию, равное 7, лучше всего подходит большинству квадрокоптеров с обычными радиолинками и годится для гонок, обеспечивая плавность и отзывчивость как в плотных разворотах, так и на скоростных прямых.

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

Значение 12–15 практически полностью убирает feed forward с медленных плавных воздействий — это то, что мы предлагаем для фристайла и кинематографичной съёмки. Квад будет одинаково плавным и в прямом полёте с стиками в центре, и в продолжительных плотных разворотах. При этом если вы резко щёлкнете стиками, реакция будет немедленной.

Принцип работы следующий. Мы смотрим, насколько значения RC-команды меняются от пакета к пакету, усредняем две самые последние величины изменения и сравниваем это среднее с настраиваемым пользователем порогом. Затем мы сводим feed forward к нулю, когда недавняя скорость изменения RC ниже порога. Но когда изменения RC-команды больше порога, мы пропускаем feed forward без изменений и без задержки, чтобы дать немедленные хлёсткие реакции, когда мы двигаем стики быстро.

Значение jitter_reduction_factor — это порог изменения RC-команды в десятых долях процента хода стика, ниже которого feed-forward ослабляется. Значение 10 означает, что feedforward будет прогрессивно ослабляться при изменениях RC-команды менее 1 % за шаг. Ослабление ниже порога следует своего рода экспоненциальной кривой, так что при значении 10 будет лишь 10–20 % от обычного feedforward для шагов изменения rcCommand от 0,1 % до 0,2 % полного RC-диапазона.

И частота линка, и разрядность линка влияют на подходящее значение снижения джиттера. На низких частотах линка, например 50 Гц, большинство RC-шагов крупные, и проблемы джиттера, о которой стоит беспокоиться, практически нет. Поэтому значения по умолчанию и предложенные значения для фристайла применимы для линков 50–150 Гц.

На более высоких скоростях линка, 250 Гц и выше, возникает проблема: доступно лишь ограниченное число шагов, и на обнаружение изменения мало времени. Протоколы Crossfire и FrSky дают только 800 шагов на весь диапазон RC, то есть лишь 400 шагов от центра до максимального положения. Если пилот медленно ведёт стик за одну секунду до максимума, некоторые RC-шаги будут высотой в один, а другие — в два пакета. Такие мелкие шаги различаются на 100 % от шага к шагу, что даёт много джиттера в feedforward, который считает, что стики страшно трясутся. Собственный джиттер человека и сам гимбал создают шум не меньше этой величины, и feedforward в обычном случае его усилит — точно так же, как D усиливает шум гироскопа.

Вот здесь код снижения джиттера и помогает убрать этот остаточный шум на высокоскоростных линках; это своего рода динамический фильтр с нулевой задержкой, применяемый к feedforward, когда соотношение сигнала к шуму было бы плохим. Он применяет фильтрацию первого порядка к простой производной уставки и фильтрацию второго порядка к элементу boost.

Таким образом, система снижения джиттера заметно снижает джиттер гимбалов на всех системах, но наиболее эффективна и важна на системах с высокой частотой линка и лишь 800 шагами. Поэтому мы советуем держать её на значении по умолчанию на всех RC-линках, увеличивать её для фристайла и кинематографичной съёмки и, возможно, опускать до 5, но только на чистых RC-линках — для гонок.

Более новые RC-протоколы с 11 и 12 битами и 2000 шагов дадут лучшее разрешение, однако шум гимбалов останется проблемой, поэтому код снижения джиттера, вероятно, будет нужен и в обозримом будущем.

Больше деталей — в PR #10670.

Настройки сглаживания feedforward для скоростных Rx-линков

Старый код ff_smooth_factor обновлён и теперь называется feedforward_smooth_factor. Он обеспечивает сглаживание высоты ступенек второго порядка для boost, а также обычное сглаживание первого порядка для простой производной. Это даёт более эффективное сглаживание сигнала boost при меньшей задержке простой производной.

Подходящее начальное значение 25 достаточно для большинства сборок.

Для RC-линков 250 Гц следует установить feedforward_smooth_factor в 40–50, а feedforward_averaging — в 2_point.

Для RC-линков 500 Гц вы должны установить feedforward_smooth_factor в 65–70, а feedforward_averaging — в 2_point.

Прочие изменения Feedforward

Ряд небольших, но значимых изменений feedforward даёт более гладкий сигнал с меньшей задержкой.

Все параметры в CLI, относящиеся к feedforward, теперь начинаются с feedforward, а не с ff_. Чтобы перечислить их все: get feed.

feedforward_averaging теперь по умолчанию установлен в off, так как большинству сборок он не потребуется. Его следует установить в 3_POINT, чтобы обеспечить скользящее усреднение по трём точкам для старых линков Crossfire 150. Все RC-линки 500 Гц и почти все линки 250 Гц выигрывают от усреднения feedforward по 2 точкам, но новый код снижения джиттера означает, что большинству линков ниже 250 Гц (FrSky, Crossfire и и так далее) усреднение feedforward не требуется.

feedforward_max_rate_limit заменяет ff_max_rate_limit и представляет собой значение, которое притягивает feedforward назад, когда стики приближаются к своей максимальной скорости, тем самым минимизируя переброс при достижении максимального положения стика. Баг, ограничивавший его полезность, исправлен. Значение по умолчанию 90 лучше всего подходит большинству квадрокоптеров. Маломощным квадрокоптерам может понадобиться 100.

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

Эти изменения дают намного более гладкую, но при этом суперотзывчивую систему feedforward.

Улучшения AntiGravity

Antigravity теперь повышает P при резких сбросах газа, поскольку резкое изменение угла по pitch требует для контроля большего, чем может дать отклик I-терма. Кроме того, изменено согласование по времени boost по I, чтобы он лучше совпадал по времени с моментом покачивания.

Значение по умолчанию теперь всего 3,5, что отражает большую эффективность нового кода.

Осторожно. неразумно использовать очень высокие значения AntiGravity в 4.3, потому что вы рискуете получить значительные покачивания по P и I при сбросах газа.

Придерживайтесь значений, близких к используемым по умолчанию.

Если вы всё же хотите увеличить AntiGravity, тестируйте методично. Высокие значения, например 5 и выше, могут не дать намного больше обычных; используйте наименьшее значение, совместимое с разумным контролем.

См. #10163 для деталей.

Динамическая экспо-кривая фильтра гироскопа

dyn_lpf_gyro_curve_expo позволяет значению частоты среза динамического фильтра низких частот расти быстрее с увеличением газа, чем раньше. Работает практически так же, как expo для D lowpass.

Это снижает задержку на более высоких положениях газа. Если у вас значительно больше высокочастотного шума на высоком газе, уменьшите величину expo или уменьшите верхнее значение частоты среза динамического lowpass.

Графики смотрите в PR9486.

Улучшенный dynamic idle

Новый код dynamic idle теперь использует полноценный PID-регулятор и гораздо проще в настройке. Он улучшает устойчивость к рассинхронизации двигателей и управляемость на низком газе.

Не следуйте старым инструкциям 4.2. Вам больше не нужно измерять RPM на вкладке Motors. Всё, что нужно сделать:

  • включить DShot Telemetry;
  • перейти на вкладку PID Tuning и установить Dynamic Idle Min RPM в значение от 30 до 40 (то есть минимальные обороты холостого хода 3000–4000 об/мин).

ПРИМЕЧАНИЯ:

  • Если DShot Telemetry включена, но работает неправильно, вы не сможете выполнить разблокировку двигателей.
  • DShot Telemetry должна быть включена, чтобы работали RPM-фильтрация или Dynamic Idle.
  • Если DShot Telemetry не включена, Dynamic Idle будет отключён и будет использоваться статический процент DShot Idle.
  • Когда Dynamic Idle активен, DShot Idle становится неактивным и выделяется серым.
  • Нет необходимости подстраивать DShot Idle для использования Dynamic Idle. Оставьте то значение, которое, как вы обнаружили, работает лучше всего.
  • Если ESC поддерживает DShot-телеметрию, вы теперь можете использовать Dynamic Idle, даже если предпочитаете не использовать RPM-фильтрацию.

Новый код в 4.3 не требует никаких специальных корректировок значения процента DShot Idle; следует оставить то значение, которое работает наилучшим образом в не-динамическом режиме idle.

При разблокировке двигателей и до активации airmode вы не получите полный минимальный RPM Dynamic Idle. Двигатели не будут раскручиваться очень быстро при первой разблокировке, потому что до активации Airmode есть ограничение на воздействие на двигатели. Поэтому Dynamic Idle действует как своего рода утончённая функция автоматического повышения оборотов холостого хода, дающая все преимущества прежних ручных переключателей повышения оборотов холостого хода в полёте, но без их недостатков.

При высоком минимальном RPM двигатели сохраняют обороты всё время, что ведёт к большей отзывчивости на нулевом газе, более чистым флипам и бочкам и более аккуратным разворотам. При высоких значениях самые медленные двигатели будут давать тягу во время флипов, а не почти срываться, и квадрокоптер будет склонен описывать в небе что-то вроде круга. То же происходит на разворотах на 180 градусов, которые превращаются в небольшие дуги.

Кроме того, при высоком минимальном RPM квадрокоптер будет медленнее терять высоту при плоских сбросах газа прямо стоя, потому что двигатели будут постоянно создавать небольшую тягу вверх. Это допустимо, и это также улучшит стабильность и управляемость в таких манёврах, которые иначе могут сильно страдать от пропвоша.

В обоих случаях высокий минимальный RPM помогает избежать пропвоша, поскольку вы, как правило, всегда движетесь в чистом воздухе; это целесообразно для фристайла или скоростных гонок.

При высоком минимальном RPM мощный рывок вверх с последующим разворотом на 180 в перевёрнутое положение и жёстким сбросом газа не приведёт к такому высокому подъёму вверх, потому что двигатели дадут больше тяги вниз, так как RPM будет выше обычного. Однако когда квадрокоптер начнёт падать вниз и поток воздуха на воздушные винты позволит Dynamic Idle срезать воздействие на двигатели, управляющее воздействие может упасть до нуля, и висение в перевёрнутом положении должно быть почти таким же, как обычно.

Для максимального времени висения в перевёрнутом положении и, вероятно, для полётов Line Of Sight используйте наименьшее минимальное значение RPM, при котором не возникает рассинхронизации двигателей.

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

Если Dynamic Idle вам не подходит, установите его в ноль — и вы вернётесь к статическому методу DShot Idle Percent.

Новый код настолько эффективен, что часть квадрокоптеров может работать при минимальном dynamic idle RPM всего 1000 об/мин. Воздушные винты видны медленно вращающимися во время флипов и бочек в LOS, но рассинхронизация двигателей не возникает. Опускаться до столь низких значений не рекомендуется.

Для большинства общих задач фристайла или гонок минимальное значение RPM 4000 обычно работает очень хорошо.

Настройка:

Вместо настроек idle_adjustment_speed и idle_p теперь у нас есть PID-регулятор. Это обеспечивает более точное управление RPM.

Обычно более мощным квадрокоптерам потребуются более низкие значения P, например 40 для сильной сборки на 6S, а сборкам с более низкой управляемостью могут пойти на пользу более высокие значения PID.

Лучший способ проверить стабильность управления RPM — записать журнал полёта с соответствующим Debug и сделать несколько плоских падений на нулевом газе. Если значение RPM колеблется, попробуйте уменьшить P. Если оно стабильно во время падения, но кратковременно проваливается ниже целевого значения при сбросе, добавьте больше D или больше P.

Больше деталей — в PR #10294.

Опции линейного и динамического микшера

Когда активен airmode, стандартный микшер Betaflight отдаёт приоритет управляемости PID над газом. Каждый раз, когда двигатель может потребоваться вести в отрицательную сторону, чтобы сохранить управляемость, газ увеличивается режимом airmode так, чтобы можно было достичь запрошенного дифференциала двигателей.

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

Однако есть и минусы. Airmode приводит к сильным реакциям при ударах; квадрокоптер получит больше газа и полезет вверх. Есть довольно резкое изменение управляемости, как только достигаются пределы, которые может обеспечить Airmode.

Эти альтернативные модели микшера меняют относительный акцент между управляемостью по газу и управлением PID.

Они могут быть полезны в плавных кинематографичных стилях полёта, обеспечивая своего рода частичный эффект airmode с меньшим отскоком при посадке ценой ограниченной производительности PID на низком газе в быстрых манёврах. Целесообразность их применения оценивается опытным путём.

Больше деталей — в PR #10370.

Feed forward в режимах Level и Horizon

В 4.3 feed forward теперь доступен в режимах Level, Level Race и Horizon.

В режиме Level Mode это даёт более мгновенную реакцию при движении стиков для изменения угла квадрокоптера. Квад должен быстрее принимать ваш новый заданный угол.

В режиме Horizon Mode при агрессивном полёте поведение теперь почти точно такое же, как в acro, со всеми преимуществами, которые feed forward даёт с точки зрения немедленной реакции на стики и сниженного переброса. Поведение при этом заметно улучшается.

Если вы новичок и находите Level слишком дёрганым, уменьшите значение feedforward в PID.

Больше деталей — в PR #10778.

Actual Rates как новое значение по умолчанию Betaflight

Начиная с 4.3 Actual Rates становятся новым значением по умолчанию Betaflight. Графики и дополнительную информацию смотрите в PR #10724.

ACTUAL rates позволяют задать как целевую чувствительность в центре, так и максимальную скорость бочки в градусах в секунду.

Эти два значения независимы друг от друга.

Expo сдвигает точку перехода между двумя скоростями ближе к центру (к нулю) или дальше наружу (к максимуму).

Этот онлайн-калькулятор позволяет визуализировать сравнение Betaflight rates и Actual Rates.

Новые значения по умолчанию НЕ в точности такие же, как старые Betaflight rates. Хотя максимальная скорость та же (670 градусов в секунду), новые значения по умолчанию мягче в центре (чувствительность в центре 70 против примерно 200 в старых значениях по умолчанию Betaflight) и более отзывчивы дальше от центра. Смотрите изображение в pull request.

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

Некоторые опытные гонщики используют чувствительность в центре 200 градусов в секунду и максимум 620 градусов в секунду без expo. С кодом снижения джиттера 200 градусов в секунду даёт очень быстрый вход в разворот, оставаясь при этом плавным и контролируемым в плотных разворотах. Другие предпочитают более низкие значения.

Пользователи Betaflight rates могут использовать этот калькулятор rates, чтобы найти эквивалент в Actual rates тому, на чём они летают сейчас. Например, центр 200, максимум 670 и expo 0,58 дают исходную используемую по умолчанию кривую Betaflight rates.

Если пользователь вставит свои числа Betaflight rates, скажем, из diff all, информация о rates_type не будет включена. Результатом будет то, что активируются Actual Rates, но с числами Betaflight CLI. Квадрокоптер станет нелетабельным. Именно поэтому копирование и вставка вывода команд diff all недопустимы. Rates следует воссоздать вручную или, если вы всё же копируете и вставляете, обязательно включайте строку rates_type из вывода команды CLI dump при вставке ваших rates.

Больше деталей — в PR #10724.

Опции фильтрации PT2 и PT3

Раньше фильтр второго порядка Biquad был доступен как опция для сглаживания гироскопа и D, когда фильтрации первого порядка не хватало. Иногда так было с гироскопами Bosch. Однако мы узнали, что Biquad может колебаться при ступенчатых воздействиях и давать переброс на некоторых воздействиях с частотным составом вблизи среза. 4.3 больше не использует Biquad ни для какой фильтрации низких частот. Биквадратная фильтрация по-прежнему остаётся опцией как для lowpass гироскопа, так и для lowpass по D — для тех, кто чувствует, что она даёт там конкретную пользу.

Если вашему аппарату требовалась фильтрация гироскопа второго порядка, мы рекомендуем вариант PT2, который работает почти как каскад фильтров PT1, но со скорректированной должным образом частотой среза. Опция PT2 даёт меньше задержки, чем эквивалентный фильтр Biquad, хотя и немного меньше фильтрации, и рекомендуется использовать её вместо Biquad. Фильтрация PT3 даёт больше фильтрации и задержки, чем эквивалентный Biquad, и обычно не нужна для фильтрации гироскопа или D.

По сравнению с PT1 задержка фильтра увеличивается примерно на 60 % с PT2 и удваивается с PT3.

Больше деталей — в PR #10727.

Улучшения RC-линков CrossfireV3 и Ghost

В 4.3 внутренняя цепочка RC-данных полностью основана на float, что даёт отсутствие алиасинга или потери разрешения независимо от содержимого RC-пакетов. Мы также поддерживаем протоколы Crossfire V3 и 11-битный Ghost.

Мы также лучше поддерживаем очень низкочастотные линки — вплоть до 16 Гц — за счёт ограничения RC-смузинга и предотвращения ложных ошибок тайм-аута пакетов, которые иначе испортили бы feedforward. И мы поддерживаем линки до 1000 Гц, допуская отклонения до 950 нс без объявления ошибки.

Логи Blackbox теперь показывают несглаженный rcCommand, а режимы Debug RC и feedforward показывают несглаженную уставку по Roll и другие полезные данные для проверки качества и разрешения RC-линка.

Улучшенная оценка высоты с помощью баро и GPS

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

  • position_alt_gps_min_sats — требуемое количество спутников, чтобы начать использовать и GPS, и баро.
  • position_alt_baro_fallback_sats — требуемое количество спутников, чтобы перестать использовать GPS и вернуться к баро.

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

Улучшения Configurator

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

*Перевод подготовлен для technobee.ru. Оригиналы: Betaflight 4.2 Tuning Notes и Betaflight 4.3 Tuning Notes (официальная документация Betaflight). Команды CLI, имена параметров и служебные выводы консоли приведены в оригинальном виде.*

Betaflight 4.2 и 4.3: Краткая информация по настройке
52