Реализация робототехнических задач на платформе KUKA youBot, часть 1

Уважаемые читатели 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. Создатели представляют робота прекрасно подходящим для сферы образования.

Реализация робототехнических задач на платформе KUKA youBot, часть 1

На борт контроллера youBot можно установить ОС (в нашем случае Ubuntu 12.04), что позволяет запускать управление сразу на компьютере, встроенном в робота. Связь с роботом осуществляется через Wi-Fi-модуль.

Работа на youBot – действительно прекрасная возможность познакомиться с промышленными манипуляторами. Но для начала нам нужно испытать себя и youBot в деле.

Было решено реализовать на youBot очевидную для подобного рода передвигающихся манипуляторов задачу – найти и захватить целевой объект. Алгоритм программы следующий:

  1. Локализация и мапинг: определение местонахождения целевой площадки, на которой стоит объект, среди препятствий (в качестве препятствий выступают невысокие доски – «стены») с последующим приближением к площадке.
  2. Распознавание объекта: поиск объекта, который покоится на площадке, и получение его координат.
  3. Захват объекта с помощью полученных координат и его перенос в нужное местоположение.

Задача локализации решается с помощью вышеуказанного лазерного дальномера, а задача распознавания – с помощью 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, и там организуется граф обработки данных между тремя нодами-программами (локализацией, распознаванием объекта и его захватом). Эти ноды публикуют в соответствующие топики данные о своей работе, будь то информация о достижении роботом целевой платформы или координаты объекта. На три топика подписана главная управляющая нода, которая следит за работой трех остальных, а команды публикует в специальный топик, на который подписаны управляемые ноды. Поэтому граф управления выглядит так:

Для ускорения работы мы разделились на три команды, каждая из которых должна была реализовать одну из трех нод.

В следующей статье мы расскажем, как нам удалось реализовать локализацию, и что мы для этого использовали.
Оставайтесь с нами.

Источник

ros, youbot, локализация, мобильный робот, навигация, техническое зрение

Читайте также