Перейти к содержимому
Настройка PID в Betaflight 4.5. Часть 2. PID для взрослых.

Настройка PID в Betaflight 4.5. Часть 2. PID для взрослых.

03 июня 2026
Технику БПЛА | Хобби

Внимание! “Актуально для Betaflight 4.5.x (в других версиях названия пунктов, поведение ползунков и логика некоторых функций могут отличаться).”

Этот урок — про настройку PID в Betaflight 4.5 так, чтобы вы понимали, как устроен PID‑F контроллер, что именно делает каждая составляющая, и каким порядком действий прийти к настройке, которая становится лучше на каждом шаге. Материал выстроен от базовых вещей к более продвинутым, поэтому вы можете остановиться на любой стадии и всё равно получить более качественный тюн, чем был до этого.

Место в серии. Фильтры (Filters) → PID (этот урок) → Рейты (Rates). PID‑настройка опирается на правильную фильтрацию: без неё вы настраиваете не управление, а реакцию регулятора на шум.

Ключевой принцип этого урока. Мы не пытаемся “подкрутить всё сразу”. Мы идём по логике: сначала выставляем общую “громкость” PID‑контроллера (master multiplier), потом находим правильный баланс быстрых реакций (PD balance), затем доводим точность и удержание (I‑term), и уже после этого переходим к таким вещам, как feedforward и dynamic damping.

Глоссарий существенных терминов

  • PID‑F контроллер (PID‑F controller) — PID‑контроллер, дополненный составляющей прямой связи Feedforward (FF), который в Betaflight формирует команду на моторы по данным стиков (setpoint) и гироскопа (gyro).
  • Setpoint (уставка, целевое значение) — то, что вы “запрашиваете” стиками: желаемую угловую скорость/движение по осям roll/pitch/yaw.
  • Gyro (гироскоп) — датчик, который измеряет фактическую угловую скорость квадрокоптера по трём осям.
  • PID error (ошибка PID) — разница между тем, что вы просите (setpoint), и тем, что реально происходит (gyro).
  • P‑term (P‑составляющая, пропорциональная) — “пружина”: чем больше ошибка PID, тем сильнее P‑term давит в сторону уменьшения ошибки.
  • D‑term (D‑составляющая, дифференциальная) — “амортизатор”: сопротивляется быстрым изменениям угловой скорости, помогает гасить перерегулирование (overshoot) и осцилляции.
  • I‑term (I‑составляющая, интегральная) — “накопитель”: суммирует ошибку во времени и помогает убрать систематическое смещение, которое не убирается одним P‑term.
  • Feedforward, FF (прямая связь) — реагирует на движение стиков (скорость/ускорение изменения setpoint) и уменьшает задержку между вашим вводом и реакцией квадрокоптера, улучшая stick tracking.
  • PID sum (сумма PID) — общий управляющий “толчок”, который контроллер просит по roll/pitch/yaw, после чего он превращается микшером в команды моторам.
  • Motor mixer (микшер моторов) — часть системы, которая преобразует запрос по осям (roll/pitch/yaw) в индивидуальные изменения тяги каждого мотора.
  • Master multiplier (мастер‑множитель) — “общая громкость” PID‑настроек: масштабирует ощущения и силу реакции регулятора, а правильное значение — это максимум, который сборка выдерживает без горячих моторов и осцилляций.
  • PD balance (баланс P:D) — соотношение “пружины” и “амортизатора”, которое задаёт характер быстрого отклика: недостаток даёт вялость, избыток даёт дрожь и осцилляции.
  • PI ratio / PI balance (баланс P:I) — соотношение P и I: P‑term “удерживает” I‑term от раскачки, и при неверном балансе I‑term может дать медленные колебания.
  • Step response (ступенчатый отклик) — анализ реакции квадрокоптера на резкое изменение команды: показывает, насколько быстро система достигает цели, есть ли overshoot и есть ли колебания.
  • Underdamped / Overdamped (недодемпфированный / передемпфированный) — режим, где система либо колеблется (underdamped), либо слишком “ватная” и медленная (overdamped).
  • Angle mode (режим Angle) — режим самостабилизации, в котором ввод в PID получается “чище” для настройки: легче делать контролируемые “вобблы” и собирать понятные данные.
  • Dynamic damping (динамическое демпфирование) — функция, которая может динамически повышать D‑term на резких манёврах и держать меньший D‑term в обычном полёте, чтобы одновременно получить контроль и не перегревать моторы.
  • Dynamic damping advance (dynamic damping advanced) — параметр, который добавляет компонент setpoint в D‑term; в этом уроке он считается нежелательным и должен быть равен 0.
  • D‑min debug / D‑min (режим отладки) — режим логирования для анализа того, как реально меняется D‑term при dynamic damping, и какой “фактор” управляет бустом.
  • Dynamic idle (динамический холостой ход) — поддержание минимальных оборотов моторов (RPM) так, чтобы пропеллеры не “проваливались” в срыв на резких разгрузках; критично для снижения propwash.
  • Propwash (пропвош) — турбулентный “грязный” поток от пропеллеров, который попадает обратно на винты/раму и может вызывать вибрации, дрожь и срывы управления.
  • Blade stall (срыв потока лопасти) — состояние, когда при недостаточных оборотах и/или при высокой нагрузке лопасть работает неэффективно и может создавать нестабильность, особенно на резких изменениях газа.
  • TPA (Throttle PID Attenuation, затухание PID по газу) — механизм, который снижает (обычно D, а иногда P и D) на высоком газе, чтобы убрать высоко‑газовые осцилляции.
  • TPA rate (коэффициент затухания) — насколько сильно PID уменьшается на полном газе.
  • TPA breakpoint (точка включения) — значение газа, с которого начинается затухание.
  • iTerm Relax (расслабление I‑term) — предотвращает накопление I‑term на быстрых движениях стиков, чтобы не получить bounceback в конце манёвра.
  • iTerm Windup (защита от “разгона” I‑term) — ограничивает накопление I‑term, когда моторы близки к насыщению (почти “в потолок”).
  • Antigravity (антигравитация) — наоборот усиливает накопление I‑term при резких изменениях газа, чтобы компенсировать “кивки” и “боббинг” при быстром throttle.
  • PID Toolbox (PID Toolbox) — инструмент анализа логов, который позволяет смотреть step response и принимать решения по PD/PI на основе данных.
  • Stick tracking (следование за стиком) — насколько близко gyro‑кривая повторяет setpoint при резких и быстрых движениях стика.
  • Feedforward boost (буст feedforward) — добавляет компонент FF на основе ускорения движения стика, чтобы ускорить “вход” в манёвр и убрать начальный лаг.
  • Max rate limit (ограничение по максимальной скорости для FF) — уменьшает FF до нуля при приближении стика к максимальному отклонению, чтобы не получить overshoot из‑за резкой “остановки” на механическом пределе стика.
  • Throttle boost (буст газа) — добавляет компонент к газу по ускорению движения throttle‑стика, чтобы уменьшить ощущение задержки при резком “вскрытии газа”.
  • Motor output limit (ограничение выхода на моторы) — ограничивает максимум команды на ESC, позволяя “согласовать” моторы и батарею (например, 4S моторы на 6S батарее).
  • VBAT sag compensation (компенсация просадки VBAT) — выравнивает ощущение тяги по мере разряда батареи, уменьшая мощность на свежей батарее и постепенно повышая по мере падения напряжения.
  • Thrust linearization (линеаризация тяги) — поднимает “эффективный драйв” на низком газе, если система даёт мало момента на малой тяге, улучшая реакцию и tracking при low throttle.

