Перейти к содержимому
Часть 3. Настройка PID-Регуляторов: От Теории К Стабильному Полёту

Часть 3. Настройка PID-Регуляторов: От Теории К Стабильному Полёту

01 мая 2026
Технику БПЛА | Хобби

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

Данный урок посвящён настройке пропорционально-интегрально-дифференциальных регуляторов (PID-регуляторов) в ArduPilot. Цель настройки — обеспечить точное следование коптера заданным целевым значениям угловой скорости и угла наклона при минимальной ошибке регулирования и отсутствии нежелательных колебаний (осцилляций).

В ходе урока мы последовательно изучим структуру каскадной системы управления ArduPilot, разберём назначение каждого компонента PID-регулятора, освоим методический подход к ручной настройке в порядке D → P → I → DFF → FF, научимся определять правильный баланс пропорциональной и дифференциальной составляющих по временным графикам и ступенчатым откликам, выполним повышение общих коэффициентов усиления без нарушения найденного баланса, рассмотрим особенности настройки оси рысканья, настроим контроллер угла для режима Stabilize и завершим расчётом безопасного максимального угла наклона.

Ключевой принцип: качество работы высокоуровневых контроллеров (позиция, скорость, удержание высоты) напрямую зависит от качества настройки нижележащих регуляторов. Поэтому настройка всегда выполняется «снизу вверх»: сначала rate-PID (угловая скорость), затем attitude-PID (угол), и только после этого — контроллеры более высоких уровней.

Место в серии. Данный урок является третьим в цикле «снизу вверх»: базовая подготовка → фильтрация гироскопа → rate-PID → attitude → удержание высоты → режим Loiter → навигация по точкам. Каждый последующий этап опирается на корректность выполнения предыдущего, поэтому пропуск этапов не рекомендуется.

Содержание

1. Цели урока

  • Понять структуру каскадной системы управления ArduPilot и назначение каждого уровня регуляторов.
  • Разобраться в назначении и поведении компонентов PID-регулятора: пропорционального (P-term), интегрального (I-term), дифференциального (D-term), прямой связи (FF) и дифференциальной прямой связи (DFF).
  • Освоить методический порядок ручной настройки: D → P → I → DFF → FF — и понимать причинно-следственное обоснование этой последовательности.
  • Научиться определять правильный баланс пропорциональной и дифференциальной составляющих (PD balance) по временным графикам и ступенчатым откликам в веб-инструменте PID Review.
  • Выполнить повышение общих коэффициентов усиления (P, I, D) без нарушения найденного баланса, достигая максимальной отзывчивости без осцилляций.
  • Учесть особенности настройки оси рысканья (yaw), где дифференциальная составляющая обычно не требуется из-за высокого физического демпфирования.
  • Настроить контроллер угла (Attitude) для режима Stabilize, включая коэффициенты пропорционального усиления и ограничения ускорения.
  • Рассчитать и задать безопасный максимальный угол наклона на основе соотношения тяги и веса коптера.
Важное замечание: настройка выполняется последовательно, «снизу вверх». Не переходите к настройке контроллеров более высоких уровней (например, удержания высоты), пока не завершена и проверена настройка rate-PID и attitude.
↑ К оглавлению

2. Архитектура каскадной системы управления ArduPilot

Структура каскада контроллеров

technobee_0002_ru_900_z_d2079.png

ArduPilot использует каскадную (многоуровневую) архитектуру регулирования для управления положением, скоростью, ускорением, углом и угловой скоростью коптера. Каждый уровень принимает целевое значение от вышестоящего контроллера и выдаёт управляющее воздействие нижестоящему:

  • Position controller (контроллер позиции) → целевая скорость.
  • Velocity controller (контроллер скорости) → целевое ускорение.
  • Acceleration controller (контроллер ускорения) → целевой угол наклона.
  • Attitude controller (контроллер угла) → целевая угловая скорость (rate).
  • Rate controller (контроллер угловой скорости) → управляющие сигналы для моторов.

Почему настройка идёт «снизу вверх»

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

3. Ручная настройка vs автонастройка

Ограничения скриптов автонастройки

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

Преимущества методического ручного подхода

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

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

4. Теория rate-PID: схема и компоненты

Схема регулятора угловой скорости

