Как студенты Университета ИТМО создают роботов
В нашем блоге мы пишем о разработке систем связи и о первых шагах на пути к продвинутому программированию.
Однако участием в олимпиадах активность студентов ИТМО не ограничивается: сегодня мы поговорим о том, как работает Студенческое конструкторское бюро (Robotics engineering department или RED), созданное в рамках кафедры СУиИ (Систем Управления и Информатики) Университета ИТМО.
Как и зачем возник проект RED
Немного истории: бакалавры по направлению «Интеллектуальные технологии в робототехнике» на 3 курсе обучения проходят практику на кафедре СУиИ. Так студенты знакомятся с реальными робототехническими системами и основам работы с ними. Практика длится около месяца, и за этот период студенты, работая в группах или в одиночку, реализуют свой небольшой проект (чаще всего программный) на имеющемся оборудовании.
В дальнейшем они часто продолжают работать с начатым проектом, усовершенствуя его, однако уже в рамках предмета «Программное обеспечение мехатронных и робототехнических систем».
В 2015 году в ходе такой практики и появился RED: шестерым наиболее успешным студентам было предложено стать «более весомой» частью кафедры и сформировать собственное конструкторское бюро. Теперь в RED ребята не просто «проходят обязательную практику», но и реализуют свой творческий потенциал, могут принять участие в российских и зарубежных выставках роботов, «растут» вместе со своими проектами и постепенно переходят от решения относительно простых задач к более сложным и масштабным.
Сейчас конструкторское бюро ставит перед собой несколько целей: это интеграция студентов в сферу научных разработок, участие в соревнованиях по робототехнике и реализация студенческих проектов на базе оборудования кафедры.
Типичная рабочая обстановка в RED
Что используем в работе
В 2015 году, когда появлюсь конструкторское бюро, мейнстримом проходящей практики стала операционная система ROS. ROS — набор пакетов и инфраструктура для роботов, облегчающая разработку и объединение разных программных компонентов. Иначе говоря, ROS — это системное программное обеспечение для программирования роботов, предоставляющее функциональность для распределённой работы.
Стоит отметить, ROS обеспечивает такие службы, как аппаратная абстракция, низкоуровневый контроль устройств, передача сообщений между процессами и управление пакетами. ROS используется как в любительских и образовательных проектах, так и для разработки промышленных роботов, в частности ПО ROS-Industrial используется для описания моделей роботов.
Причина, по который мы выбрали ROS для образовательного процесса — универсальность и относительная простота. ROS вводит уровень абстракции, на которым удобно строить взаимодействие между различным по своей архитектуре оборудованием. Кроме того, благодаря наличию огромного количества пакетов, очень часто отпадает необходимость в написании драйвера оборудования с нуля. Конечно, ROS не является лучшим или единственно правильным решением.
Например, для программирования роботов, выполненных на контроллере TRIK, который разработали наши коллеги из Мат-Мех СПбГУ, используется их собственный SDK.
Что разрабатываем
Уже в 2015 году на базе конструкторского бюро нам удалось реализовать несколько проектов: среди них робот-промоутер, раздающий листовки (на базе робота Johnny5 от Lynxmotion) и система глобальной локализации для многоагентной системы двух роботов (на базе Robotino от Festo Didactic).
Робот-промоутер
Над Johnny5 работали два бакалавра третьего курса в течение 3 месяцев. Изначально робот Johnny5 не имел «мозга» для обработки какой-либо информации, так как его контроллер отвечает лишь за управление сервоприводами, поэтому в качестве обработчика информации используется внешний компьютер, на котором установлена ROS.
Получение информации о внешнем мире происходит через устройства распознавания движения, такие как Microsoft Kinect или ASUS Xtion. Собственно, через ROS и происходит «общение» между системой технического зрения, компьютером и контроллером робота. Для этого студенты написали драйвер для контроллера, чтобы посылать на него команды по последовательному интерфейсу, а также программу-обработчик для управления по зрительным данным.
Робот Johnny5 раздает листовки на GeekPicnic-2015
Студентам удалось провести небольшую унификацию зрения, которая теперь позволяет использовать любое устройство распознавания движения, если для него есть драйвер под ROS. Например, драйвера для Microsoft Kinect и ASUS Xtion были взяты из свободно распространяемых библиотек.
В итоге у студентов получился робот, который способен обнаружить человека, привлечь его внимание, и как только человек подходит ближе — выдавать рекламную листовку. В дальнейшем планируется научить робота распознавать лица людей, а также заменить большой компьютер на одноплатный, подобный Raspberry Pi.
Многоагентная система на базе Robotino
Над Robotino также работали два бакалавра третьего курса в течение месяца. В библиотеках ROS уже присутствуют пакеты для работы с Robotino, и студентами эти пакеты были скорректированы таким образом, чтобы стало возможным управление с одного ПК двумя и более роботами. В качестве зрения используется навигационная система в закрытых помещениях — Northstar Sensor от Festo Didactic.
Помимо этого, студенты создали ПО, выполняющее расчеты, необходимые для получения оценки положения робота. Таким образом, роботы Robotino могут локализоваться, то есть получать несмещенную оценку своего положения, на площади существенно большей, чем это позволяет Northstar «из коробки».
RED в гостях у университета UFES, Витория, Бразилия
Роботы RED становятся популярными
С тех пор команда RED приняла участие в нескольких массовых научно-популярных мероприятиях, таких как GeekPicnic и выставка «Бал Роботов», а также установила контакт с коллегами в робототехнической сфере в Бразилии (университеты UFES, UNESP, UFABC).
Соревновательное поле для RoboCup Logistics League в университете UNESP, Сан-Паулу, Бразилия
Летом 2015 года совместно с коллегами из Мат-Мех СПбГУ была организована серия лекций-практикумов по робототехнике — Летняя кибернетическая школа 2015. Увеличилась и команда конструкторского бюро: наша работа интересует не только практикантов, но и студентов второго и даже первого курса — обычно они привлекаются к работе в RED во время выполнения учебных задач.
Руководство RED предлагает им продолжить работать над их проектами уже в составе RED, а затем приступить к более серьезным заданиям. Студенты младших курсов вносят посильный вклад в работу RED, например, некоторые из них занимаются робофутболом. Самые же способные досрочно рекрутируются в состав RED.
Летняя кибернетическая школа 2015
Планы на будущее
При выборе новой задачи студенты в RED отталкиваются от доступного оборудования и поэтому формулируют задачи под имеющихся роботов и датчики. К счастью, их разнообразие настолько велико, что мы можем решать задачи робототехники в самых разных областях, начиная с навигации и заканчивая управлением манипулятором.
Есть и существующие проекты, к которым студенты могут также присоединиться. Кроме того, каждый может предложить какой-то новый проект под новое оборудование, и если большинство решит, что проект того стоит, то из бюджета RED на него выделятся средства.
В целом, нашу команду интересуют самые различные направления робототехники. Судя по выполненным за прошедший год задачам, к таковым можно отнести:
- Техническое зрение роботов;
- Картирование и локализация роботов (SLAM) (с помощью ИК датчика-дальномера и камер с глубинным изображением);
- Управление манипулятором (прямая и обратная задачи кинематики);
- Футбол роботов.
В будущем в RED планируется участие в международных соревнованиях по робототехнике (в частности RoboCup и Eurobot). Кроме того, некоторые члены RED вместе с внештатными сотрудниками занимаются проектом, связанным с интеграцией мобильной робототехники в децентрализованную сеть Ethereum.