🎯 Перевернутий маятник: класична задача керування
Утримуйте маятник у вертикальному положенні на рухомому візку, використовуючи справжню нелінійну фізику системи «візок-маятник» і живий налаштовуваний PID-регулятор. Штовхніть його, розладнайте — і подивіться, як він падає.
Про цю симуляцію
Ця симуляція інтегрує справжні, пов'язані нелінійні рівняння руху системи «візок-маятник»: жорсткий маятник, що вільно обертається на візку, який ковзає горизонтальною рейкою. Гравітація та обмеження шарніра пов'язують прискорення візка ẍ і кутове прискорення маятника θ̈, тому вертикальне положення (θ = 0) є по-справжньому нестійкою рівновагою — залишений сам собі, маятник падає, точно як у реальності. PID-контур зчитує похибку кута на кожному такті керування й обчислює коригувальну силу візка F = Kp·e + Ki·∫e·dt + Kd·θ̇, обмежену реалістичною межею приводу, тоді як повільніший зовнішній контур також підштовхує цільовий нахил, щоб тягнути візок до обраної заданої позиції — складнішу версію задачі з двома цілями. Налаштуйте коефіцієнти, штовхніть маятник — і падіння, або відновлення, обчислюється в реальному часі з фізики, а не за сценарієм.
🔬 Що це демонструє
3D-установка «візок і маятник»: візок ковзає рейкою з жорсткими обмежувачами на кінцях, маятник вільно обертається на його верхівці, а зелена/червона стрілка показує миттєву керуючу силу. Бічна панель показує поточний кут, кутову швидкість, позицію візка, керуючу силу та статус «Збалансовано / Стабілізація / Відновлення / ВПАВ», обчислений безпосередньо з фізики, що виконується.
🎮 Як користуватися
Перетягуйте Kp, Ki та Kd, щоб змінити коефіцієнти контуру кута, і повзунок заданої позиції візка, щоб попросити візок утримувати іншу точку на рейці, продовжуючи балансувати. Натисніть Штовхнути → / Штовхнути ←, щоб внести імпульсне збурення, Слабкі коефіцієнти, щоб побачити, як недостатньо потужний регулятор повільно програє, і Скинути, щоб почати спочатку. Подивіться, що відбувається, коли Kp занадто малий, щоб подолати гравітацію, або Kd такий високий, що візок тремтить і дестабілізується.
💡 Чи знали ви?
Задача «візок-маятник» (також звана перевернутим маятником або задачею «балансування жердиною») є еталонною в інженерії керування з 1960-х років і стала одним із перших стандартних тестових середовищ у навчанні з підкріпленням після статті Барто, Саттона та Андерсона 1983 року — той самий трюк із балансуванням, замаскований, який утримує вертикально сегвей, ховерборд або посадку ракетного прискорювача.
Часті запитання
Чому вертикальне положення "нестійке" — хіба маятник не повинен там висіти?
Вільний маятник має стійку рівновагу, висячи прямо вниз (θ = 180°): підштовхніть його — і гравітація поверне його назад. Верхня точка системи «візок-маятник» (θ = 0°) — це протилежний тип нерухомої точки: справжні нелінійні рівняння теоретично врівноважуються там (сумарний момент дорівнює нулю), але будь-яке найменше збурення зростає, а не згасає, тому що відновлювальний момент гравітації поблизу θ = 0 діє на маятник у напрямку, що збільшує нахил, а не в напрямку, що його виправляє. Це підручникове визначення нестійкої рівноваги, і саме тому цій симуляції потрібен активний регулятор, що працює кожен кадр — вимкніть його (встановіть усі коефіцієнти на 0), і маятник одразу впаде, без жодного поштовху.
Які саме рівняння руху інтегруються?
Ця симуляція чисельно інтегрує стандартні пов'язані диференціальні рівняння системи «візок-маятник» (за Саттоном, Барто та Андерсоном, 1983, з доданим тертям): θ̈ = [g·sinθ − cosθ·((F + m·l·θ̇²·sinθ − b·ẋ)/(M+m)) − c·θ̇/(m·l)] / [l·(4/3 − m·cos²θ/(M+m))], та ẍ = [F + m·l·(θ̇²·sinθ − θ̈·cosθ) − b·ẋ] / (M+m), де M — маса візка, m — маса маятника, l — половина довжини маятника, F — прикладена до візка сила, а b, c — невеликі доданки в'язкого тертя. Вони розв'язуються з фіксованим малим кроком часу щокадру — ніщо в падінні чи відновленні не є попередньо анімованим.
Чому PID-контуру взагалі потрібен великий Kp, щоб працювати?
Лінеаризація наведених вище рівнянь поблизу θ = 0 показує, що замкнутий контур стійкий лише тоді, коли Kp перевищує g·(M + маса візка) — приблизно 19–20 Н/рад для мас цієї установки — нижче цього порогу дестабілізувальний момент гравітації переважає пропорційну корекцію, і маятник падає, спочатку повільно, а потім швидко, незалежно від початкових умов. Цей поріг — реальна, обчислювана властивість саме цієї системи, а не підібрана константа, тому пресет Слабкі коефіцієнти (Kp значно нижче цього порогу) надійно демонструє повільну, справжню втрату рівноваги.
Що відбувається за надто великого Kp або Kd?
Надмірний пропорційний коефіцієнт надто сильно реагує на малі похибки кута, перекомпенсовуючи корекцію і збуджуючи коливання; надмірний диференціальний коефіцієнт настільки агресивно підсилює доданок кутової швидкості, що привід багаторазово насичується на ±22 Н, і керуюча сила починає «тремтіти» між своїми межами. Обидва режими відмови безпосередньо видно в цій симуляції: спостерігайте, як стрілка сили мерехтить, а візок здригається туди-сюди, поки коливання не наростуть настільки, що маятник перевалиться за межу відновлення — реальний приклад класичного компромісу PID-налаштування між чутливістю та стійкістю.
Як працює задана позиція візка, якщо PID-регулятором керується лише кут?
Балансування та переміщення пов'язані в реальній системі «візок-маятник»: щоб перемістити візок, спершу потрібно трохи нахилити маятник у напрямку руху й дати гравітації його розігнати, точно так само, як людина, що балансує мітлою, нахиляє її, щоб пройти з нею через кімнату. Ця симуляція реалізує це як каскадне керування — фіксований зовнішній контур перетворює похибку позиції візка на невеликий заданий нахил (обмежений приблизно 8°), а PID-контур кута, який ви налаштовуєте, потім відстежує цей нахил замість фіксованого нуля. Саме тому сильне зміщення повзунка заданої позиції за слабких коефіцієнтів саме по собі може спричинити падіння — це та сама, складніша задача керування з двома цілями, з якою стикаються реальні сегвеї та посадкові модулі ракет.
Що насправді робить поштовх-збурення?
Штовхнути → та Штовхнути ← застосовують миттєвий поштовх до кутової швидкості маятника θ̇, той самий ефект, що й реальний поштовх поблизу верхівки маятника. Чи придушить його регулятор, повністю залежить від поточних коефіцієнтів і розміру поштовху відносно межі сили приводу ±22 Н — добре налаштований контур поглинає його й повертається до вертикалі, тоді як слабкий або погано налаштований не встигає створити достатньої коригувальної сили вчасно, і маятник падає, точно так, як диктує справжня, немодифікована фізика.
Чому система «візок-маятник» — така відома еталонна задача?
Це одна з найпростіших систем, що є одночасно нелінійною, недоприводною (один мотор, два ступені свободи) і по-справжньому нестійкою, що робить її стандартним стрес-тестом як для класичного керування (PID, простір станів/LQR, розміщення полюсів), так і для сучасного навчання з підкріпленням, де «CartPole» — одне з перших середовищ, на якому перевіряється майже кожен RL-алгоритм. Обмеження рейки та кута відмови в цій симуляції перегукуються з оригінальною формулюванням Барто-Саттона-Андерсона 1983 року (±2,4 м, ±12°), хоча тут візуальний поріг відмови встановлено трохи ширшим, щоб ви могли справді спостерігати падіння, а не миттєве завершення випробування.
Утримуйте маятник у вертикальному положенні на рухомому візку, використовуючи справжню нелінійну фізику системи «візок-маятник» і живий налаштовуваний PID-регулятор — штовхніть його, розладнайте — і подивіться, як він падає.
2D · HTML5 Canvas 2D · ціль 60 FPS · працює повністю на стороні клієнта, без встановлення