Робототехника

PID-контроллер

Почти каждый технический объект вокруг управляется PID: термостат в доме, круиз-контроль в машине, стабилизатор квадрокоптера, промышленный манипулятор. За 80 лет существования три слагаемых - P, I, D - не устарели. Почему? Потому что они элегантно решают три разных аспекта управления: ошибку сейчас, ошибку в прошлом, ошибку в будущем.

  • **Квадрокоптеры:** отдельный PID на каждую из 6 осей (x, y, z, roll, pitch, yaw)
  • **Промышленные роботы:** PID в каждом суставе, частота обновления 1-10 кГц
  • **Температурный контроль:** печи, 3D-принтеры, системы охлаждения серверов
  • **Cruise control:** сотни миллионов автомобилей по всему миру

P-регулятор: пропорциональная часть

Квадрокоптер должен держаться на высоте 10 метров. Сейчас он на 8 метрах - ошибка e = 10 - 8 = 2 м. Самый простой регулятор: дать тягу, пропорциональную ошибке. Чем больше отклонение, тем сильнее коррекция. Это и есть **P-регулятор**: u(t) = Kp * e(t).

**Steady-state error:** P-регулятор часто не убирает постоянную ошибку. Чтобы держать квадрокоптер на 10 м против гравитации, нужна постоянная тяга u0. Но e=0 -> u=0. Значит реальное равновесие устанавливается при e = u0/Kp > 0. Именно это устраняет I-составляющая.

P-регулятор с Kp=10 и ошибкой e=0.5 выдаёт управление u =

I-составляющая и windup

P-регулятор оставляет стационарную ошибку, потому что не «помнит» историю. Если квадрокоптер постоянно находится чуть ниже setpoint, это означает, что суммарная накопленная ошибка большая. **Интегральная часть** именно это и измеряет: сумму всех прошлых ошибок.

u_I(t) = Ki * integral(e(tau), 0, t). Накопленная ошибка растёт, пока e != 0, и толкает управление в нужную сторону до тех пор, пока setpoint не будет достигнут точно. При e=0 интеграл перестаёт расти - равновесие достигнуто.

**Integral windup** - классическая ловушка: если система долго насыщена (e.g., мотор крутится на максимуме), интеграл накапливает огромное значение. Когда насыщение снимается, контроллер выдаёт большой импульс и система уходит в сильные колебания. Anti-windup - обязательная мера в реальных системах.

Integral windup возникает когда:

D-составляющая и шум

P-регулятор реагирует на текущую ошибку, I - на накопленную историю. Но оба не знают, **в каком направлении движется** ошибка. Если ошибка 2 и уменьшается - хорошо, не нужно сильно корректировать. Если ошибка 2 и быстро растёт - плохо, нужно действовать агрессивнее. **D-составляющая** это и учитывает.

u_D(t) = Kd * de/dt. Производная ошибки предсказывает будущее: если e уменьшается с высокой скоростью, D добавляет «тормоз», предотвращая перерегулирование. Это делает систему более плавной. Главная проблема: производная **усиливает шум** в измерениях.

**Derivative on measurement vs derivative on error:** при резком изменении setpoint производная ошибки даёт огромный спайк (setpoint step -> ошибка скачет мгновенно). Derivative on measurement вычисляет -d(measurement)/dt и не реагирует на скачки setpoint. Это более распространённая практика.

Зачем применять low-pass filter к D-составляющей PID?

Настройка PID: метод Циглера-Никольса

Выбрать Kp, Ki, Kd из воздуха сложно. Метод **Циглера-Никольса** (1942) - систематический подход: сначала находят критические параметры системы экспериментально, затем вычисляют коэффициенты по таблице.

  1. Установить Ki=0, Kd=0. Только P-регулятор.
  2. Постепенно увеличивать Kp до тех пор, пока система не начнёт устойчиво осциллировать с постоянной амплитудой. Это критическое усиление **Ku**.
  3. Измерить период осцилляций **Tu** (время одного полного цикла).
  4. Вычислить Kp, Ki, Kd по таблице Циглера-Никольса.
ТипKpKiKdХарактеристика
P0.5 Ku00Быстро, но со steady-state error
PI0.45 Ku0.54 Ku/Tu0Убирает error, чуть медленнее
PID0.6 Ku1.2 Ku/Tu0.075 Ku*TuБыстро + без error, но шумнее

В методе Циглера-Никольса Ku называют критическим усилением. Что происходит при Kp > Ku?

PID-контроллер

  • P: u = Kp*e - реагирует на текущую ошибку, оставляет steady-state error
  • I: u += Ki*integral(e) - убирает steady-state error, опасен windup при насыщении
  • D: u += Kd*de/dt - предсказывает будущее, усиливает шум - нужна фильтрация
  • Anti-windup: ограничивать интеграл при насыщении актуатора
  • Derivative on measurement: -d(y)/dt вместо d(e)/dt - убирает спайки при step setpoint
  • Метод Циглера-Никольса: экспериментально найти Ku и Tu, затем применить таблицу

Связанные темы

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

  • Кинематика и динамика робота — Объект управления для PID
  • Modern Control Theory: LQR и MPC — Оптимальные методы управления, превосходящие PID в сложных системах
  • Датчики и сенсорное слияние — Откуда берётся measurement для PID

Вопросы для размышления

  • Почему integral windup особенно опасен в системах безопасности (e.g., авиация)?
  • Как D-составляющая помогает при управлении системами с инерцией (маховик, корабль)?
  • В каких случаях PID перестаёт справляться и нужны более сложные методы управления?

Связанные уроки

  • sci-05
PID-контроллер

0

1

Войти