Прежде чем перейти к практической настройке rate-PID-регулятора, необходимо иметь теоретическое понимание принципов PID-управления. На схеме регулятора показаны два входных сигнала:

  • Target rate of rotation (целевая угловая скорость) — значение, определяющее, с какой скоростью коптеру предписано вращаться вокруг каждой оси. Поступает от стиков пилота в режиме Acro или от контроллера угла в остальных режимах.
  • Actual rate of rotation (фактическая угловая скорость) — данные от гироскопа в IMU, сообщающие, с какой скоростью коптер на самом деле вращается.
Схема rate PID-регулятора в ArduPilot
technobee_0003_ru_900_1f76c.png
На схеме показан поток данных: Target и Actual поступают в блок вычисления PID error. Ошибка разделяется на пропорциональный и интегральный пути. Actual дополнительно поступает в дифференциальный блок. Параллельно обрабатываются Feedforward (от Target) и Derivative Feedforward (от производной Target). Все компоненты умножаются на коэффициенты усиления и суммируются в commanded control output.

Компоненты: P, I, D, FF, DFF

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

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

5. P-term (пропорциональная составляющая)

Принцип работы и физическая аналогия

Пропорциональная составляющая (P-term) воздействует непосредственно на ошибку регулирования (PID error), которая представляет собой разность между целевой и фактической угловой скоростью. Чем больше становится ошибка, тем сильнее P-term создаёт воздействие, направленное на её уменьшение и возврат к целевому значению.

technobee_0004_ru_z_4a81d.png

Физическая аналогия: P-term работает подобно пружине в стойке подвески автомобиля. Чем дальше фактическая угловая скорость отстоит от целевой, тем больше становится значение P-term, и он всегда стремится уменьшить ошибку.
↑ К оглавлению

6. D-term (дифференциальная составляющая)

Принцип работы и баланс P/D

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

technobee_0005_ru_0e9cd.png

Физическая аналогия: D-term работает подобно амортизатору в подвеске. Он всегда стремится замедлить скорость реакции коптера на управляющие воздействия и сохранить инерционность.

Баланс между P-term и D-term имеет критически важное значение. Избыток P-term делает систему слишком «упругой» и склонной к колебаниям. Избыток D-term делает реакцию вялой. При правильном балансе достигается так называемый критически демпфированный отклик, обеспечивающий плавное и точное следование целевому значению. Значения баланса P/D по умолчанию в ArduPilot обычно являются подходящей стартовой точкой, однако часто могут быть перегружены P-term и склонны к осцилляциям.

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

7. I-term (интегральная составляющая)

Накопление ошибки во времени

Интегральная составляющая (I-term) анализирует ошибку регулирования, но, в отличие от P-term, суммирует (интегрирует) её по времени и усиливает корректирующее воздействие тем сильнее, чем дольше сохраняется ошибка. Если ошибка переходит в отрицательную область, I-term начинает накапливать значение в противоположном направлении.

technobee_0008_4a59b.png

Практическое назначение: I-term устраняет постоянное смещение (steady-state error), которое пропорциональная составляющая не может ликвидировать полностью из-за физических ограничений или внешних возмущений.
↑ К оглавлению

8. Feedforward (FF) и Derivative Feedforward (DFF)

Работа с целевым значением

technobee_0009_exp_f2809.png

Терм прямой связи (Feedforward, FF) представляет собой ещё один пропорциональный терм, однако он анализирует не ошибку PID, а непосредственно целевое значение. Чем больше значение целевого сигнала, тем сильнее FF создаёт воздействие в том же направлении. Данный терм помогает преодолевать сопротивление, которое возрастает пропорционально целевой величине (например, сила гравитации при вертикальном подъёме).

Реакция на скорость изменения цели

technobee_0010_exp_00215.png

Дифференциальный терм прямой связи (Derivative Feedforward, DFF) анализирует скорость изменения целевого значения и создаёт воздействие пропорционально этой скорости. Его основное назначение — позволить PID-регулятору реагировать быстрее ещё до того, как успеет накопиться ошибка. При корректной настройке DFF может уменьшить или полностью устранить задержку между изменениями целевого и фактического значений.

