Посмотрите на перевернутый маятник – управляемый Arduino


Если вы никогда не видели в действии перевернутый маятник – это весело. Еще интереснее реализовать его. Это Интернет вещей? Это теория управления? Это ИИ? Это может быть что угодно – и я уже упоминал, что это весело?

Что такое перевернутый маятник?

Что ж, если вы возьмете палку и попытаетесь удержать ее на пальце, у вас будет правильная идея. Большинство перевернутых маятников реализовано в виде небольшой приводной тележки с рычагом, поворачиваемым на шарнире тележки. Тележка может двигаться влево и вправо и тем самым прикладывать ускорение – или, если хотите, силу – к концу маятника:

Есть несколько вариаций основной идеи – например, в видео есть поворот на 360 градусов, поэтому он начинается с опущенного положения.

Это классическая проблема в теории управления, и это была одна из первых проблем, которые я решил с помощью обучения с подкреплением – но это был всего лишь симулированный перевернутый маятник, а реальный намного лучше.

Бен Винер и Филип Цукер создали ZIPY – Zippy Inverted Pendulum Yakshave – после того, как прошли курс обучения недостаточно управляемым роботам и хотели чего-то, что не было бы просто «хромой симуляцией».

Реальный мир также может усложнять задачу, чем симуляция. Оборудование представляет собой тележку, напечатанную на 3D-принтере, с двигателем постоянного тока и ременным приводом. Маятник, мешалка для краски, закреплен на поворотном энкодере, который измеряет угол. Второй поворотный энкодер прикреплен к ремню и показывает положение тележки. Контроллер представляет собой Arduino Uno, который ограничивает точность до 600 позиций на оборот.

В программном обеспечении реализованы два контроллера: один для поднятия вехи в нужное положение, а другой для удержания ее в этом положении. Контроллер балансировки основан на линейно-квадратичном регуляторе (LQR), реализованном на Python.

Вы можете увидеть результаты:

Пока интересно узнать, что не сработало. Наблюдение за положением с помощью маркеров и системы технического зрения OpenCV вроде как сработало, но оказалось сложнее, чем ожидалось, из-за ложных объектов в кадре и задержки обработки. Пока они не реализовали алгоритм обучения с подкреплением.

Если вы хотите попробовать свои силы, весь код и файлы 3D-принтера доступны. Такие проекты стоит делать только для того, чтобы узнать, каков мир на самом деле.


Добавить комментарий