Содержание

1. Карта PID‑F контроллера: входы, ошибки, суммы и микшер

Прежде чем крутить ползунки, полезно один раз увидеть, как части PID‑F контроллера соединены между собой. Тогда вы не будете воспринимать настройки как “магические числа”, а будете понимать, куда попадает каждый сигнал и почему один терм может мешать настройке другого.

technobee_0003_ru_d442d.png

Схема PID‑F контроллера Betaflight (setpoint, gyro, P/I/D/FF, PID sum, mixer)

1.1. Setpoint и Gyro как входы

У PID‑контроллера есть два ключевых входа. Первый вход — это Целевая скорость вращения / setpoint, то есть положение стиков, которое определяет требуемую угловую скорость или движение по осям квадрокоптера. Второй вход — это Текущая скорость вращения / gyro -  фактическая угловая скорость квадрокоптера по roll, pitch и yaw.

1.2. PID error и распределение по термам

Разница между setpoint и gyro — это PID error, то есть ошибка ПИД-регулятора в текущий момент. Именно эта ошибка дальше попадает в P‑term и I‑term, потому что они работают с “несовпадением” между желаемым и фактическим значениями скоростей.

$$e(t)=r(t)-y(t)$$

  • \(r(t)\) — setpoint (команда со стиков);
  • \(y(t)\) — gyro (фактическая угловая скорость);
  • \(e(t)\) — PID error (ошибка PID).

При этом D‑term устроен иначе. Это производная от gyro, то определяет то, как быстро меняется скорость вращение, иначе говоря — угловое ускорение, и пытается сопротивляться слишком резким изменениям. feedforward, в свою очередь, является производной от setpoint (Целевой скорости вращения), то есть от того, как быстро вы двигаете стик.

Если записать идею в одной строке, то общий смысл управления выглядит так:

$$u(t)=K_P\cdot e(t)+K_I\int e(t)\,dt+K_D\cdot \frac{d\,y(t)}{dt}+K_{FF}\cdot \frac{d\,r(t)}{dt}$$

Это не “точная формула Betaflight до последнего коэффициента”, а понятная карта: кто откуда берёт сигнал и что добавляет в сумму управления.

1.3. PID sum и motor mixer

Все термы складываются с разными коэффициентами усиления (gains), и результат называется PID sum. Это тот самый “толчок”, который контроллер просит сделать по roll, pitch и yaw. После этого запрос уходит в motor mixer, и уже микшер превращает его в изменения тяги / throttle по каждому мотору, чтобы квадрокоптер сделал именно то вращение, которое было запрошено.

Когда система работает хорошо, она делает одну вещь снова и снова: минимизирует PID error. Чем меньше ошибка, тем точнее квадрокоптер повторяет то, что вы “рисуете” стиками.

↑ К оглавлению

2. Теория термов: P, D, I и Feedforward

2.1. P‑term как “пружина”

P‑term работает как пружина в стойке подвески “пружина + амортизатор”. Его задача очень прямолинейная: он давит против ошибки PID и пытается привести ошибку к нулю. Чем больше ошибка — тем больше становится P‑term на каждом цикле PID, и тем сильнее он “толкает” квадрокоптер обратно к нужному движению.

technobee_0004_ru_z_9cf3d.png

2.2. D‑term как “амортизатор”

D‑term работает как амортизатор. Он смотрит на то, насколько быстро меняется gyro от цикла к циклу, и его цель — чтобы gyro не “скакал” резко. D‑term сопротивляется изменениям угловой скорости и как бы замедляет слишком резкую реакцию.

Это критично именно потому, что D‑term помогает избегать перерегулирования (overshoot) и осцилляций. Когда квадрокоптер начинает колебаться или пытается менять направление слишком быстро, D‑term может становиться большим и “жёстко” давить, чтобы вернуть реакцию в спокойный, демпфированный режим.

Баланс “пружины” (P) и “амортизатора” (D) очень важен. Правильная пара даёт быстрый выход на цель и спокойную стабилизацию без дрожи.

technobee_0005_ru_d4065.png

2.3. I‑term как “накопление” и устранение систематической ошибки

I‑term тоже смотрит на PID error, но делает это иначе. Он накапливает ошибку во времени. Если у вас есть небольшая ошибка, которая держится долго, I‑term будет постепенно набирать “силу” и давить всё сильнее, пока эта систематическая ошибка не уйдёт в ноль.

Это очень полезно, когда есть фиксированный сдвиг, который не убирается P‑term. P‑term может быть “хорош”, но он не всегда в одиночку способен убрать постоянную мелкую ошибку. А I‑term в конце концов накапливается до уровня, когда он может её задавить.

technobee_0008_353a3.png

2.4. PD и PI баланс: почему важны отношения, а не абсолютные числа

Баланс важен не только между P и D, но и между P и I. Если D‑term удерживает P‑term от раскачки, то P‑term удерживает от раскачки I‑term. Поэтому для конкретного квадрокоптера существует “удачное” соотношение P:D и “удачное” соотношение P:I, при котором вы можете поднять I, P и D максимально высоко, но при этом не получить осцилляций.

И здесь появляется очень практичный вывод: важны соотношения, а не абсолютные числа. Если вы, например, удвоите и P, и D, то их соотношение останется тем же, и характер отклика будет похожим. Меняется “масштаб”, но не сама форма реакции.

Из этого вытекает логика процесса настройки, которой мы будем придерживаться: сначала мы настроим D, потом P, потом I, а уже после этого — такие вещи, как feedforward. Эта последовательность устранит ситуацию, когда один терм “маскирует” проблему другого терма.

technobee_0205_72e6a.png

2.5. Feedforward: почему он убирает задержку и улучшает tracking

Feedforward отличается от P/I/D. P/I/D реагируют на ошибку или на поведение gyro, то есть они в каком‑то смысле работают “после того как что‑то произошло”. Feedforward же смотрит на setpoint, то есть на ваши стики, и реагирует на скорость их движения.

technobee_0009_exp_b8db6.png

Если feedforward выставлен правильно, он заметно уменьшает задержку между движением стика и тем, что показывает gyro. Это улучшает stick tracking, особенно на быстрых, резких движениях. И это одна из причин, почему Betaflight может очень точно “прилипать” к стикам, если всё остальное (фильтры, PD, I) уже выставлено правильно.

↑ К оглавлению

3. Полёты для настройки: как делать манёвры, чтобы данные были “чистыми”

Полёты для PID‑настройки — это серия резких движений по roll, pitch и yaw, потому что именно на резких манёврах видно, где система “вялая”, где она перерегулирует, а где она начинает колебаться. Но здесь есть два простых правила, которые очень сильно влияют на качество данных.