Для данного руководства: настройка DFF и фильтров PID-регулятора представляет собой более сложную тему, которая обычно не требуется для хоббийных коптеров с пропеллерами до 8 дюймов. В рамках данного урока мы сосредоточимся на базовой настройке P, I, D. 
Пояснение по Feedforward и Derivative Feedforward в конце урока в приложении НИЖЕ
↑ К оглавлению

9. Методология настройки: порядок D → P → I → DFF → FF

Обоснование последовательности

Настройка выполняется в строгом порядке: D → P → I → DFF → FF. Причина заключается в причинно-следственных зависимостях между компонентами:

  • D-term предотвращает возникновение колебаний от P-term. Между ними должно соблюдаться корректное соотношение.
  • P-term предотвращает возникновение колебаний от I-term. Существует корректная взаимосвязь между P и I.
  • DFF зависит от величины P-term, а корректное значение FF зависит от того, насколько плотно настроена остальная часть регулятора.

Как мы решили ранее В рамках данного урока мы сосредоточимся на базовой настройке P, I, D. 

technobee_0011_e0798.png

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

10. Техника выполнения тестовых полётов

Порядок действий и удержание стика

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

Критически важное правило: при возврате стика в центр обязательно удерживайте его рукой. Если отпустить стик и позволить ему вернуться под действием пружины, он может начать колебаться и «подпрыгивать» вокруг центральной точки, что вызовет колебания дрона. Это создаст ложное впечатление о наличии избыточного P-term, хотя на самом деле причина — в механическом отскоке стика.

Тесты рекомендуется выполнять в режиме Stabilize (наиболее предпочтительно) или Altitude Hold. Если в AltHold наблюдаются колебания, переключитесь в Stabilize, чтобы исключить влияние контроллера высоты. На каждой оси выполняйте колебания 10–20 секунд, затем плавно посадите аппарат.

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

11. Анализ логов в веб-инструменте PID Review

Загрузка лога и проверка целостности

После завершения полёта скачайте лог через Mission Planner и откройте его в веб-инструменте PID Review. Загрузите файл .bin, убедитесь, что график полётных данных корректно отображает выполненные манёвры, отсутствуют пропуски (logging dropouts) и разрывы.

Временные графики и масштабирование

technobee_0015_exp_98089.png

Выберите для просмотра график PID Roll, затем PID Pitch, и наконец PID Yaw. В разделе Time Domain отобразятся три линии: target (целевое значение, синяя), actual (фактическое значение, оранжевая) и error (ошибка, зелёная). На масштабе по умолчанию график будет трудночитаемым. Увеличьте масштаб на участке с резкими колебаниями по целевой оси.

График временной области после увеличения масштаба
technobee_0016_exp_06e0e.png
После масштабирования чётко видны импульсы: синяя линия (target) показывает резкие переключения, оранжевая (actual) повторяет форму с небольшой задержкой и округлёнными фронтами, зелёная (error) показывает разницу в моменты переключения. Цель настройки — добиться наложения оранжевой линии на синюю.
technobee_0017_exp_57c91.png
Цель: добиться того, чтобы фактическое значение располагалось непосредственно поверх целевого. Именно к этому мы будем стремиться в процессе настройки.
↑ К оглавлению

12. Настройка баланса P/D по временным графикам

Критерии по амплитуде пиков

technobee_0018_exp_a57a9.png

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

НаблюдениеДиагнозДействие
Пик actual > пика target Избыток P-term (баланс смещён в сторону P) Уменьшить P или увеличить D
Пик actual < пика target Избыток D-term (баланс смещён в сторону D) Увеличить P или уменьшить D
Пики равны по амплитуде, actual слегка отстаёт Оптимальный PD balance Переходить к следующему этапу

13. Настройка баланса P/D по ступенчатому отклику (Step Response)

Диагностика по форме кривой

В веб-инструменте PID Review доступен график Step Response. Он отображает множество серых линий (отдельных откликов) и одну синюю линию (усреднённый отклик). Критерии оценки:

  • Зелёная линия (перерегулирование): быстрый подъём выше 100% с последующими затухающими колебаниями → избыток P-term.
  • Фиолетовая линия (недоотклик): медленный, плавный подъём к 100% без перерегулирования → избыток D-term.
  • Красная линия (критическое демпфирование): быстрый подъём к 100% без перерегулирования и колебаний → оптимальный баланс.
График ступенчатого отклика с тремя характерными формами
technobee_0019_1_ru_699f6.png

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

