PID (Пропорционально-интегрально-дифференциальный) регулирование является основным методом используемым для стабилизации квадрокоптера.
Пропорциональня P = немедленная коррекция: чем дальше от нас (значения), тем больше делается коррекция
Интегральная I = сверхурочная или постоянная коррекция: если мы не в состоянии добиться результата дополнительной коррекции.
Дифференциальная D = легкая коррекция: коррекция быстрая, замедлим ее немного, что бы избежать перерегулировки.
Как PID используется для стабилизации квадрокоптера
Квадрокоптер — неустойчивая динамическая система: без активного управления он сразу теряет ориентацию.
PID-регуляторы работают в замкнутом контуре управления, постоянно сравнивая:
- заданное состояние ↔ фактическое состояние
и корректируя тягу моторов.
Вот видео настройки PID на контроллере CC3D в ПО OpenPilot.
Подстройка PID в поле показана на видео ниже.
А общие правила настройки PID можно сформулировать следующим образом:
Rate p — определяет сколько мощности дать на преодоления инерции рамы — угловой скорости по питчу и ролу — чем инертнее рама и меньше тяга винто-моторной группы тем больше.
Rate d — определяет дозирование энергии на раскрутку и торможение пропеллера — чем больше диаметр пропеллера и меньше тяга мотора тем параметр больше
По донастройке PID`ов (n.ybyue) есть несколько советов:
Если обнаруживаете осциляции — увеличивайте rate d.
Если аппарат ведет себя «как пьяный» то одновременно и rate p и rate d по 10%.
Раскачка бывает нескольких видов — «мелкодрожащая» когда моторы меняют свой тон многократно в течение секунды и «висит как на струне мелко дрожа» — это перекачанный rate p.
Если аппарат трудно взлетает любой ветерок его плавно отклоняет из стабильного положения (ведет себя как брошенная на пол круглая крышка — волной по окружности — унитазит квадрокоптер) — это недостаточный rate p.
Если висит ровно, ветра нет, а он чуть чуть дергает то одним лучом, то другим, раз в секунду, то вероятно великоват rate d.
Если аппарат принудительно немного качнуть стиком, а он вместо того чтобы выполнить маневр в одно движение делает один-два затухающих качка — это значит маловат rate d.
Внимание!
Не советуется ускорять процесс увеличивая пид более чем на 10% за раз очень легко пролететь нужный порог и потом уже начинаются неожиданные явления типа внезапных рывков
Что именно регулируется PID
Обычно PID применяется по осям:
- Roll (крен)
- Pitch (тангаж)
- Yaw (рысканье)
Часто — отдельный PID для каждой оси.
Также могут быть отдельные PID:
- по углам (Angle mode)
- по угловым скоростям (Rate / Acro mode)
- по высоте или позиции (в более сложных системах)
Роль каждого компонента PID
P — пропорциональный
- Реагирует на текущую ошибку угла или скорости.
- Чем больше отклонение — тем сильнее коррекция моторов
- Основа стабилизации
- Слишком большой P → колебания
- Слишком маленький P → «ватное» управление
I — интегральный
- Компенсирует постоянные ошибки
- Убирает дрейф, вызванный:
- разным весом моторов
- центром масс
- ветром
- Без I квадрокоптер «уплывает»
- Избыток I → медленные раскачки
D — дифференциальный
- Реагирует на скорость изменения ошибки
- Гасит колебания и резкие движения
- Делает полёт «плотным» и точным
- Слишком большой D → шумы, перегрев моторов
Как PID влияет на моторы
PID-выход → микшер → изменение оборотов моторов:
- если крен вправо → левые моторы ускоряются
- если тангаж вперёд → задние моторы ускоряются
- yaw управляется разницей моментов вращения
Все корректировки происходят с частотой сотни–тысячи раз в секунду.
Почему PID — основной метод
- Прост в реализации
- Работает в реальном времени
- Не требует точной математической модели
- Эффективен для быстродинамических систем
Формулы PID-регулирования
Классическая непрерывная формула PID
где:
u(t)u(t)u(t) — управляющее воздействие (коррекция тяги моторов)
e(t)=r(t)−y(t)e(t) = r(t) — y(t)e(t)=r(t)−y(t) — ошибка
r(t)r(t)r(t) — заданное значение (угол или угловая скорость)
y(t)y(t)y(t) — измеренное значение (гироскоп / IMU)
KP,KI,KDK_P, K_I, K_DKP,KI,KD — коэффициенты PID
Ошибка в квадрокоптере
Для углов (Angle mode)
eθ(t) = θset − θmeas
Для угловых скоростей (Rate / Acro mode)
eω(t) = ωset − ωmeas
Дискретная форма PID (реальная в полётных контроллерах)
Пропорциональная часть (P)
Pk = KP · ek
Интегральная часть (I)
Ik = Ik-1 + KI · ek · Δt
(обычно с ограничением — anti-windup)
Дифференциальная часть (D)
Dk = KD · (ek − ek-1) / Δt
Итоговый PID-выход
uk = Pk + Ik + Dk
D по измерению (как в дронах)
Dk = — KD · yk — yk-1 Δt
Почему:- меньше шумов
- стабильнее реакция
- гироскоп даёт хорошую производную
Каскадное PID-управление (стандарт для квадрокоптеров)
Внешний контур — углы (Angle PID)
Формула:
ωset = KP,θ · (θset − θmeas)
Внутренний контур — угловые скорости (Rate / Acro PID)
Формула:
u = KP,ω · eω + KI,ω · ∫ eω dt + KD,ω · dω/dt
На моторы подаётся именно выход rate-PID, а angle-PID задаёт целевую скорость.
Распределение PID на моторы (пример: Roll)
M1 = T + uroll + upitch − uyaw
M2 = T − uroll + upitch + uyaw
M3 = T − uroll − upitch − uyaw
M4 = T + uroll − upitch + uyaw
Где:
- T — общий газ
- uroll, upitch, uyaw — коррекции PID по крену, тангажу и рысканию соответственно
Что реально крутят при настройке PID
- KP → жёсткость и отзывчивость
- 𝐾𝐼 → удержание угла / компенсация ветра
- 𝐾𝐷 → подавление колебаний
Физический смысл PID для квадрокоптера
| Член PID | Формула | Физический смысл | Цвет |
|---|---|---|---|
| P — Пропорциональный | Pk = KP · ek | Мгновенная реакция на текущую ошибку (угол или скорость). Чем больше отклонение — тем сильнее корректировка моторов. | Красный |
| I — Интегральный | Ik = Ik-1 + KI · ek · Δt | Компенсирует постоянные ошибки (дрейф, ветер, смещённый центр масс). Убирает «уплывание» квадрокоптера. | Зелёный |
| D — Дифференциальный | Dk = KD · (ek − ek-1) / Δt | Гасит колебания, предсказывает изменение ошибки. Делает полёт плавным и точным. | Синий |
Итоговый PID-выход: uk = Pk + Ik + Dk.
На моторы подаётся эта сумма для коррекции крена, тангажа и рыскания.
Графическое отображение P, I и D во времени
Сигнал управления u(t) = P + I + D. Здесь показано влияние каждого члена PID на ошибку.
P — мгновенная реакция
I — накопленная ошибка
D — предсказание изменения
Анимация PID-сигнала квадрокоптера
Красный — P, зелёный — I, синий — D. Высота блока показывает вклад каждого члена PID во время стабилизации.
Симптомы ошибок, причины и решения для P/I/D
| Член PID | Симптомы ошибки | Причины | Исправление |
|---|---|---|---|
| P — Пропорциональный | Слишком низкий: дрон «ватный», медленно реагирует Слишком высокий: колебания, дерганый отклик, вибрации | Неправильный коэффициент относительно массы и мощности моторов Игнорирование частоты обновления контроллера | Настраивать постепенно: увеличить до быстрого, но устойчивого отклика Тестировать короткими импульсами управления |
| I — Интегральный | Слишком низкий: дрон «уплывает», не удерживает угол Слишком высокий: медленные раскачки, дергания (integral windup) | Накопление ошибки без ограничения (anti-windup не включён) Слишком сильное влияние на PID-сигнал | Включить ограничение интеграла (anti-windup) Настраивать после P Использовать малые корректировки I |
| D — Дифференциальный | Слишком низкий: дерганый отклик, колебания не гаснут Слишком высокий: шумы, вибрации, перегрев моторов | Сырой сигнал гироскопа без фильтрации Неправильная частота дискретизации | Фильтровать сигнал гироскопа (low-pass) Начинать с малого D и увеличивать до гашения колебаний |
| Общие ошибки | Нестабильный полёт, дерганый отклик, дрейф, вибрации | Неправильный порядок настройки PID Игнорирование веса/инерции дрона Слишком быстрые изменения Отсутствие фильтров Неправильная частота обновления контроллера | Настраивать по порядку: P → D → I Учитывать вес и инерцию дрона Малые шаги настройки Добавить фильтры Обеспечить высокую частоту обновления |
Интерактивная настройка PID по осям квадрокоптера
Настраивайте P, I и D для каждой оси. Таблицы подсвечиваются в зависимости от слишком низких или слишком высоких значений.
Roll
Pitch
Yaw
Roll PID
| Член | Симптомы | Исправление |
|---|---|---|
| P | Слишком низкий/высокий | Настройка P |
| I | Слишком низкий/высокий | Anti-windup, малые корректировки |
| D | Слишком низкий/высокий | Фильтры, постепенное увеличение |
Pitch PID
| Член | Симптомы | Исправление |
|---|---|---|
| P | Слишком низкий/высокий | Настройка P |
| I | Слишком низкий/высокий | Anti-windup, малые корректировки |
| D | Слишком низкий/высокий | Фильтры, постепенное увеличение |
Yaw PID
| Член | Симптомы | Исправление |
|---|---|---|
| P | Слишком низкий/высокий | Настройка P |
| I | Слишком низкий/высокий | Anti-windup, малые корректировки |
| D | Слишком низкий/высокий | Фильтры, постепенное увеличение |