3.1. Держать стик и не отпускать его “пружинить”

Первое правило: держите стик рукой, пока делаете резкие движения. Резко отклонить и вернуть в центр — это нормально. Резко “покачать” влево‑вправо — тоже нормально. Но если вы отпускаете стик и позволяете ему самому отстрелить в центр и подпрыгнуть, вы создаёте механические колебания ввода, которые выглядят как осцилляции, и в итоге “размазывают” данные так, что по ним тяжело принимать решения.

3.2. Почему Angle mode упрощает тюнинг

Второе правило: производите настройку в Angle mode.  Квадрокоптер при калибровке как бы “качает” себя в воздухе, и вам проще контролировать амплитуду и повторяемость манёвров. Поэтому значительную часть PID‑тюнинга действительно удобно делать именно в Angle mode.

Зачем эта дисциплина. Чем “чище” ввод и чем повторяемее манёвры, тем проще увидеть реальную реакцию PID, а не смесь реакции PID с дрожью стика, дребезгом возвратной пружины и случайными колебаниями рук.
↑ К оглавлению

4. Опционально: увеличить PIDsum_limit, чтобы получить больший диапазон регулирования

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

Это делается через CLI. Логика выглядит так: установить лимиты в 1000 и сохранить.

set pidsum_limit = 1000
set pidsum_limit_yaw = 1000
save

Смысл изменения — увеличить “диапазон регулирования” PID‑контроллера: он сможет сильнее "давить" в быстрых манёврах и быстрее "проталкивать" команды в моторы.

↑ К оглавлению

5. Порядок настройки: Master → P:D balance → I‑term → Feedforward → Dynamic damping

Процесс, которым мы пойдём дальше, можно представить как настройку аудио системы. Если “общая громкость” недостаточная, то сколько бы вы ни крутили эквалайзер, результат всё равно будет не тем. Поэтому сначала мы выставляем основную громкость master multiplier. Затем мы работаем с балансом P:D (условно настраиваем “высокие частоты”, treble). Затем доводим качество I‑term (“низкие частоты”, bass). И только после этого переходим к настройкам feedforward и dynamic damping.

5.1. Master multiplier как “громкость”

Фундамент хороших настроек PID — это правильно выставленный master multiplier. Правильное значение — это максимум, который ваша сборка выдерживает без горячих моторов, без осцилляций и без характерных “трелей” D‑term во время полёта.

Чем больше master multiplier вы можете позволить, тем лучше итоговая настройка по ощущению: квадрокоптер становится более отзывчивым, лучше переносит ветер, лучше держит траекторию. Но это работает только до границы, после которой вы начинаете платить перегревом, шумом и осцилляциями.

5.2. Зачем временно отключать dynamic damping при поиске master

Найти правильный master multiplier проще, когда D‑term не меняется динамически в полёте. Поэтому на этапе поиска master рекомендуется выставить dynamic damping в 0, то есть опустить ползунок до нуля, чтобы поведение было стабильным и одинаковым от манёвра к манёвру.

Если вы не видите этих ползунков, это означает, что не включён Expert Mode. Включите Expert Mode в интерфейсе, и после этого дополнительные ползунки, включая dynamic damping, станут доступны.

technobee_0150_55373.png

PID Tuning — ползунок Dynamic Damping (установлен в 0 на время настройки master)

5.3. Почему сборка должна быть “в боевом виде” (GoPro, пропы и т.д.)

Перед тем как настраивать master multiplier, убедитесь, что квадрокоптер находится в “собранном реальном” состоянии, то есть в таком, как вы реально летаете. Если обычно летаете с камерой — камера должна быть установлена. Если вы обычно летаете на пропеллерах, которые слегка повреждаются в процессе и не всегда идеальны — тюнинг также имеет смысл делать на таких пропах. При этом, найденный master multiplier будет реальным максимумом для вашего обычного полёта, а не для “лабораторного” состояния.

5.4. Почему мощные моторы требуют меньший master и это нормально

Есть важное предупреждение: всё более мощные моторы с высоким KV часто требуют меньший master multiplier. Причина здесь не в том, что “меньше — хуже”. Причина в том, что мощные моторы фактически “усиливают” действие PID‑значений, потому что они быстрее и сильнее отвечают на команду. Пропеллеры с более крутым шагом (steeper pitch) тоже дают похожий эффект, но мощные моторы обычно влияют сильнее.

technobee_0206_fe893.png

Полезно понять: низкий master на мощных моторах может дать лучшее ощущение и контроль, чем высокий master на слабых моторах. Потому что мощные моторы быстрее развивают момент, и квадрокоптер получается более отзывчивым даже при меньших “числах” в настройке.

5.5. Практический алгоритм поиска master multiplier

Дальше вы делаете ровно то, что нужно делать в реальной жизни: начинаете чуть ниже 1.0 (например, около 0.5) и постепенно поднимаете значение.

technobee_0149_d15b9.png

При этом вы обращаете внимание на две вещи: температура моторов после полёта и звук моторов в полёте.

  • Если моторы звучат гладко, нет “шероховатости”, нет трелей, нет слышимых осцилляций — дрон пока в безопасной зоне.
  • Если по мере увеличения master квадрокоптер становится всё более собранным, лучше держит propwash, лучше слушает стики — это ожидаемый эффект на пути к оптимуму.
  • Дальше вы придёте к точке, где улучшения замедляются или почти прекращаются. Это обычно означает, что вы близки к оптимальному значению.
  • Если продолжать поднимать, вы начнёте слышать “грубость” работы моторов, трель, осцилляции в некоторые моменты, а после посадки моторы начнут быть ощутимо тёплыми или горячими. Это признаки, что вы "перетянули" master.

Когда вы нашли “лучшее значение” — оставьте master там. И здесь важно не загонять себя в процесс тонкой настройки: если вы ошиблись на 0.1 выше или ниже, это сильно не повлияется на результат. Найдите ту позицию, где всё работает уверенно и чисто, и это будет правильной основой.

technobee_0144_ru_04405.png

Быстрый и практичный вывод. Для “быстрой и простой” настройки иногда достаточно поднять только master multiplier на несколько шагов. Квадрокоптер станет заметно более отзывчивым, и на типичной 5‑дюймовой сборке вы можете на этом и остановиться, если не хотите идти глубже.
↑ К оглавлению

6. Dynamic idle (динамический холостой ход): почему это критично для propwash

Dynamic idle — это вещь, которую имеет смысл воспринимать как “критически важную” для снижения эффекта propwash, особенно на маленьких квадрокоптерах и особенно если вы летаете на пропеллерах с более крутым шагом. Идея здесь упирается в аэродинамику: при определённом сочетании шага, размера и оборотов, лопасти могут уходить в blade stall (срыв потока), что создаёт нестабильность (propwash) именно в тех режимах, где вы быстро снижаете тягу.

technobee_0145_1a6c1.png