Рекомендация: во время настройки баланса изменяйте только P-term, сохраняя D-term постоянным. Это упрощает процесс и позволяет чётко отслеживать влияние изменений на соотношение компонентов.

technobee_0020_1_zipped_a302c.png

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

14. Диагностика осцилляций: P-term, D-term, задержка фильтров

technobee_0021_1_zipped_afb9c.png

Если в процессе настройки уменьшение P-term не устраняет осцилляции, возможны две причины:

Самовозбуждение D-term

При чрезмерно высоких значениях коэффициента дифференциальной составляющей может возникнуть независимая осцилляция. В этом случае уменьшение P-term не поможет. Решение: уменьшать оба терма совместно, сохраняя их соотношение, шагами по 10% (деление на \(1.1\)), пока колебания не прекратятся.

Избыточная задержка фильтрации

Если фильтрация гироскопа настроена слишком агрессивно, задержка в контуре управления может вызывать нестабильность. Решение: вернуться к настройке фильтров (Урок 2) и убедиться, что задержка минимальна при достаточном подавлении шума.

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

15. Масштабирование общих коэффициентов усиления

technobee_0022_1_zipped_08a98.png

Пошаговое увеличение P, I, D

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

; Формула масштабирования (увеличение на 10%)
P_new = P_old × 1.1
I_new = I_old × 1.1
D_new = D_old × 1.1

Повторяйте процедуру, увеличивая коэффициенты на 10% за шаг, до появления первых признаков осцилляций в логах или на слух (характерное «трещание» после резких движений). Затем уменьшите все три коэффициента на 10–20% для запаса устойчивости. Оси крена и тангажа настраиваются раздельно.

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

16. Точная подстройка I-term

technobee_0023_1_zipped_929ee.png

Улучшение отслеживания целевого значения

I-term обычно имеет широкий диапазон допустимых значений. После нахождения абсолютных значений P, I, D можно дополнительно увеличить I-term шагами по 10–20% для улучшения отслеживания целевого значения, контролируя отсутствие низкочастотных колебаний в логах. Каждую ось требуется настраивать отдельно.

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

17. Особенности настройки оси рысканья (Yaw)

Физическое демпфирование и отказ от D-term

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

technobee_0030_1_zipped_ed81b.png
Методика: работайте только с пропорциональной (P) и интегральной (I) составляющими. Увеличивайте коэффициенты P и I совместно на 10%, сохраняя соотношение, до появления осцилляций, затем откатите на 10–20%. При желании можно дополнительно увеличить I-term индивидуально, контролируя логи. Фильтр ошибки yaw можно аккуратно уменьшить для повышения отзывчивости.
↑ К оглавлению

18. Контроллер угла (Attitude / Stabilize)

technobee_0050_ru_900_z_4ac37.png

Принцип работы пропорционального регулятора угла

Контроллер угла в режиме Stabilize является простым пропорциональным регулятором. Он вычисляет разности между желаемыми (desired) и фактическими (actual) углами наклона по осям тангажа и крена относительно земли и по оси рыскания относительно севера , умножает их на коэффициент усиления и выдаёт целевую угловую скорость для rate-контроллера:

\[ \text{target_rate} = (\text{desired_angle} - \text{actual_angle}) \times P_{\text{angle}} \]

technobee_0025_1__z_693f1.png

technobee_0003_ru_900_2_11f7c.png

Настройка коэффициентов Stabilize Roll/Pitch/Yaw

technobee_0026_1_z_3ff50.png

Параметры находятся: Config → Extended Tuning.

Методика: увеличивайте коэффициент по оси на 10% за шаг, после каждого изменения выполняйте короткий тестовый полёт, анализируйте логи в разделе ATT (Attitude): желаемый и фактический углы должны совпадать без перерегулирования. При появлении осцилляций уменьшите коэффициент на 10–20%.

technobee_0027_1_z_7dadc.png
В правой панели раскрыта группа ATT. Отмечены Desired Roll/Pitch/Yaw и Actual Roll/Pitch/Yaw. На графике красные линии (фактические углы) должны точно следовать за зелеными (желаемые углы). Расхождения или «хвосты» указывают на избыточный коэффициент P в контроллере угла.
Только при идеально симметричном квадрокоптере значения для осей тангажа и крена могут совпадать. В остальных случаях рекомендуется настраивать каждую ось отдельно. 
↑ К оглавлению

