Перейти к содержимому
Настройка PID-регулятора в системах управления полетом

Настройка PID-регулятора в системах управления полетом

05 февраля 2026
Пилоту БПЛА | Технику БПЛА | Разработчику

Настройка ПИД‑регулятора

ПИД‑настройки определяют то, как БПЛА реагирует на команды с пульта и как он подавляет возмущения, опираясь на данные гироскопа и/или акселерометра (в зависимости от режима полёта).

Содержание

1. Общая идея ПИД‑регулятора

Что делает ПИД в полёте

Каждый аспект динамики полёта БПЛА контролируется ПИД‑регулятором. Это алгоритм, отвечающий за реакцию на команды с пульта управления и поддержание стабильности аппарата в воздухе с использованием данных гироскопов и/или акселерометров (в зависимости от режима полёта).

ПИД‑параметры — это набор коэффициентов, определяющих поведение регулятора. Оптимальные значения параметров различаются для каждого БПЛА, поэтому, если вы не найдёте пользователя с аналогичной конфигурацией, готового поделиться своими настройками, потребуется провести ряд экспериментов для подбора наиболее эффективных значений.

В общем случае задача ПИД‑регулятора — обеспечить такое изменение угловой скорости БПЛА по трём осям, которое соответствует командам, задаваемым с помощью стиков пульта управления.

Ошибка: целевая vs фактическая скорость вращения

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

$$e(t) = \omega_{\text{target}}(t) - \omega_{\text{measured}}(t)$$

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

2. ПИД‑параметры (P, I, D)

P — параметр (пропорциональный)

P управляет силой коррекции, применяемой для достижения заданного угла или скорости вращения. Если значение P слишком мало, БПЛА будет плохо реагировать на команды и не сможет сохранять устойчивость. Слишком высокое значение приведёт к быстрым колебаниям и вибрациям из-за постоянного перерегулирования.

I — параметр (интегральный)

I корректирует длительные небольшие отклонения. Низкое значение I может вызывать медленный дрейф положения дрона, а слишком высокое — приведёт к колебаниям (но с меньшей частотой, чем при высоком P).

D — параметр (дифференциальный)

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

Практическая подсказка: P чаще “заводит” высокочастотные колебания, I — “медленные” колебания и дрейф, D помогает подавлять колебания, но может усиливать чувствительность к шуму (и потому тесно связан с фильтрацией).

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

3. TPA и точка TPA (TPA Breakpoint)

Что такое TPA

TPA означает Throttle PID Attenuation (затухание ПИД‑коэффициентов при увеличении тяги).

«TPA позволяет агрессивно настроенному мультироторному БПЛА снижать значения ПИД‑коэффициентов при увеличении тяги выше порогового значения TPA. Это устраняет высокочастотные колебания».

Где настраивается TPA

Обратите внимание, что параметр TPA можно настраивать через CLI или на вкладке PID TUNING графического интерфейса. Значение tpa_breakpoint также устанавливается через CLI.

Стоит учитывать, что TPA и tpa_breakpoint могут быть недоступны в некоторых типах ПИД‑контроллеров. Подробную информацию см. в описании конкретного контроллера.

TPA применяется для снижения значений ПИД‑коэффициентов в зависимости от уровня тяги. Он используется для демпфирования ПИД‑параметров при достижении максимальной тяги.

TPA и tpa_breakpoint: смысл параметров

  • TPA — процент снижения значений ПИД‑коэффициентов при полной тяге.
  • tpa_breakpoint — точка на кривой тяги, начиная с которой начинает действовать TPA.

Пример (TPA = 50, tpa_breakpoint = 1500)

TPA = 50 (или 0.5 в GUI) и tpa_breakpoint = 1500 (при диапазоне тяги 1000–2000):

  • При значении 1500 на канале тяги начинает действовать TPA.
  • При 3/4 тяги (1750) значения ПИД‑коэффициентов снижаются примерно на 25%.
  • При полной тяге (2000) снижение составляет 50%.

$$\text{throttle} = 1750 \Rightarrow \Delta PID \approx 25\%$$

$$\text{throttle} = 2000 \Rightarrow \Delta PID = 50\%$$

TPA может повысить угловую скорость при увеличении тяги, что позволяет выполнять более резкие перевороты и кувырки благодаря связи ПИД‑параметров и скоростей. Только контроллеры MWREWRITE и LUX используют линейную реализацию TPA, при которой угловые скорости не влияют на работу функции.