Рекомендации по dynamic idle обычно зависят от шага и размера пропеллера. Логика такая:

  • чем меньше размер пропеллера, тем выше нужны обороты, чтобы получить сопоставимую скорость концов лопастей (tip speed);
  • чем выше шаг пропеллера, тем выше нужны обороты, чтобы уменьшить риск срыва потока (blade stall) при нагрузке.

technobee_0146_e28b1.png

Таблица рекомендаций Dynamic Idle RPM в зависимости от размера и шага пропеллера

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

↑ К оглавлению

7. TPA: как убрать осцилляции на высоком газе

7.1. Что делает TPA

Когда квадрокоптер настроен “плотно”, полезно понимать настройку TPA (Throttle PID Attenuation). TPA уменьшает значение D‑терма по мере того, как вы увеличиваете тягу. При необходимости TPA может уменьшать и P-терм, если включить соответствующий режим.

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

7.2. TPA rate и TPA breakpoint: как их интерпретировать

TPA rate — это уровень затухания на полной тяге. Например, значение 0.65 означает, что на полной тяге соответствующий терм будет уменьшен до 35% от его значения на нулевой тяге.

TPA breakpoint — это значение тяги, с которого затухание начинает действовать. Обычно оно задаётся в шкале 1000–2000. В этой шкале:

  • 1000 соответствует 0% тяги;
  • 2000 соответствует 100% тяги;
  • например, 1350 — это примерно 35% тяги.

technobee_0147_ca7a6.png

PID Tuning — блок TPA (TPA rate, TPA breakpoint, TPA mode)

7.3. Как действовать, если осцилляции наблюдаются только при высокой тяге

Если осцилляции начинаются только на высокой тяге и при этом на средней и низкой всё чисто, сделайте следующее:

  1. Поставьте TPA breakpoint чуть ниже того значения тяги, на котором осцилляции начинают проявляться.
  2. Повышайте TPA rate до тех пор, пока осцилляции на high throttle не исчезнут.

Если логи показывают, что при высокоей тяге (high throttle) колеблется не только D‑term, но и P‑term, тогда можно переключить TPA mode на PD, чтобы затухание применялось и к P тоже. Но часто это не требуется, и сначала имеет смысл работать стандартным способом.

↑ К оглавлению

8. Поиск идеального PD balance: отключаем FF и I, снимаем логи, смотрим step response

8.1. Почему на время настройки баланса PD выключают FF и I

Чтобы найти чистый P:D‑баланс, перед его настройкой рекомендуется:

  • опустить feedforward gains до нуля;
  • опустить I gains до нуля;
  • оставить dynamic damping выключенным (в нуле), как и на этапе настройки master.

Смысл этого шага очень конкретный: включенные FF и I могут улучшать или портить форму отклика дрона на движения стиков, так, что вы перестанете видеть реальный баланс P и D. А нам на этом этапе нужен именно “скелет” реакции.

technobee_0208_45534.png

FF gains = 0, I gains = 0 и D max = 0 (временно для PD‑поиска)

8.2. Получение Логов для разных значений баланса P:D

В результате нескольких тестовых полётов у вас должны появится логи для разных значений PD balance. Идея такая: вы не пытаетесь угадать одним числом. Вы намеренно берёте диапазон — от явно “мало” до явно “много” — чтобы, в дальнейшем, при анализе увидеть форму кривой.

На практике: в Betaflight стартуйте со значений ползунка P & I Gain немного ниже 1.0 и затем поднимайтесь шагами примерно 0.1–0.25 до тех пор, пока при резких движениях стиков не появятся слышимые осцилляции двигателей дрона. Осцилляции можно не видеть, но, почти наверняка, можно услышать как характерный звук, особенно на быстрых “рывках”.

technobee_0209_0a468.png

8.3. Анализ в PID Toolbox: step response tool

Скачать PID TOOLBOX

Когда у вас есть набор логов, загрузите их в PID Toolbox. Если лог состоит из нескольких частей, PID Toolbox покажет список подфайлов, и вы сможете выбрать те фрагменты, которые действительно были “полезными полётами”.

technobee_0155_2ec8f.png

technobee_0156_8bc04.png

Дальше перейдите в инструмент Step Response и смотрите, характер откликов при разных значениях баланса P:D.

technobee_0158_8db1e.png

Step Response tool (окно, графики, выбор логов справа сверху). 

Вы будете видеть, как быстро система достигает 1.0 (целевого значения), как она ведет себя в окрестности значения 1.0, есть ли overshoot / превышения и есть ли колебания.

technobee_0163_567a7.png

Одновременное отображение шести логов по осям roll  и pitch для разных настроек баланса P:D

На графике Roll Response выше:

  • Лучший вариант 2для оси Roll - P/D = 50/45 - Отклик быстро достигает значения 1.0, осцилляции незначительные. Превышений нет. Выставляем значение P = 50 для Roll в Betaflight.
  • Худший вариант 5 для оси Roll - Очень большие, незатухающие осцилляции.
  • Лучший вариант 6 для оси Pith - P/D = 77/51. Выставляем значение P = 77 для Pitch в Betaflight (см. ниже).

“Незначительные колебания”
Не беспокойтесь если на графиках Step Response присутствуют небольшие колебания. Это шумы лога. Они есть практически во всех записях и сами по себе не означают, что квадрокоптер реально осциллирует. Опасный признак — это когда колебания становятся "заметными" по амплитуде и долго не затухают (как в варианте 5 в примере) .

8.4. Когда roll и pitch требуют разных значений

Не удивляйтесь, если roll и pitch не совпадут по “идеальному” значению. Бывает, что на roll осцилляции появляются раньше, а pitch ведёт себя спокойнее, или наоборот. В таком случае вы выбираете оптимум отдельно и затем выставляете разные значения через соответствующие ползунки “раздельной подстройки”, чтобы получить, например, один P на roll и другой P на pitch.

technobee_0165_9fcf6.png

Логика настройки выглядит так: вы видите, что, например, roll лучше на PD=1.0, а pitch лучше на PD=1.1, и выставляете эти целевые значения, добиваясь нужных P на каждой оси.

8.5. Как должен выглядеть “правильный” отклик

Есть очень наглядная “картинка‑шпаргалка”, которая помогает понять, что вы ищете:

  • Идеал: быстрое достижение 1.0, возможно едва заметный overshoot “на волосок”, и затем ровная полка без колебаний.
  • Underdamped: большой overshoot и заметные колебания, которые продолжаются.
  • Overdamped: медленный, вязкий выход к 1.0, будто системе “не хватает сил” или она сильно зажата.

Реальные step response всегда содержат немного шума, и это нормально. Важно отличать “лог‑шум” от устойчивой раскачки.

technobee_0166_ru_b7436.png

Когда PD balance найден, вы фиксируете его как базу и только после этого переходите к I‑term, потому что именно PD задаёт быстрый характер реакции, а I уже “достраивает” точность во времени.

↑ К оглавлению

9. Настройка I‑term: широкий диапазон, но заметный выигрыш

Тюнинг I‑term в Betaflight обычно проще, чем тюнинг P и D, потому что окно устойчивости шире. При этом выигрыш от настройки может быть очень заметен, особенно если у вас сборка не “типичная 5‑дюймовая”, а меньше или больше.

