Skip to content

Настройка ПИД

Настройка ПИД для дрона

Цель занятия: обучающиеся по поведению аппарата определяют, какая составляющая требует правки, и настраивают ПИД в безопасной последовательности, обосновывая каждое изменение симптомом.

Общая теория обратной связи и смысл составляющих П, И и Д разобраны в разделе Робототехника → Управление и обратная связь. Здесь — только то, что специфично для полёта.

Что регулятор делает на дроне

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

e=ωзадωфакт e = \omega_{\text{зад}} - \omega_{\text{факт}} u=Kpe+Kiedt+Kddedt u = K_p\,e + K_i \int e\,dt + K_d \frac{de}{dt}

Три отличия от привычного робота на линии:

  1. Три независимых оси. Крен, тангаж и рыскание настраиваются раздельно. Крен и тангаж на симметричном аппарате обычно совпадают; рыскание всегда отличается.
  2. Быстрый контур. Робот на линии обновляется десятки раз в секунду, полётный контроллер — тысячи. Аппарат физически не может «подождать»: потерянная стабилизация означает переворот за доли секунды.
  3. Шум в измерении. Гироскоп стоит на раме, которая вибрирует от винтов. Именно поэтому D-составляющая на дроне — самая капризная.

Каскад: скорость внутри, угол снаружи

В режиме Acro работает один контур — по угловой скорости. В режиме Angle поверх него надстраивается второй.

    flowchart LR
    S["🎮 Стик"] --> A["Контур угла<br/>(только в Angle)"]
    A -->|нужная скорость| R["Контур скорости<br/>(всегда)"]
    S -.->|в Acro напрямую| R
    R -->|поправка| M["Микшер → моторы"]
    G["Гироскоп"] -->|факт. скорость| R
    ACC["Акселерометр"] -->|факт. угол| A
  

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

Три симптома — три лекарства

Настройка ПИД — это лечение конкретных симптомов, а не подбор красивых чисел.

СимптомЧто видноПричинаДействие
ВялостьАппарат лениво отвечает, «плывёт» за стиком, проваливается на манёврахМало PПоднимать P
Быстрая раскачкаМелкая частая дрожь, «звенит» на газуМного P или много DСнизить P; если не помогло — D
Медленная раскачкаПлавные качания с нарастаниемМного P, мало DДобавить D
УводМедленно уходит в сторону, приходится держать стикМало IДобавить I
Рывок после манёвра«Отскок» при возврате стика в центрМного I (windup)Снизить I, включить анти-windup
Дрожь на полном газуДрожит только под нагрузкойD усиливает вибрациюМеханика: балансировка, демпферы
Дрожь на газу — не повод крутить ПИД. Если аппарат спокоен на малом газу и начинает звенеть на большом, это почти всегда вибрация, а не регулятор. D-составляющая работает с производной сигнала и усиливает высокочастотный шум. Лечится балансировкой винтов и заменой битых моторов — см. ESP32 и телеметрия. Понижение D уберёт симптом, но испортит поведение аппарата и замаскирует настоящую проблему.

Протокол настройки

Тот же принцип, что и при настройке регулятора линии: один параметр за шаг, фиксация результата.

Подготовка

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

Обнулить D и I, поднимать P

Начинаем с P: увеличиваем на ~20 % за шаг, пока не появится заметная дрожь. Затем откатываем на шаг назад — к последнему спокойному значению.

Добавлять D

Поднимаем D, пока не исчезнет раскачка после резких движений и аппарат не станет «собранным». Слишком большой D — появляется высокочастотная дрожь и греются моторы: откатываем.

Вернуться к P

С работающим D обычно можно поднять P ещё немного — D теперь гасит раскачку. Повторяем шаги 2–3 один раз.

Добавлять I

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

Проверить под нагрузкой

Резкие манёвры, полный газ, быстрые смены направления. Настройки, работающие только в спокойном висении, — это не настройки.

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

Греются моторы — стоп

Проверяйте моторы рукой после каждого тестового полёта. Тёплый мотор — норма. Горячий, до которого больно дотронуться, — признак того, что регулятор непрерывно «борется» сам с собой: слишком высокие P или D заставляют моторы постоянно менять обороты с большой амплитудой.

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

Анти-windup

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

iTerm += Ki * error * dt;
iTerm = constrain(iTerm, -I_LIMIT, I_LIMIT);   // анти-windup

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

Практика: настройка на стенде

Полноценную настройку делают в полёте, но первое знакомство безопаснее провести на стенде.

Закрепить аппарат на одной оси

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

Наблюдать реакцию

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

Пройти протокол

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

Перенести и проверить в полёте

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

Стенд с винтами — работа повышенной опасности. Аппарат закреплён надёжно, а не «придержан рукой». Пульт с ARM у преподавателя. Люди — вне плоскости вращения винтов. Защитные очки обязательны для всех в помещении, а не только для того, кто у стенда.

Приёмка занятия

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