Пример диаграммы TPA

Как и зачем использовать?

Если вы наблюдаете колебания при 3/4 тяги, установите tpa_breakpoint = 1750 или ниже (при стандартном диапазоне 1000–2000), затем постепенно увеличивайте TPA, пока колебания не исчезнут. Обычно лучше начать немного раньше момента появления колебаний, чтобы компенсировать их до возникновения.

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

4. ПИД‑контроллеры

Историческая справка

В Cleanflight 1.x были доступны экспериментальные ПИД‑контроллеры, но начиная с версии 2.0 используется только один.

ПИД‑контроллер “LUXFloat”

Это новый ПИД‑контроллер, основанный на вычислениях с плавающей точкой. MW23 и MWREWRITE используют целочисленную арифметику, которая была более быстрой на ранних 8‑битных контроллерах MultiWii, но менее точной.

Этот контроллер компенсирует возможные вариации времени цикла, что позволяет не перенастраивать ПИД‑коэффициенты при изменении этого параметра.

Это первый ПИД‑контроллер, разработанный специально для 32‑битных процессоров, и он не является наследником MultiWii.

LEVEL‑параметры для Angle/Horizon

Сила автовыравнивания в Angle‑режиме регулируется LEVEL‑параметром P, обозначенным в интерфейсе как Angle, Strength. В версиях до v1.13.0 использовался параметр level_angle. По умолчанию значение равно 50.

Сила автовыравнивания в Horizon‑режиме регулируется LEVEL‑параметром I, обозначенным как Horizon, Strength. Также использовался параметр level_horizon до версии v1.13.0. Значение по умолчанию — 50.

Переход между автовыравниванием и акробатическим поведением в Horizon‑режиме регулируется LEVEL‑параметром D, обозначенным как Horizon, Transition. Ранее использовался параметр sensitivity_horizon. Он задаёт процент хода стика, при котором активно автовыравнивание. Меньшие значения увеличивают зону действия автовыравнивания.

Например, при значении 100:

  • При центральном положении стика — 100% силы автовыравнивания.
  • При 50% хода — 50% силы.
  • При 100% хода — автовыравнивание отключено.

При уменьшении чувствительности до 75:
— Центр — 100%, 63% хода — 50%, 75% и выше — отсутствие автовыравнивания.

Описание команд Horizon‑режима приведено ниже.

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

5. RC Rate, Pitch and Roll Rates, Yaw Rate

Назначение множителей чувствительности

  • RC Rate — общий множитель входных сигналов стика для тангажа, крена и рыскания. Определяет базовую чувствительность стика.
  • Pitch and Roll Rates — множитель чувствительности стика отдельно для крена и тангажа. Чувствительность остаётся неизменной на крайних положениях стика. Значение 0 означает отсутствие усиления сверх установленного в RC Rate.
  • Yaw Rate — множитель чувствительности стика для рыскания.
↑ К оглавлению

6. Фильтры

gyro_lpf

gyro_lpf — устанавливает значение аппаратного фильтра нижних частот для гироскопа. Если значение равно 0 или 256, гироскоп использует минимальную доступную частоту аппаратной фильтрации — 256 Гц, а внутренняя частота дискретизации достигает максимума — 8 кГц, обеспечивая минимальную задержку.

Чем меньше значение gyro_lpf, тем сильнее фильтрация сигнала гироскопа. Более сильная фильтрация снижает уровень шума в данных гироскопа до их передачи на расчёт PID‑регулятора. Однако усиленная фильтрация увеличивает задержки, что может вызывать колебания и снижение отзывчивости управления.

Фильтрация необходима, поскольку шум от моторов и рамы может приводить к перегреву двигателей, особенно если этот шум усиливается D‑составляющей (Dterm) в квадрокоптерах с малой массой и быстрыми ESC с функцией торможения.

Если значение установлено на 188 или ниже, внутренняя частота дискретизации гироскопа снижается до 1 кГц, а задержки увеличиваются. Более высокая частота дискретизации обеспечивает лучшую отзывчивость, но может привести к появлению помех и искажений сигнала.

Значение 188 позволяет синхронизировать полетный контроллер с гироскопом на частоте 1 кГц (при условии, что функция gyro_sync включена и поддерживается в прошивке), что значительно уменьшает эффект искажений (aliasing).