9.1. Что значит “интегрирует” и почему важна скорость накопления

I‑term — это интегрирующий (накапливающий) терм. При недостаточно оптимальной настройке, он всё равно в итоге “дойдёт” до нужного уровня, чтобы выдавить систематическую ошибку, но скорость, с которой он работает с ошибкой, зависит от значения I‑Gain в Betaflight.

Если I‑Gain низкий, I‑term будет долго “раскручиваться” до нужного значения. И если вы, например, резко поменяли ситуацию — “перевернули” квадрокоптер или резко изменили направление полета — ему потребуется больше времени, чтобы обработать ошибку позиционирования в противоположную сторону. При более высоком I‑Gain  перестроение происходит заметно быстрее, и это делает полёт более точным и более предсказуемым.

Особенно это ощущается, когда вы летите близко к каким либо объектам и хотите, чтобы квадрокоптер держался “строже”, без ощущения рыхлости.

9.2. Как ощущается недостаток I и как ощущается избыток I

Алгоритм настройки I‑term можно описать просто:

  1. Начните с того, что опустите I‑Gain слайдер пониже. При недостаточном I квадрокоптер будет ощущаться более “свободным”, более рыхлым, менее точным.
  2. Постепенно поднимайте I‑Gain слайдер. По мере роста I квадрокоптер начинает ощущаться более точным, более предсказуемым, более приятным в управлении, а уверенность в полёте растёт.
  3. Если продолжать поднимать слишком высоко, появятся признаки перебора: осцилляции, отскоки, медленные колебания на быстрых манёврах. Это означает, что I‑gain слишком велик, и его нужно чуть снизить.

technobee_0167_807c6.png

I‑gain slider (увеличь до границы осцилляций)

↑ К оглавлению

10. Инструменты вокруг I‑term: iTerm Relax, iTerm Windup, Antigravity

Полезно понимать инструменты, которые изменяют поведение I‑term, в конкретных ситуациях. Это не обязательно означает, что их нужно менять. Но это означает, что вы не будете теряться, если увидите отскок на резком манёвре или колебание при резком газе.

10.1. iTerm Relax

iTerm Relax нужен для того, чтобы ошибка I не накапливалась во время очень быстрых движений стиков. Почему это важно: при очень резком движении квадрокоптер может не успеть идеально повторить ваш setpoint. Он чуть отстанет, появится ошибка PID, и показатель в I-term может быстро стать существенным. При этом, когда манёвр заканчивается, вы скорее всего увидите отскок.

Что помогает не доводить до такого сценария: достаточный feedforward (чтобы отслеживание было более точным) и в целом высокая отзывчивость сборки. Часто iTerm Relax можно оставить по умолчанию. Но если у вас очень отзывчивый аппарат, например гоночный, и feedforward настроен на быструю реакцию, значение cutoff iTerm Relax можно поднять заметно выше, условно до 30–40. А если аппарат медленный и не “прилипает” к стикам на резких движениях, cutoff стоит уменьшить — и правильнее всего делать это по логам, проверяя показатели I‑term.

technobee_0171_33d07.png

iTerm Relax (параметр cutoff)

10.2. iTerm Windup

iTerm Windup похож по назначению на iTerm Relax, но основан не на скорости стиков, а на том, насколько моторы близки к насыщению. Если вы дали резкую команду, и моторы “упёрлись” почти в максимум, в этот момент ошибка I‑term продолжает накапливаться, и коптер легко получает лишний толчек от I-term в конце манёвра.

iTerm Windup ограничивает накопление I‑term в ситуации, когда моторы близки к максимальным значениям. Он работает поверх iTerm Relax и становится сильнее, когда моторы близки “к насыщению”. Пример интерпретации дефолтных настроек: значение 85 означает, что когда моторы выше 85%, начинается снижение накопления показателя I‑term, а при полном насыщении накопление I‑term становится нулевым.

technobee_0172_aceb0.png

iTerm Windup (порог по проценту насыщения моторов)

10.3. Antigravity и его “тонкие” CLI‑настройки

Если iTerm Relax и iTerm Windup уменьшают накопление I‑term в определённых ситуациях, то antigravity делает противоположное: он усиливает накопление I‑term при резких изменениях газа.

technobee_0173_c51ea.png

Это полезно для аппаратов, у которых центр масс заметно смещён относительно центра тяги. При резком газе такие аппараты склонны “кивать” или “подпрыгивать”, особенно когда после этого вы резко снижаете газ "в ноль". Дефолтное значение Gain 8 означает усиление накопления I‑term в 8 раз во время очень быстрого изменения throttle.

Но здесь есть тонкость. Если вы при настройке уже подняли I‑Gain, то 8‑кратный буст может оказаться слишком сильным и начнет сам по себе провоцировать I‑осцилляции при резком газе. Тогда логика коррекции простая: уменьшайте antigravity, например до 4–5, и смотрите, ушла ли раскачка.

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

Antigravity имеет “продвинутые” настройки в CLI, которые полезно знать, даже если вы их никогда не трогаете:

  • Antigravity бустит не только I, но и P. Если вы видите P‑осцилляции именно на резких изменениях газа, это может быть следствием завышения P‑компоненты antigravity буста. При этом можно отдельно уменьшить значение anti_gravity_p_gain (дефолт 100).
  • technobee_0174_82660.png
  • Antigravity cutoff frequency. Для очень маленьких или очень больших аппаратов antigravity может реагировать слишком быстро или слишком медленно. Тогда имеет смысл работать с параметром anty_gravity_cutoff_hz: дефолт 5; значение меньше 5 делает реакцию дрона более плавной и растянутой; больше 5  - более резкой и короткой.
  • technobee_0175_fed9f.png

10.4. iTerm rotation и absolute control: почему можно не использовать

iTerm rotation и absolute control добавляют математику в PID‑контур, чтобы поворачивать вектор I‑term вместе с ориентацией квадрокоптера. Идея звучит красиво: при быстрых yaw‑вращениях I‑term по pitch мог бы “переехать” в roll и наоборот, и вроде бы это должно помогать.

technobee_0176_bb321.png

На практике соблюдайте осторожность: в тестах эти настройки часто не уменьшают ошибку PID, а иногда даже увеличивают. Поэтому для обычного freestyle‑полёта трогать их не рекомендуют. Некоторые пилоты, особенно при полетах в прямой видимости (не FPV), используют absolute control и считают это полезным. Однако, если вы не видите по логам, что tracking реально улучшился, то смысла усложнять систему нет.

↑ К оглавлению

11. Feedforward: правильная база (presets) и настройка по ощущениям и по логам

11.1. Почему начинать нужно с radio presets

Прежде чем настраивать feedforward, важно убедиться, что он корректно “подготовлен” под ваш радиолинк. Самый практичный способ — использовать presets для конкретной системы связи и частоты (например, ExpressLRS на конкретных частотах). При этом настройки, которые отвечают за сглаживание, усреднение, jitter reduction, приходят в разумный базовый вид.

Алгоритм выглядит так: вы заходите во вкладку Presets, ищете свой радиолинк, выбираете подходящую частоту, затем проходите по опциям профиля (например, стиль полёта, телеметрия и т.д.), и после этого применяете preset через “pick” и делаете save and reboot.