19. Параметры ACCEL_MAX и расчёт максимального угла наклона

Ограничение углового ускорения

technobee_0028_1__z_bdf3f.png

Параметры ACCEL_MA  по Roll, Pitch и Yaw ограничивают максимальное угловое ускорение, которое может запросить контроллер угла. Это предотвращает выдачу нереализуемых команд rate-контроллеру. Для небольших хоббийных коптеров (до 8″) эти ограничения можно отключить, установив значение 0. Для крупных аппаратов требуется точный расчёт.

Формула расчёта безопасного угла

technobee_0029_52032.png

Максимальный угол наклона должен обеспечивать запас тяги для удержания высоты и управления даже при предельном крене. Рекомендуется использовать формулу:

\[ \theta_{\text{max}} = \arccos\left( \frac{W_N}{0.8 \times F_{\text{max}}} \right) \]

Где:

  • \(W_N\) — вес коптера с батареей и полезной нагрузкой (в ньютонах или кг×9.81);
  • \(F_{\text{max}}\) — максимальная тяга всех моторов на полном газу;
  • коэффициент \(0.8\) оставляет 20% тяги в запасе для управляющих воздействий.

Для большинства хоббийных применений достаточно угла 30°. Значения выше 45° могут вызывать дискомфорт у пилота. Настройка в Mission Planner:

; Максимальный угол для всех режимов (в сантиградусах: 30° = 3000)
ANGLE_MAX = 3000

; Максимальный угол в режиме удержания позиции (0 = использовать ANGLE_MAX)
PSC_ANGLE_MAX = 0

; Максимальный угол, запрашиваемый пилотом в режиме Loiter (0 = 2/3 от ANGLE_MAX)
; Рекомендуется установить равным ANGLE_MAX для единообразия
LOIT_ANGLE_MAX = 3000
Рекомендация: установка одинаковых значений для всех трёх параметров обеспечивает предсказуемое поведение коптера при переключении между режимами.
↑ К оглавлению

20. Практика: типовые задачи с решениями

Блок 1: Подготовка и базовая настройка PD balance

Задача 1: Выполните тестовый полёт для настройки PD balance по оси roll

Цель: получить лог с резкими короткими колебаниями по оси крена для анализа в PID Review.

Решение (проверка):
1) Взлёт в режиме Stabilize
2) 10–20 секунд резких коротких отклонений стика roll с удержанием в центре
3) Плавная посадка, скачивание лога
4) Открытие лога в веб-инструменте PID Review
5) Выбор графика PID Roll → раздел Time Domain
6) Увеличение масштаба на участке с колебаниями

Задача 2: Определите текущий PD balance по временным графикам

Цель: диагностировать, смещён ли баланс в сторону P или D.

Решение (алгоритм):
1) Найти пики на графиках target (синий) и actual (оранжевый)
2) Сравнить амплитуды пиков:
   - actual > target → избыток P → уменьшить P или увеличить D
   - actual < target → избыток D → увеличить P или уменьшить D
   - амплитуды равны → баланс оптимален
3) Зафиксировать текущие значения параметров

Блок 2: Масштабирование, yaw, attitude

Задача 3: Выполните масштабирование коэффициентов P, I, D на 10%

; Пример для оси roll (значения подставить свои)
ATC_RAT_RLL_P = 0.15 → 0.165
ATC_RAT_RLL_I = 0.10 → 0.11
ATC_RAT_RLL_D = 0.004 → 0.0044

; После изменения: тестовый полёт → анализ лога → при осцилляциях откат на 10–20%

Задача 4: Рассчитайте и задайте максимальный угол наклона

; Пример расчёта:
; Вес: 2.5 кг → 24.5 Н
; Макс. тяга: 40 Н
; θ_max = arccos(24.5 / (0.8×40)) = arccos(0.766) ≈ 40°
; Для комфорта ограничим 30°

ANGLE_MAX = 3000
PSC_ANGLE_MAX = 0
LOIT_ANGLE_MAX = 3000
↑ К оглавлению

21. Чек‑лист самопроверки знаний

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

