Уважаемые читатели Geektimes, вас приветствует Студенческое конструкторское бюро (Robotics engineering department или RED) кафедры СУиИ Университета ИТМО. О нас уже писали в блоге нашего университета.
В рамках программы развития университета RED преследует несколько целей, и одна из них – участие в студенческой соревновательной робототехнике на международном уровне. В качестве стартовой платформы были выбраны популярные международные соревнования RoboCup. На RoboCup присутствуют несколько видов состязаний, от робофутбола до соревнований социально-ориентированных роботов, которые проводятся в разных странах с 1997 года. Российские команды тоже участвовали в соревнованиях и занимали призовые места.
Исходя из технической оснащенности RED и анализа конкурентной среды одной из возможных категорий соревнований стал RoboCup@Work, где множество промышленных манипуляторов соревнуются в выполнении типичных для них задач. Во многом этот выбор обусловлен тем, что кафедра располагает парой промышленных роботов youBot, созданных компанией KUKA. youBot – это всенаправленная мобильная платформа, на которой установлен манипулятор с пятью степенями свободы, с двухпальцевым захватом. В комплект входят: лазерный дальномер URG-04LX-UG01 от Hokuyo Automatic Co. с дальностью измерения 5600 мм на 240°, с помощью которого можно реализовать локализацию и мапинг; устройство распознавания движения ASUS Xtion, аналогичный Microsoft Kinect. Создатели представляют робота прекрасно подходящим для сферы образования.
На борт контроллера youBot можно установить ОС (в нашем случае Ubuntu 12.04), что позволяет запускать управление сразу на компьютере, встроенном в робота. Связь с роботом осуществляется через Wi-Fi-модуль.
Работа на youBot – действительно прекрасная возможность познакомиться с промышленными манипуляторами. Но для начала нам нужно испытать себя и youBot в деле.
Было решено реализовать на youBot очевидную для подобного рода передвигающихся манипуляторов задачу – найти и захватить целевой объект. Алгоритм программы следующий:
- Локализация и мапинг: определение местонахождения целевой площадки, на которой стоит объект, среди препятствий (в качестве препятствий выступают невысокие доски – «стены») с последующим приближением к площадке.
- Распознавание объекта: поиск объекта, который покоится на площадке, и получение его координат.
- Захват объекта с помощью полученных координат и его перенос в нужное местоположение.
Задача локализации решается с помощью вышеуказанного лазерного дальномера, а задача распознавания – с помощью ASUS Xtion. Все что нам нужно – написать программы, обрабатывающие данные с этих датчиков (благо, что существуют готовые открытые библиотеки для этих целей), а также каким-то образом реализовать захват объекта. Кроме того, нужно объединить все три части задачи в единую систему.
Управление youBot, обработка данных и «общение» между датчиками и роботом мы решили осуществить с помощью Robot Operating System. На Хабре уже были статьи про ROS и про роботов, работающих с ее помощью. Например, здесь рассказано про замечательную реализацию робота-гексапода, начиная от разбора железа и проектирования модели до объединения всех узлов под контролем ROS.
На всякий случай напомним, что ROS – фреймворк для работы с роботами, облегчающий разработку и объединение разных программных компонентов. ROS используется как в любительских и образовательных проектах, так и для разработки программ промышленных роботов. Стоит отметить, что в данный момент разрабатывается вторая версия ROS, которая обещает включить в себя еще больше возможностей для разработки роботов.
ROS обеспечивает многие службы стандартной ОС: аппаратная абстракция, низкоуровневый контроль устройств, передача сообщений между процессами и управление пакетами. ROS состоит из двух частей: непосредственно ядра программного обеспечения ros, и ros-pkg, набора пакетов (package), внутри которых содержится какие-либо данные, библиотеки, исполняемые и конфигурационные, логически объединенные в полезный модуль.
Основными концепциями общения компонентов в ROS являются ноды (node), сообщения (message) и топики (topic). Нода – это запущенный процесс, который умеет общаться с другими процессами. Топик – именованный канал, соединяющий различные ноды. ROS основан на архитектуре графов, где обработка данных происходит в нодах, которые могут получать и передавать сообщения между собой. Эти сообщения публикуются в топиках, которые разделяют сообщения на группы интересов. Когда некоторой ноде необходимо получать сообщения с определенными данными, эта нода подписывается на определенный топик. Благодаря этому между нодами возникает отношения «подписчик-издатель» (publisher-subscriber).
В нашем случае ядро ROS запускается на самом контроллере youBot, и там организуется граф обработки данных между тремя нодами-программами (локализацией, распознаванием объекта и его захватом). Эти ноды публикуют в соответствующие топики данные о своей работе, будь то информация о достижении роботом целевой платформы или координаты объекта. На три топика подписана главная управляющая нода, которая следит за работой трех остальных, а команды публикует в специальный топик, на который подписаны управляемые ноды. Поэтому граф управления выглядит так:
Для ускорения работы мы разделились на три команды, каждая из которых должна была реализовать одну из трех нод.
В следующей статье мы расскажем, как нам удалось реализовать локализацию, и что мы для этого использовали.
Оставайтесь с нами.
Автор: kap2fox