Який алгоритм я повинен використовувати для врівноваження двоколісного робота за допомогою гіроскопа?


25

Чи є хороший, популярний і надійний алгоритм, яким я можу скористатися, взявши дані від гіроскопа і використовуючи це для управління двома незалежними колесами, щоб такий збалансований робот надійно стояв вертикально? Я шукаю алгоритм, який дозволить мені використовувати його для керування роботом, а також утримувати його у вертикальному положенні, коли він нерухомий. Здатність боротися зі схилами та людьми, що підштовхують це, також була б бонусом, але не суттєвою.


Я також буду над цим працювати. Для фільтрування необроблених даних вам потрібно використовувати фільтр kalman. І використовуйте алгоритм PID, щоб настроїти його.
Хузо

Відповіді:


16

Найпростіший контролер - це лінійний контролер зворотного зв'язку. По суті, є 4 різних стани, для яких вам потрібно отримати прибуток. Це кут нахилу, швидкість нахилу, швидкість і положення.


LQR (лінійний квадратичний регулятор) - це метод проектування цих посилень (після отримання лінеаризованого представлення простору стану та вашої системи). Якщо у вас немає представлення простору стану (напевно, немає), ви можете отримати рівняння руху та виміряти параметри. Якщо у вас немає представлення простору стану, вам слід просто налаштувати посилення вручну (без LQR або інших методів, таких як розміщення полюсів ).


Налаштування прибутку вручну:

Якщо припустити, що кут нахилу, положення / швидкість і крутний момент колеса спрямовані вперед (якщо вони позитивні), ви хочете отримати позитивний посилення на кут нахилу та швидкість нахилу, а також позитивний посилення на положенні та швидкості.

Почніть з посилення кута нахилу та швидкості нахилу. Це дозволить збалансувати його спочатку. Як тільки він залишається збалансованим, ви можете контролювати положення та швидкість, додаючи їм посилення. Якщо вона нестабільна, збільшуйте коефіцієнт посилення на швидкості нахилу (що сприяє зволоженню системи).

Контроль положення / швидкості регулює обидва стани до нуля. Щоб контролювати якесь інше значення, вам просто потрібен контрольний контролер відстеження, замінюючи стани їх помилками, перш ніж подавати його у свій контролер (наприклад, поточна швидкість - посилання на швидкість).

Контроль нахилу можна здійснювати самостійно (з різницею крутних моментів, що додаються до основного регулятора балансу / швидкості / положення).


9

Я вважаю, що найпопулярнішим рішенням цієї проблеми є контролер LQR . Проблема, яку ви намагаєтеся вирішити, - це проблема перевернутого маятника . Використовуючи ці ключові слова, ви можете мати можливість відкрити чийсь код Google із відкритим кодом. Наступною проблемою буде відображення більшості відповідних фізичних величин до вашої програми (вага, крутний момент двигуна тощо)


5

Оскільки я не знаю ваших навичок управління / теорії управління, рекомендую почати з PID-контролера . Це простий контролер, і ви знайдете багато реалізацій його коду. Недолік PID полягає в тому, що, ймовірно, ви витратите певний час на налаштування параметрів вручну.

Деякі роки тому я використовував його для управління двоколісним роботом Lego Mindstorm на основі його одометрії, і він працював досить добре. Щоб змусити його рухатися, вам потрібно буде пограти з встановленими точками.

Звичайно, згодом ви можете покращити якість свого контролера (стабільність, надійність тощо), використовуючи більш вдосконалені закони управління, такі як LQR, згадані раніше.

Удачі!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.