Перевёрнутый маятник и балансирующие роботы

Классика теории управления: удержать палку вертикально — перевёрнутый маятник.

Перевёрнутый маятник — неустойчивая система (палка на тележке), которую нужно удержать вертикально управлением. Это эталонная задача, на которой проверяют регуляторы.

Почему именно маятник

Перевёрнутый маятник (палка, балансирующая на подвижной опоре) — «здравствуй, мир» теории управления. Он принципиально неустойчив: без управления палка падает. Чтобы удержать её, регулятор должен непрерывно подталкивать опору в нужную сторону — точно как мы балансируем шваброй на ладони. Эта же физика лежит в основе балансирующих роботов (сигвей, гироскутер), стабилизации ракеты на старте и удержания равновесия шагающими роботами. Освоив маятник, вы понимаете целый класс задач.

Как работает под капотом: стабилизируем маятник

Упростим: управляем углом палки theta, воздействуя ускорением опоры. Без управления малое отклонение растёт (палка падает). ПД-регулятор по углу и угловой скорости удержит её вертикально. Это обратная связь по состоянию [угол, скорость угла] в чистом виде.

import math
g, L, dt = 9.81, 1.0, 0.02
theta, omega = 0.2, 0.0          # стартовое отклонение 0.2 рад (~11 град)
Kp, Kd = 25.0, 6.0               # ПД-регулятор удержания

print("  t   угол(рад)  упр.u")
for step in range(0, 151):
    # ПД-регулятор: возвращает палку к вертикали
    u = -(Kp*theta + Kd*omega)
    # упрощённая динамика перевёрнутого маятника: ускорение от гравитации + управление
    alpha = (g/L)*math.sin(theta) + u/L
    omega += alpha*dt
    theta += omega*dt
    if step % 15 == 0:
        print(f"{step*dt:5.2f}  {theta:8.4f}  {u:7.2f}")
print("без управления палка упала бы; ПД удержал вертикаль (угол -> 0)")

Вывод:

  t   угол(рад)  упр.u
 0.00    0.1988    -5.00
 0.30    0.1137    -0.97
 0.60    0.0355     0.18
 0.90    0.0035     0.25
 1.20   -0.0032     0.11
 1.50   -0.0024     0.03
 1.80   -0.0009    -0.00
 2.10   -0.0001    -0.00
 2.40    0.0000    -0.00
 2.70    0.0000    -0.00
 3.00    0.0000    -0.00
без управления палка упала бы; ПД удержал вертикаль (угол -> 0)

Регулятор поймал падающую палку и вернул её к вертикали (theta → 0). Уберите управление (u = 0) — и угол начнёт неограниченно расти, палка упадёт. Это наглядная демонстрация мощи обратной связи: она стабилизирует то, что физически неустойчиво. Реальные балансирующие роботы используют ровно такой контур, только с настоящей моделью и фильтром Калмана для оценки угла по гироскопу и акселерометру.

Связь с другими применениями

Маятник — это шаблон для целого семейства задач. Квадрокоптер: четыре мотора, регулятор по углам крена/тангажа/рыскания удерживает аппарат в воздухе (та же стабилизация неустойчивого объекта). Ракета: отклонение сопла удерживает курс на старте. Сигвей: моторы колёс балансируют корпус. Везде — обратная связь по углу и угловой скорости, часто с упреждением и фильтром Калмана.

Раскачка и swing-up

Наша задача удерживала маятник, уже стоящий почти вертикально. Но есть красивая родственная задача — swing-up: маятник висит внизу, и его нужно раскачать и поставить вертикально, а потом поймать и удержать. Удержание линейно (около верхней точки система почти линейна, работает ПД или LQR), а раскачка существенно нелинейна — её делают, накачивая в систему энергию через резонансные толчки, как ребёнок раскачивает качели. Это показывает важный приём реальных систем: переключение стратегий. Один алгоритм раскачивает (энергетический, нелинейный), другой ловит и держит (линейный регулятор), а супервизор переключает их в нужный момент. Гибридное управление, сочетающее разные регуляторы для разных режимов, — обычное дело в робототехнике, от ходьбы роботов до манёвров дронов.

Частые ошибки

  • Только Kp без Kd. Чистый П удержит маятник плохо: он раскачивается. Нужна D-составляющая (по угловой скорости) для демпфирования.
  • Слишком редкий опрос. Неустойчивая система требует высокой частоты регулятора; большой Ts роняет палку.
  • Игнорировать насыщение опоры. Реальная опора ограничена по ускорению и ходу — это надо закладывать.

Итоги

  • Перевёрнутый маятник — эталонная неустойчивая система; обратная связь стабилизирует то, что само падает.
  • Удержание требует ПД по углу и угловой скорости (демпфирование критично).
  • Та же схема лежит в основе балансирующих роботов, квадрокоптеров и стабилизации ракет.
Проверьте себя
1. Почему перевёрнутый маятник — эталонная задача управления?
AОн очень простой
BОн принципиально неустойчив: без управления палка падает, и обратная связь её стабилизирует
CУ него нет динамики
DОн не требует датчика
2. Что критично для удержания маятника помимо Kp?
AБольшой интеграл
BKd (по угловой скорости) для демпфирования — иначе палка раскачивается
CНулевой период Ts
DОтключение датчика
3. Какие реальные системы используют ту же схему, что и маятник?
AТолько маятники
BБалансирующие роботы, квадрокоптеры, стабилизация ракеты на старте
CТолько термостаты
DТолько баки с водой