Какой алгоритм следует использовать для балансировки двухколесного робота с помощью гироскопа?


25

Есть ли хороший, популярный и надежный алгоритм, который я могу использовать, беря данные с гироскопа и используя их для управления двумя независимыми колесами, чтобы надежно удерживать такого сбалансированного робота в вертикальном положении? Я ищу алгоритм, который позволит мне использовать его для управления роботом, а также для поддержания его в вертикальном положении в неподвижном состоянии. Умение справляться с уклонами и подталкиванием людей также будет бонусом, но не обязательно.


Я тоже буду над этим работать. Вы должны использовать фильтр Калмана для фильтрации ваших необработанных данных. И использовать алгоритм PID, чтобы настроить его.
Huzo

Ответы:


16

Самый простой контроллер - это контроллер с обратной связью по линейному состоянию. По сути, есть 4 различных состояния, для которых вам нужно получить. Это угол наклона, скорость наклона, скорость и положение.


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


Настройка усиления вручную:

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

Начните с усиления по углу наклона и скорости наклона. Это позволит получить баланс на начальном этапе. Как только он остается сбалансированным, вы можете контролировать положение и скорость, добавляя к ним усиление. Если оно нестабильно, увеличьте коэффициент усиления наклона (что помогает демпфировать систему).

Регулятор положения / скорости будет контролировать оба состояния до нуля. Для управления каким-либо другим значением вам просто необходим контроллер отслеживания ссылок, заменяя состояния их ошибками перед подачей его в ваш контроллер (например, текущая скорость - задание скорости).

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


9

Я считаю, что наиболее популярным решением этой проблемы является контроллер LQR . Проблема, которую вы пытаетесь решить, это проблема перевернутого маятника . Используя эти ключевые слова, вы сможете найти в Google чей-то открытый исходный код. Следующая проблема будет отображать большинство соответствующих физических величин для вашего приложения (вес, крутящий момент двигателя и т. Д ...)


5

Поскольку я не знаю ваших навыков в области управления / теории управления, я рекомендую вам начать с ПИД-регулятора . Это простой контроллер, и вы найдете много реализаций кода. Недостатком PID является то, что вы, вероятно, потратите некоторое время на настройку параметров вручную.

Несколько лет назад я использовал его для управления двухколесным роботом Lego Mindstorm на основе его одометрии, и он работал достаточно хорошо. Чтобы заставить его двигаться, вам нужно будет играть с заданными точками.

Конечно, позже вы можете улучшить качество вашего контроллера (стабильность, надежность и т. Д.), Используя более продвинутые законы управления, такие как LQR, упомянутый ранее.

Удачи!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.