НавыкКритерий проверки
Понимаю структуру каскадного управления Могу перечислить уровни контроллеров и объяснить, почему настройка идёт «снизу вверх».
Различаю компоненты PID-регулятора Могу объяснить назначение P-term, I-term, D-term, FF, DFF и привести аналогию для каждого.
Знаю порядок настройки: D → P → I → DFF → FF Могу обосновать, почему нельзя менять порядок и к каким проблемам это приведёт.
Умею выполнять тестовые полёты для PID Выполняю резкие короткие колебания по оси, удерживая стик в центре, в режиме Stabilize.
Определяю PD balance по временным графикам Сравниваю амплитуды пиков target/actual и делаю корректный вывод о смещении баланса.
Определяю PD balance по ступенчатому отклику Распознаю перерегулирование (избыток P), недоотклик (избыток D) и критическое демпфирование.
Диагностирую осцилляции Различаю колебания от избытка P, самовозбуждения D-term и задержки фильтров; знаю методы устранения.
Масштабирую коэффициенты без нарушения баланса Увеличиваю P, I, D совместно на 10%, контролирую появление осцилляций, делаю откат при необходимости.
Настраиваю ось yaw с учётом особенностей Работаю только с P и I, не добавляю D без необходимости, контролирую отзывчивость по логам.
Настраиваю контроллер угла (Attitude) Подбираю ATC_ANG_*_P по логам, понимаю назначение и правила отключения ACCEL_MAX.
Рассчитываю максимальный угол наклона Применяю формулу с запасом тяги 20%, устанавливаю ANGLE_MAX и связанные параметры корректно.
Что дальше. У вас настроены rate-PID и контроллер угла — коптер стабильно реагирует на управляющие воздействия в режиме Stabilize. В следующей части — настройка контроллера вертикальной скорости и удержания высоты (AltHold), что позволит коптеру точно и быстро менять высоту по команде пилота или автопилота.
↑ К оглавлению

22. Терминология (справочная таблица)

ТерминРасшифровка / ПояснениеКонтекст применения
P-term Пропорциональная составляющая PID-регулятора. Создаёт воздействие, пропорциональное текущей ошибке регулирования. Аналогия: пружина подвески. Основной драйвер точности, но вызывает осцилляции при избытке.
I-term Интегральная составляющая. Суммирует ошибку по времени, устраняя постоянное смещение (steady-state error). Важна для точного удержания позиции/угла при внешних возмущениях или смещённом центре тяжести.
D-term Дифференциальная составляющая. Реагирует на скорость изменения фактического значения, гасит колебания. Аналогия: амортизатор. Критичен для стабилизации, но избыток вызывает вялость реакции.
Feedforward (FF) Терм прямой связи. Действует пропорционально целевому значению, а не ошибке. Компенсирует сопротивления, пропорциональные цели (например, гравитация при вертикальном подъёме).
Derivative Feedforward (DFF) Дифференциальная прямая связь. Реагирует на скорость изменения целевого значения. Уменьшает задержку отклика на резкие стиковые команды. Сложная тема, опциональна для малых дронов.
PD balance Соотношение между коэффициентами усиления P-term и D-term. Определяет характер переходного процесса: перерегулирование, критическое демпфирование или вялость.
Критически демпфированный отклик Идеальная форма реакции системы: быстрый подъём к целевому значению без перерегулирования и колебаний. Целевой показатель при настройке rate-PID. Оценивается по графику Step Response.
Rate controller Контроллер угловой скорости (нижний уровень каскада). Управляет моторами для достижения целевой скорости вращения. База всей настройки. Ошибки здесь передаются на все вышестоящие уровни.
Attitude controller Контроллер угла (средний уровень каскада). Преобразует ошибку по углу в целевую угловую скорость. Работает в режиме Stabilize. Простой пропорциональный регулятор.
ACCEL_MAX Параметр ограничения максимального углового ускорения, запрашиваемого контроллером угла. Защищает rate-регулятор от нереализуемых команд. Для малых дронов обычно отключается (0).
ANGLE_MAX Максимальный угол наклона, разрешённый в режимах полёта. Указывается в сантиградусах (30° = 3000). Рассчитывается из соотношения тяги/веса с запасом 20%. Влияет на отзывчивость и безопасность.

Приложение 1

 

Feedforward и Derivative Feedforward в ArduPilot

