Настройка ПИД
Настройка ПИД для дрона
Цель занятия: обучающиеся по поведению аппарата определяют, какая составляющая требует правки, и настраивают ПИД в безопасной последовательности, обосновывая каждое изменение симптомом.
Общая теория обратной связи и смысл составляющих П, И и Д разобраны в разделе Робототехника → Управление и обратная связь. Здесь — только то, что специфично для полёта.
Что регулятор делает на дроне
Контроллер сотни раз в секунду сравнивает запрошенную угловую скорость (её задают rates по отклонению стика) с фактической, приходящей с гироскопа, и правит обороты моторов, чтобы разница исчезла.
Три отличия от привычного робота на линии:
- Три независимых оси. Крен, тангаж и рыскание настраиваются раздельно. Крен и тангаж на симметричном аппарате обычно совпадают; рыскание всегда отличается.
- Быстрый контур. Робот на линии обновляется десятки раз в секунду, полётный контроллер — тысячи. Аппарат физически не может «подождать»: потерянная стабилизация означает переворот за доли секунды.
- Шум в измерении. Гироскоп стоит на раме, которая вибрирует от винтов. Именно поэтому 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 и 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
Ограничение накопленной суммы — обязательная строка в любом реальном регуляторе. В полётных прошивках это делается автоматически, но понимать, зачем оно там, нужно: тот же приём применялся в регуляторе линии робота.
Практика: настройка на стенде
Полноценную настройку делают в полёте, но первое знакомство безопаснее провести на стенде.
Закрепить аппарат на одной оси
Аппарат крепится на стержне так, чтобы он мог вращаться только по одной оси (крен). Винты установлены, площадка ограждена, все в защитных очках.
Наблюдать реакцию
Даём команду и смотрим: возвращается ли аппарат в горизонт, с каким числом колебаний, есть ли раскачка.
Пройти протокол
Отрабатываем шаги протокола на одной оси, наблюдая симптомы вживую и записывая их.
Перенести и проверить в полёте
Настройки со стенда — стартовая точка, а не финал: стенд ограничивает движение и меняет динамику. Финальная проверка всегда в воздухе.
Приёмка занятия
- По видео или наблюдению определяет симптом и называет составляющую, которую надо править.
- Проходит протокол настройки, объясняя каждый шаг.
- Объясняет, почему дрожь на полном газу лечится балансировкой, а не понижением D.
- Объясняет, зачем ограничивают накопленную I-составляющую.