Балансирующий робот
Наш балансирующий робот представляет собой двухколесное транспортное средство, которое состоит из одной колесной пары и корпуса, на котором располагается система управления и аккумулятор. В конструкции этого робота центр масс корпуса находится выше оси вращения колес, поэтому такая конструкция является неустойчивой, и для ее стабилизации во время движения необходима надежная система управления.
С математической точки зрения модель движения такого робота аналогична модели перевернутого маятника. Задача стабилизации перевернутого маятника в неустойчивом положении является классическим примером в теории автоматического управления и часто используется для сравнения различных алгоритмов управления (ПИД-регуляторы, нечеткая логика, нейронные сети и генетические алгоритмы).
Робот собран из конструктора fischertechnik ROBO TX учебная лаборатория (арт. 505286). Конструкция состоит из прямоугольной рамы, на которой закреплены следующие узлы: в нижней части — двигатели и датчик наклона, в средней части — бортовой управляющий контроллер, и в верхней части — аккумуляторная батарея.
Первые конструкторы fischetechnik появились в Германии в середине 1960-х годов. Первоначально это были механические конструкторы, которые состояли из пластиковых строительных блоков и соединялись друг с другом с помощью зацепления «ласточкин хвост». Постепенно перечень деталей увеличивался, в составе конструктора появились простые электронные блоки, а затем и микропроцессорные блоки управления. Первые наборы fischertechnik с программируемыми контроллерами появились во второй половине 1980-х годов.
Вес робота — 600 г. Диаметр колес — 90 мм. Для измерения угла наклона используется плата с трех-осевым акселерометром ADXL335 и двухосевым гироскопом IDG500, которая подключается напрямую к бортовой системе управления на базе микропроцессорного блока Arduino. На плате Arduino установлен микроконтроллер ATmega328P, работающий на частоте 16 МГц. Объем flash-памяти микроконтроллера — 32 кБ. Программное обеспечение написано на языке Wiring с расширениями для Arduino. Для стабилизации робота в вертикальном положении используется стандартный ПИД-регулятор. Частота работы регулятора 100 Гц.
Для вращения колес используются двигатели (135484 Encoder Motor) из конструктора fischertechnik. Максимальная скорость вращения двигателей 300 об/мин. Двигатели получают питание от платы расширения Arduino, на которой установлен драйвер L293. Управление скоростью двигателей с помощью ШИМ.
==
ПАКПАК — обучение через игру!
А почему для стабилизации выбрали ПИД-регулятор, а не фильтр Калмана?
Планируется ли добавить роботу возможность передвижения?
И защиту от столкновения =)
Вот интересный проект Испанца — http://www.youtube.com/watch?v=DyieQZaT_WM&NR
Я использовал для стабилизации ПИД-регулятор потому что это, наверное, самый простой и доступный для большинства алгоритм регулирования. В сети существует множество подробных описаний этого алгоритма.
Планирую добавить контур регулирования скорости вращения колес.
Спасибо за ссылку. Там все описание на испанском. Может быть есть английская версия?
На английском, из хорошо реализованных, встречал только на основе конструктора LEGO Mindstorms NXT
Вот несколько ссылок, должно быть интересно:
http://web.mac.com/ryo_watanabe/iWeb/Ryo's%20Holiday/NXTway-G.html — сайт проекта
http://www.youtube.com/watch?v=V40ScvJeFxg — видео
И более интересная реализации с управлением с ПДУ
http://www.youtube.com/watch?v=dIdVl3c7HL8
http://sites.mecheng.adelaide.edu.au/robotics/robotics_projects.php?wpage_id=44&title=47&browsebytitle=1 — моделирование в MATLAB для NXTway-G
Спасибо за ссылки.
Вот тоже интересная реализация:
http://www.geology.smu.edu/~dpa-www/robo/nbot/index.html
Этого робота тоже видел.
Энкодер в моторах используется?
Сейчас энкодеры, встроенные в серводвигатели, не используются. Поэтому я и написал выше, что планирую добавить подчиненный контур регулирования скорости вращения колес. Это позволит повысить быстродействие всей системы.
ADXL335 и IDG500 на каком-то готовом модуле или сами плату делали?
Что-то проде такого http://www.sparkfun.com/products/10010
Только тут гироскопы другие
Используется плата SEN-09268 sparkfun.