gyro_soft_lpf

gyro_soft_lpf — это программный фильтр нижних частот типа IIR (Infinite Impulse Response), который можно настроить на любую желаемую частоту среза. Если значение параметра больше нуля, фильтр активируется. Он работает после аппаратного фильтра на гироскопе (реализованного в коде полетного контроллера) и дополнительно снижает уровень шума в сигнале.

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

Обычно gyro_soft_lpf устанавливают примерно на половину частоты аппаратного фильтра, чтобы лучше отсекать высокочастотные помехи перед этапом расчёта PID‑регулятора. Частоты выше 100 Гц не представляют интереса для управления полётом и должны быть удалены из сигнала до вычислений PID.

dterm_cut_hz

dterm_cut_hz — это программный фильтр нижних частот типа IIR, который можно настроить на любую желаемую частоту среза. Он применяется после фильтров gyro_cut и фильтрует исключительно данные D‑составляющей (D‑term).

Значения D‑term зависят от частоты: чем выше частота, тем больше вычисленное значение D‑term. Этот фильтр необходим, если несмотря на фильтрацию гироскопа, сохраняется чрезмерный шум в D‑term.

Обычно значение фильтра устанавливают достаточно низким, поскольку шум D‑term является основной проблемой для стандартных IIR‑фильтров. Однако, если частота среза задана слишком низкой, фазовый сдвиг, возникающий в D‑фильтре, снижает его эффективность в подавлении колебаний (стоп‑воббла). Поэтому при настройке этого параметра требуется осторожность и тщательное тестирование.

Для правильной оптимизации значения dterm_cut_hz рекомендуется использовать запись полетных данных (черный ящик) и анализировать их.

Суть компромисса: больше фильтрации → меньше шума, но больше задержка; меньше фильтрации → меньше задержка, но выше риск шума (особенно в D‑term) и нагрева моторов.

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

7. Команды Horizon‑режима

horizon_tilt_effect и horizon_tilt_mode

CLI‑команды horizon_tilt_effect и horizon_tilt_mode управляют влиянием текущего наклона на автовыравнивание в Horizon‑режиме.

  • horizon_tilt_effect: Чем выше значение, тем меньше влияние автовыравнивания при увеличении наклона. Значение по умолчанию — 75.
  • horizon_tilt_mode SAFE | EXPERT: Устанавливает режим работы для horizon_tilt_effect.

SAFE vs EXPERT

  • SAFE — автовыравнивание активно при центральном положении стика. Даже при перевороте БПЛА (180°) он автоматически выровняется.
  • EXPERT — автовыравнивание может быть полностью отключено при перевороте. Полезно для выполнения акробатических манёвров.

Значения horizon_tilt_effect и horizon_tilt_mode настраиваются индивидуально для каждого профиля.

Пример оформления CLI‑фрагмента (шаблон под ваш сайт):

# Пример (иллюстративно): команды задаются в CLI
set horizon_tilt_effect = 75
set horizon_tilt_mode = SAFE
save
Bash

Примечание: конкретные значения подбираются под профиль и стиль пилотирования.

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

8. Чек‑лист самопроверки

P/I/D: симптомы и ожидаемое поведение

ПроверкаЯ понимаю и могу объяснить
P Почему низкий P даёт “ватную” реакцию, а высокий P — быстрые колебания/вибрации
I Почему низкий I даёт дрейф, а высокий I — медленные колебания
D Как D снижает перерегулирование, и почему D часто связан с шумом и фильтрами

TPA: когда включать и как подбирать

ПроверкаЯ умею сделать
tpa_breakpoint Поставить точку начала TPA на уровне, где проявляются колебания (или чуть раньше)
TPA Постепенно повышать TPA до исчезновения колебаний на высокой тяге

Фильтры: компромисс шум/задержка

ПроверкаЯ понимаю
gyro_lpf Что сильная фильтрация снижает шум до PID, но добавляет задержку
gyro_soft_lpf Зачем нужен второй IIR‑LPF после аппаратного и почему “выше аппаратного” обычно бессмысленно
dterm_cut_hz Почему D‑term особенно шумный и почему слишком низкий cut может ухудшить подавление колебаний из‑за фазового сдвига
↑ К оглавлению
Настройка PID-регулятора в системах управления полетом
856