technobee_0213_e986e.png

Presets — поиск пресета по радиолинку и выбор частоты (пример: ExpressLRS 250 Hz)

После применения пресета вы заходите в PID Tuning и видите, что блок feedforward изменился: параметры вроде jitter reduction, smoothness, averaging обычно становятся другими. При этом некоторые параметры, такие как boost, max rate и transition, могут остаться прежними — и это нормально, потому что часть “характера” вы будете тюнить вручную.

technobee_0185_3_bfb30.png

Feedforward после применения radio preset (изменённые jitter reduction / smoothness / averaging)

11.2. Настройка stick response / FF‑ползунка

Когда база готова, вы можете настроить feedforward. Практический старт: верните stick response (или соответствующий ползунок feedforward gains) примерно к 0.5 и затем постепенно увеличивайте.

Ощущения по мере изменения:

  • Если feedforward слишком низкий, квадрокоптер ощущается немного “тормозным” и не отвечает на стики так быстро, как вы ожидаете.
  • По мере увеличения feedforward квадрокоптер становится более отзывчивым и больше “приклеивается” к стикам.
  • Если вы ушли слишком далеко, появляется overshoot / рывок, особенно в начале резкого движения, и иногда заметный overshoot в конце движения. Это признак перебора, и ползунок нужно вернуть назад.

technobee_0186_936c7.png

Ползунок stick response / feedforward gains (увеличение от показателя -> 0.5 вверх)

11.3. Как в логах выглядит “мало FF”, “слишком много FF” и “ровно достаточно”

В логах это читается особенно ясно. Для stick tracking / отслеживания движения стиков вы обычно смотрите параметры setpoint и gyro на одном графике: setpoint как “то, что вы хотите получить”, и gyro как “то, что реально получилось”.

Слишком мало feedforward: gyro заметно отстаёт от setpoint и в начале движения, и в конце. При этом в начале манёвра моторы могут быть далеко от максимума — то есть квадрокоптер даже не пытается “вцепиться” в команду, потому что feedforward не даёт достаточного стартового толчка.

technobee_0188_d37f9.png

“мало feedforward”: gyro (голубой) отстаёт от setpoint (зелёный)

Слишком много feedforward: в начале движения tracking может выглядеть очень хорошо, моторы работают жёстко, но в конце манёвра появляются проблемы — gyro “пролетает” через setpoint, возникает большой overshoot (перерегулирование)  и затем bounceback (отскок). И смысл проблемы такой: даже когда gyro уже пересёк нужное значение, feedforward всё ещё давит слишком сильно, поэтому система летит дальше и потом возвращается обратно.

technobee_0189_0b8b5.png

"слишком много feedforward”: overshoot и отскок в конце манёвра

Ровно правильный feedforward: в начале манёвра gyro может слегка отставать, но без заметного лага, а в конце gyro возвращается к setpoint аккуратно и дальше движется стабильно. Моторы могут подходить к максимальным значениям — и это нормально, если при этом нет перерегулирования и нет треллей.

technobee_0215_1_7de23.png

“идеально”: аккуратный возврат gyro к setpoint без пролёта

И здесь важное объяснение, которое держит всё вместе: P и D реагируют на ошибку “после факта”, а feedforward — единственный, кто знает, что вы делаете стиком именно в момент движения. Поэтому FF так сильно влияет на ощущение задержки.

11.4. Feedforward boost

technobee_0190_ru_11c80.png

Feedforward boost усиливает компонент feedforward на основе анализа ускорения движения стика. Это помогает feedforward быстрее разгоняться в самом начале резкого манёвра. Если вы видите, что в начале манёвра gyro отстаёт от setpoint, но затем догоняет позже, это как раз ситуация, где добавление boost может быть уместным.

Если, наоборот, вы видите, что gyro в начале манёвра вырывается вперёд относительно setpoint, но потом корректируется — это признак, что boost слишком высок, и его стоит уменьшить, чтобы “приручить” начало движения.

Дефолтное значение 15 часто является хорошей базой. Дальше вы действуете по наблюдению: есть лаг — чуть добавляете; есть ранний “перелёт” — чуть убавляете.

11.5. Max rate limit

Max rate limit делает важную вещь: он снижает feedforward к нулю, когда ваши стики подходят к максимальному отклонению. Это помогает избежать ситуации, когда feedforward давит “до упора”, затем стик упирается в механический предел, и система получает резкую “остановку команды”, из‑за чего может произойти перерегулирование.

Этот инструмент особенно полезен когда конец манёвра у вас уже выглядит красиво, но в начале всё ещё есть небольшой лаг, и вы видите, что feedforward обрывается раньше, чем gyro успел идеально повторить setpoint. Тогда увеличение max rate limit позволяет feedforward давить чуть дольше, улучшая отслеживание стиков в начале, и затем отпускать до того, как начнётся переход в “плато”.

Чем более отзывчивей квадрокоптер, тем выше можно поднять max rate limit. Дефолт 90 обычно нормален, но можно пробовать 92, 95 и смотреть, становится ли начало резкого движения более “собранным”.

technobee_0191_c199f.png

Feedforward Max Rate Limit (90 → 92 → 95)

↑ К оглавлению

12. Dynamic damping: зачем он нужен, что нельзя трогать, и как настраивать по логам

12.1. Две цели: приручить overshoot от FF или снизить нагрев в обычном полёте

Dynamic damping (динамическое демпфирование) — это продвинутая функция, которая позволяет динамически повышать D‑term на резких манёврах, сохраняя более низкий D‑term в обычном полёте. И это даёт два типовых сценария применения.

  • Сценарий 1. У вас высокие feedforward‑гейны, вы получаете отличное отслеживание (tracking), но временами появляется overshoot (перерегулирование). Dynamic damping может усилить D‑term на резком движении и “поймать” этот overshoot, позволяя держать FF выше.
  • Сценарий 2. Вы хотите уменьшить нагрев моторов. Тогда вы снижаете D‑term в обычном полёте, но сохраняете высокий D‑max на резких манёврах за счёт dynamic damping. Это особенно ценно, когда вы часто летаете на высоком газе и моторы легко перегреваются.

12.2. Dynamic damping advance = 0

Есть одна установка, которую в этой логике нужно держать жёстко: dynamic damping advance всегда должен быть равен 0. Объяснение короткое и конкретное: D‑term должен основываться на gyro, а feedforward — на setpoint. Dynamic damping advance добавляет компонент setpoint в D‑term, и это не то, что вы хотите. Вы хотите, чтобы D‑term оставался производным от gyro, без примесей setpoint.

technobee_0192_ru_advance_2644e.png

Dynamic damping advance (значение = 0)

12.3. Настройка: D‑min debug, “база” и “максимум” на резких манёврах

Dynamic damping по‑настоящему настраивается только по Blackbox‑логам (BBL). Для настройки установите debug mode логирования в D‑min. После этого в Blackbox Explorer вы сможете увидеть:

  • фактический D‑term по roll и pitch;
  • gyro factor, который определяет, насколько D‑term усиливается вверх или вниз.