Чтобы понять, что такое Feedforward (FF) и Derivative Feedforward (DFF) в ArduPilot, давайте разберем их путь: от простого PID к продвинутым методам управления.

1. Основа: Что такое PID?

Представьте, что вы ведете машину и должны держать скорость 60 км/ч. Классический PID-регулятор работает реактивно — он ждет ошибки, чтобы начать действовать:

  • P (Proportional): Чем больше разница между "хочу 60" и "сейчас 50", тем сильнее вы давите на газ.
  • I (Integral): Если машина не может дотянуть до 60 (например, из-за подъема), этот параметр со временем "додавливает" газ.
  • D (Derivative): Это тормоз. Если скорость растет слишком быстро, D-терм уменьшает газ, чтобы вы не проскочили отметку 60.

Главный минус: PID всегда опаздывает. Ошибка должна уже возникнуть, чтобы система на нее отреагировала.

2. Что такое Feedforward (FF)?

Feedforward — это "предсказание" или прямая передача сигнала. Вместо того чтобы ждать ошибки, ArduPilot дает команду моторам сразу, как только вы отклонили стик.

  • Суть: Если вы хотите вращаться со скоростью 100°/сек, FF говорит: "Я знаю, что для такой скорости нужно подать примерно 50% мощности".
  • На что влияет: Убирает задержку (лаг). Дрон становится резким и точно следует за рукой пилота.
  • Параметр: В ArduPilot это ATC_RAT_RLL_FF (для крена), ATC_RAT_PIT_FF (для тангажа).

Пример вычисления FF:

Допустим, коэффициент \(FF\_gain = 0.5\). Вы отклонили стик так, что желаемая скорость вращения \(TargetRate\) стала 100°/сек.

$$Output_{FF} = TargetRate \times FF\_gain$$ $$Output_{FF} = 100 \times 0.5 = 50 \text{ единиц мощности}$$

Этот сигнал пойдет на моторы мгновенно, не дожидаясь реакции датчиков.

3. Что такое Derivative Feedforward (DFF)?

Если FF смотрит на скорость, которую вы просите, то DFF смотрит на ускорение (как быстро вы дергаете стик).

  • Суть: Чтобы тяжелый дрон начал вращаться, нужно преодолеть его инерцию. DFF дает мощный кратковременный импульс в момент самого начала движения стика.
  • На что влияет: Помогает тяжелым аппаратам с большими пропеллерами стартовать без "затупа".
  • Параметр: ATC_RAT_RLL_DFF.

Пример вычисления DFF:

Допустим, \(DFF\_gain = 0.02\). Вы резко ударили по стику. В первую миллисекунду желаемое ускорение \(TargetAccel\) составило 1000°/сек².

$$Output_{DFF} = TargetAccel \times DFF\_gain$$ $$Output_{DFF} = 1000 \times 0.02 = 20 \text{ единиц мощности}$$

Как только стик замер в одном положении (ускорение стало 0), DFF исчезает, оставляя работу обычному FF.

4. Итоговая формула управления

Полный сигнал, который ArduPilot отправляет на моторы, выглядит так:

$$\text{Total Output} = (P + I + D) + FF + DFF$$

В этой связке:

  • FF и DFF делают 90% работы по движению дрона за вашими пальцами.
  • P, I и D исправляют внешние возмущения (ветер, дисбаланс) и подчищают ошибки предсказания.

5. Практический пример (сценарий)

Вы резко даете команду на крен (Roll) до 100°/сек:

  1. Момент 0 сек: Вы только тронули стик. DFF дает мощный "пинок" моторам, чтобы сорвать дрон с места и преодолеть инерцию.
  2. Момент 0.1 сек: Дрон уже вращается (например, 80°/сек). FF выдает основную мощность для поддержания вращения. P-терм видит небольшую ошибку \(100 - 80 = 20\) и чуть-чуть добавляет газа.
  3. Момент 0.5 сек: Дрон летит стабильно 100°/сек. Ошибки нет (P=0). Всю работу выполняет только FF.

Совет для настройки: Если дрон кажется "ватным" — увеличивайте FF. Если дрон долго "думает" перед началом резкого маневра — попробуйте добавить DFF.

Часть 3. Настройка PID-Регуляторов: От Теории К Стабильному Полёту
407