Physics
Тележка с маятником: раскачка и баланс
Перевёрнутый маятник на тележке: раскачка по энергии поднимает его, линейно-квадратичный регулятор удерживает, толчок показывает, как регулятор отрабатывает. Двойной маятник — сложный режим.

Что происходит
Маятник на тележке, которая умеет только толкать влево и вправо, — и всё же маятник встаёт на попа. Это делают два закона, и переключение между ними — вся история. Пока маятник висит, регулятор качает энергию: он измеряет, насколько энергия маятника ниже уровня вертикали, и разгоняет тележку в ту сторону, которая эту энергию подкармливает, — как вы подталкиваете качели в такт. Он целится на пол m g l выше вершины нарочно: нацеленный ровно в вершину, маятник пришёл бы туда впритык, и трение в подшипнике держало бы его на несколько градусов ниже вечно. У концов рельса раскачка затухает, и её сменяет возврат к центру, поэтому тележка не доезжает до упоров. Когда маятник входит в начерченный мелом конус с достаточно малой энергией, закон переключается: второй закон — линейно-квадратичный регулятор, постоянные коэффициенты при четырёх числах x, θ, x', θ'. Их никто не подбирал руками — они выходят из уравнения Риккати для собственных уравнений маятника, линеаризованных у вершины, и решаются заново при каждом сдвиге ползунка. Толкните маятник и смотрите на силу под тележкой: от небольшого толчка регулятор отрабатывает, после большого маятник падает, первый закон вступает снова, и цикл повторяется. Выключите регулятор — маятник просто упадёт. Двойной маятник открывается стоя, и его держит тот же регулятор с шестью коэффициентами; раскачать двойной маятник — задача оптимизации траектории, и модель этого не изображает.
Уравнения модуля
Уравнения (M + m) x'' + m l cos θ · θ'' − m l sin θ · θ'² = F − b x' m l cos θ · x'' + m l² θ'' − m g l sin θ = −c θ' (θ отсчитывается от верхнего положения) E = m l² θ'²/2 + m g l (cos θ − 1), dE/dt = −m l a θ' cos θ Раскачка: a = k (E − E_ref) θ' cos θ, E_ref = 0.5 m g l, F = (M + m) a, |F| ≤ 18 N Переход к стабилизации: |θ| < 30° и E < 0.8 m g l → u = −K s, s = (x, θ, x', θ') LQR: AᵀP + PA − P B R^-1 Bᵀ P + Q = 0, K = R^-1 Bᵀ P, Q = diag(1, 10, 1, 1), R = 0.1 линейный вверху: ∂θ''/∂θ = g (M + m) / (M l), ∂x''/∂θ = −m g / M, ∂θ''/∂F = −1 / (M l)