technobee_0194_1fdeb.png

debug mode = D-min

Дальше верните ползунок dynamic damping обратно к 1.0 (вспоминаем, что на этапе master multiplier мы установили его в ноль), выполните полёт, где сначала должно быть обычное спокойное пилотирование, далее умеренные движения, и в конце несколько резких движений.

technobee_0195_d9e86.png

technobee_0196_2a645.png

Цель настройки gain звучит очень конкретно:

  • в обычном полёте D‑term не должен усиливаться и должен находиться в базовом значении;
  • при умеренных движениях D‑term должен чуть подрасти;
  • при самых резких движениях D‑term должен доходить до максимума.

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

technobee_0192_ru_gain_a9c50.png

Dynamic Damping Gain = 37 (отправная точка для старта)

12.4. Два сценария использования после настройки

После того как gain выставлен правильно, вы используете dynamic damping одним из двух способов.

Способ 1: дать возможность поднять feedforward выше. Если у вас в конце резкого движения gyro перескакивает setpoint и происходит отскок, dynamic damping может усилить D‑term, чтобы погасить этот эффект. Практически вы поднимаете dynamic damping slider до тех пор, пока overshoot перестанет проявляться. При этом необходимо контролировать: не появились ли D‑term осцилляции при резких движениях (признак, что D‑term усиливается слишком сильно и раздувает шум), и не начали ли моторы чрезмерно греться.

technobee_0197_03aca.png

technobee_0198_ru_b7bbd.png

Способ 2: снизить D‑term в обычном полёте, сохранив D‑max. Вы смотрите, какой D‑term вы выбрали как “рабочий” при заданном балансе PD, затем снижаете базовые D‑Gains и одновременно повышаете dynamic damping так, чтобы D‑max оставался равным прежнему “хорошему” D. Тогда при резких движениях вы сохраняете контроль, а в обычном полёте D-term будет ниже, и моторы будут грется меньше.

technobee_0199_cb4ae.png

↑ К оглавлению

13. Дополнительные настройки: throttle boost, motor output limit, VBAT sag compensation, thrust linearization

Дальше — несколько настроек, которые не являются “ядром PID‑логики”, но дают полезные инструменты под конкретные задачи и конкретное железо.

13.1. Throttle boost

Throttle boost работает похожим образом на feedforward boost, только для газа. Он добавляет усиление газа анализируя ускорение движений throttle‑стика. Если при резком “нажатии газа” вы ощущаете лаг и хотите, чтобы квадрокоптер подхватывал быстрее, можно попробовать увеличить throttle boost и посмотреть, решает ли это ощущение задержки.

technobee_0200_a5700.png

Throttle Boost

13.2. Motor output limit

Motor output limit ограничивает предельное выходное значение, которую Betaflight вообще может отправить на ESC. Один из практических случаев применения — когда вы используете моторы “под меньшее напряжение” с батареей “под большее напряжение”.

Пример логики расчёта:

  • Если вы ставите 4S моторы на 6S батарею, motor output limit можно поставить примерно 66%, потому что \(4/6 \approx 0.66\).
  • Если вы ставите 3S моторы на 4S батарею, limit можно поставить примерно 75%, потому что \(3/4 = 0.75\).

technobee_0201_1c5fd.png

Motor Output Limit

13.3. VBAT sag compensation

VBAT sag compensation делает полёт более “ровным” по ощущениям на протяжении всего разряда батареи. Он уменьшает максимальный моторный драйв на полностью заряженной батарее и постепенно увеличивает его по мере падения напряжения. В итоге квадрокоптер ощущается почти одинаково “с начала до конца”.

Но здесь есть серьёзная практическая ловушка: если квадрокоптер ощущается одинаково, вам сложнее понять, что батарея уже разряжена. Поэтому использовать эту настройку нужно осторожно и обязательно иметь отдельный способ предупреждения о низком напряжении. Типично, если вы используете VBAT sag compensation, его выставляют в 100%.

technobee_0202_e8d32.png

VBAT Sag Compensation

13.4. Thrust linearization

Thrust linearization усиливает моторный драйв на низком газе. Это полезно, если система даёт мало момента на low throttle и вы хотите улучшить отзывчивость и stick tracking в низком диапазоне газа.

Особенно это может быть актуально для маленьких аппаратов вроде tiny whoop, которые используют высокие частоты ESC PWM (например, 48 kHz и выше) и у которых на низком газе момент может быть слабым. В таком случае thrust linearization помогает сделать low throttle более “живым”. Для tiny whoop часто упоминается, что стартовое значение порядка 20% является разумной базой.

technobee_0203_f0a68.png

Thrust Linearization (пример: 20%)

↑ К оглавлению

14. Чек‑лист усвоения материала (таблица)

Чек‑лист сделан так, чтобы вы проверяли не только “я нажал кнопки”, а “я понял и могу повторить, а также могу объяснить, почему это делаю”. Отмечайте пункты только когда вы действительно можете воспроизвести действие и распознать признаки правильности и неправильности.

Пункт усвоенияКритерий “усвоено” (проверяемое проявление)
Я понимаю, почему PID‑настройка должна идти после настройки фильтров. Я могу объяснить, что без фильтрации PID начинает реагировать на шум, и что это приводит к ложным выводам (горячие моторы, “странные” осцилляции, нестабильность).
Я могу словами собрать карту PID‑F: setpoint, gyro, PID error, P/I/D/FF, PID sum, mixer. Я могу объяснить, что P/I питаются ошибкой, D питается производной gyro, FF питается производной setpoint, а PID sum потом превращается микшером в команды моторам.
Я понимаю аналогию P как пружины и D как амортизатора. Я могу описать, что P давит против ошибки, а D сопротивляется быстрым изменениям и гасит overshoot/осцилляции.
Я понимаю, что I‑term накапливает ошибку и убирает систематическое смещение. Я могу объяснить, почему низкий I делает аппарат “рыхлым” и медленно корректирующимся, а высокий I даёт точность, но при переборе даёт медленные осцилляции и bouncebacks.
Я могу выполнить tuning flight так, чтобы он дал чистые данные. Я делаю резкие движения по осям, не отпускаю стик “отстреливать” в центр, и могу повторить манёвр несколько раз одинаково.
Я понимаю, почему Angle mode упрощает PID‑тюнинг. Я могу объяснить, что в Angle легче получить резкие и контролируемые вводы и более повторяемые wobble‑манёвры.
Я знаю, что такое PID sum limit и когда его имеет смысл повышать. Я могу объяснить, что это увеличивает “авторитет” контроллера и может помочь в быстрых манёврах, и я могу выполнить CLI‑команды и сохранить изменения.
Я умею искать правильный master multiplier. Я начинаю ниже 1.0, повышаю постепенно, отслеживаю гладкость звука моторов в полёте и температуру после посадки, и фиксирую значение около оптимума без перегрева и треля.
Я понимаю, почему при поиске master нужно поставить dynamic damping в 0. Я могу объяснить, что динамический D меняет картину в полёте и мешает честно увидеть, сколько мастер выдерживает без проблем.
Я учитываю “боевое состояние” сборки при тюнинге (камера, пропы и т.п.). Я могу объяснить, что тюн должен отражать реальную массу и реальную вибрационную ситуацию, иначе найденные значения будут неустойчивы в обычных полётах.
Я понимаю, почему мощные высоко‑kV моторы могут требовать меньший master multiplier. Я могу объяснить, что быстрый мотор “усиливает” действие PID‑команды, поэтому меньший master может быть даже более эффективен и при этом даёт быстрый отклик.
Я понимаю смысл dynamic idle для снижения propwash. Я могу объяснить связь с размером/шагом пропеллера, tip speed и blade stall, и я знаю, где в конфигураторе выставляется dynamic idle.
Я понимаю, что делает TPA и когда его применять. Я могу описать сценарий: “на low/mid всё чисто, на high появляются осцилляции”, и объяснить, как TPA снижает (обычно) D‑гейны по мере роста газа.
Я умею интерпретировать TPA rate и TPA breakpoint. Я могу объяснить, что 1000–2000 — историческая шкала газа, и могу настроить breakpoint чуть ниже точки появления осцилляций и поднять rate до исчезновения проблемы.
Я умею начать PD balance правильно: отключить FF и I. Я могу объяснить, что FF и I мешают увидеть чистый PD‑характер, и могу временно опустить FF gains и I gains до 0.
Я умею собрать набор логов на разных PD значениях и не пытаться угадать одним числом. Я делаю несколько прогонов с разными значениями (от “мало” до “много”), чтобы затем увидеть форму отклика и выбрать оптимум.
Я умею работать в PID Toolbox со step response и понимаю, что я там ищу. Я могу показать, где выбирать лог, где запускать step response, и могу отличить лог‑шум от реальной осцилляции (длительная, заметная по амплитуде).
Я понимаю признаки overdamped/underdamped и “идеального” отклика. Я могу объяснить: overdamped — вяло и медленно; underdamped — большой overshoot и колебания; идеал — быстро к 1.0, небольшой overshoot “на волосок” и ровная полка.
Я понимаю, что roll и pitch могут требовать разных значений PD/P, и я умею это выставлять. Я могу объяснить, что оси могут отличаться, и могу воспользоваться ползунком раздельной подстройки pitch (pitch tracking), чтобы получить нужные P на roll и pitch.
Я умею тюнить I‑term: от “мало и рыхло” до “точно и устойчиво” без перебора. Я начинаю с низкого I, поднимаю до появления признаков перебора (slow wobbles, bouncebacks на быстрых манёврах) и затем уменьшаю до стабильного уровня.
Я понимаю, что делает iTerm Relax, и могу решить, когда его трогать. Я могу объяснить связь с быстрыми движениями стика и bounceback, и могу аргументировать повышение cutoff на очень отзывчивом аппарате или снижение на медленном.
Я понимаю, что делает iTerm Windup, и как он привязан к насыщению моторов. Я могу объяснить, что при высоких процентах моторов I‑накопление уменьшается, и что это защищает от “лишнего” I в манёврах, где моторы упёрлись в максимум.
Я понимаю, что делает antigravity, и умею снижать его при wobble на резком throttle. Я могу объяснить “8× буст I на резком газе”, могу распознать ситуацию, где это даёт I‑осцилляцию, и могу снизить antigravity до 4–5 и проверить эффект.
Я знаю про antigravity pGain и cutoff Hz и понимаю, когда они могут быть причиной проблем. Я могу объяснить: P‑осцилляции на резком throttle могут быть от P‑бустинга antigravity; cutoff меньше 5 — более плавно, больше 5 — более резко.
Я понимаю, почему iTerm rotation / absolute control можно не включать для обычного freestyle. Я могу объяснить идею переноса I‑вектора при yaw, но также могу сформулировать причину отказа: если по данным это не снижает PID error или даже ухудшает, то усложнение не оправдано.
Я умею правильно “подготовить” feedforward через radio presets. Я могу найти Presets, выбрать свой радиолинк и частоту, применить preset, сделать save & reboot и проверить, что параметры feedforward‑обвязки изменились.
Я умею тюнить feedforward по ощущениям: от sluggish до overshoot с откатом назад. Я начинаю около 0.5 и повышаю, распознаю “слишком мало” (вялость) и “слишком много” (overshoot в начале/конце резких движений).
Я умею читать логи feedforward: lag vs overshoot. Я могу по графикам setpoint/gyro показать отставание gyro при малом FF и пролёт gyro через setpoint при чрезмерном FF.
Я понимаю и умею настроить feedforward boost. Если gyro отстаёт в начале, но догоняет позже — я могу добавить boost; если gyro опережает в начале — я могу уменьшить boost.
Я понимаю и умею настроить max rate limit. Я могу объяснить, что это защищает от overshoot на предельном отклонении стика, и могу аккуратно поднять 90 → 92 → 95 на отзывчивом аппарате и проверить начало резких манёвров.
Я понимаю назначение dynamic damping и могу назвать два сценария применения. Я могу объяснить: (1) приручить overshoot и дать FF выше; (2) снизить D в обычном полёте при сохранении D‑max на резких манёврах для снижения нагрева.
Я помню правило: dynamic damping advance всегда = 0. Я могу объяснить причину: D‑term должен оставаться производным от gyro, без добавки setpoint.
Я умею тюнить dynamic damping по логам через D‑min debug. Я включаю D‑min debug, вижу фактический D‑term и gyro factor, и выставляю gain так, чтобы в обычном полёте D не бустился, на умеренных манёврах бустился немного, а на резких доходил до максимума.
Я понимаю признаки перебора dynamic damping при сценарии “больше FF”. Я могу распознать D‑term oscillations на резких манёврах и рост нагрева моторов как признаки того, что D‑буст стал чрезмерным.
Я понимаю, что делает throttle boost, и когда он уместен. Я могу описать, что он добавляет газ по ускорению throttle‑стика, и могу применить его, если ощущается лаг на резком добавлении газа.
Я умею применять motor output limit и могу объяснить расчёт процентов. Я могу объяснить 4S на 6S → 66% (4/6), 3S на 4S → 75% (3/4) и могу выставить ограничение осознанно.
Я понимаю риск VBAT sag compensation и знаю, почему он требует осторожности. Я могу объяснить, что квадрокоптер будет ощущаться одинаково на всём разряде, и поэтому возрастает риск переразряда; я могу назвать необходимость отдельного предупреждения о низком напряжении.
Я понимаю назначение thrust linearization и где оно особенно полезно. Я могу объяснить, что это усиление на low throttle для улучшения отклика и tracking, и могу назвать малые аппараты как типичный случай, где это заметно помогает.
Следующий логичный шаг после этого урока. Если PID‑часть стала “плотной” и даже кажется слишком резкой, это нормально: дальше обычно приводят ощущения к нужной “массе” и “маслянистости” уже настройкой rates (рейтов), чтобы получить именно тот stick feel, который вы хотите.
↑ К оглавлению
Настройка PID в Betaflight 4.5. Часть 2. PID для взрослых.
32