Разработать с нуля робота, который бы мог считывать QR-код с заданием, затем самостоятельно выехать на место погрузки, взять нужный объект и отвезти его к месту выгрузки — именно такое задание получили участники соревнований Bauman Robotics Club, прошедших в середине марта в Москве. Кто-то может сказать, что задача не выглядит неподъемной, нечто подобное уже реализовано на знаменитых автоматизированных складах Amazon. Однако на этот раз решить данную проблему предстояло студентам всего лишь за пару месяцев при практически полном отсутствии бюджета.
На соревнования заявились одиннадцать команд — десять представляли МГТУ им. Н. Э. Баумана, одна — Университет ИТМО. Всем участникам был выслан регламент, под которой они строили своих роботов. При этом простор для фантазии ограничивался в основном временем и наличными материалами.
«Было известно, что роботы будут соревноваться на прямоугольной площадке, в которой есть две зоны погрузки и две зоны выгрузки, — рассказывает ментор команды, студент Университета ИТМО Валерий Чернов. — В качестве грузов использовались шарики для пинг-понга. Из критериев судейства, которые даются в регламенте, зачастую можно понять ту стратегию, которая окажется выигрышной. Прямоугольное поле сильно упрощало задачу — нам надо было решать лишь задачу позиционирования робота, без картографирования полигона. На факультете у нас есть немецкая мобильная платформа Robotino, мы взяли ее за основу, сами сделали механику для захвата объектов, поставили лидар. Было известно, что число перевозимых объектов определяется случайно, но для каждой зоны погрузки и выгрузки их будет не более пяти, поэтому мы сделали пять захватов, чтобы взять все сразу и не ездить два раза».
Конструкторская работа — это всегда поиск баланса. Если вы сделаете своего робота медленным и аккуратным, то его могут обойти более быстрые, но менее тонко настроенные конкуренты. Если платформу сделать слишком быстрой и резкой, то она просто опрокинет груз, не довезя его до пункта назначения, за что получит штрафные очки.
На старт, внимание…
Как это всегда бывает, времени до соревнований не хватило на полную проверку и отладку всех систем. Работы продолжались даже в «Сапсане», на котором команда добиралась до Москвы. Таким образом, пассажирам поезда удалось увидеть работу импровизированной передвижной мастерской робототехники.
«Мы доделывали небольшие штрихи прямо в поезде, — рассказывает участник команды Артем Мышляев. — В какой-то момент мы обнаружили, что один из двигателей не работает, пришлось его там же и заменять. Другие пассажиры с интересом на нас смотрели, кто-то спрашивал, куда мы едем и зачем. Мы рассказывали им про соревнования, про нашего робота».
Наконец, команда добралась до здания Института проблем управления РАН в Новых Черемушках. Там на третьем этаже между испытательных полигонов и была расположена площадка для соревнований. Сразу команду из Петербурга ждал очень неприятный сюрприз — бортики площадки оказались ниже, чем заявлялось изначально.
«Бортики оказались высотой не в 30, как объявлялось изначально, а в 25 сантиметров, — рассказывает участник команды Александр Смехнов. — Для нас это было критично. Мы установили свой лидар на высоте 27 сантиметров, он должен был крутиться и давать роботу информацию о положении относительно бортов. Теперь это оказалось невозможно, нам пришлось вручную рассчитывать то, как работают наши датчики углов поворота, насколько проскальзывают колеса и, опираясь на эту информацию, предсказывать, куда уедет наш робот».
Четыре вместо пяти
Все команды перед соревнованиями получили время для сборки своих роботов, настройки, а также для тестовых заездов. Во время них можно было внести последние коррективы в работу своих платформ, чтобы адаптировать их непосредственно к трассе, на которой им предстояло перевозить грузы из двух зон погрузки в две зоны разгрузки. В это время можно было впервые увидеть, что приготовили конкуренты.
«Были ребята у которых были вот буквально картонные колеса, казалось бы, абсурд, но робот ездил, — рассказывает Чернов. — Еще один робот меня слегка шокировал своим максимально суровым видом: его двигатели были сделаны из шуруповертов. Просто стояли четыре шуруповерта, которые давали крутящий момент на колеса с помощью ременной передачи! Был робот, у которого не было клешней для захвата грузов — вместо этого была палка, которая сталкивала мячики в специальную корзину».
Незадолго до конца тестов студенты Университета ИТМО получили еще один неприятный сюрприз — крепление одного из манипуляторов треснуло. Чинить его не было времени, все что оставалось — снять агрегат. В результате вместо пяти рук у петербургского робота осталось всего четыре. В таком виде ему и пришлось выходить на старт.
Ход соревнований
У каждого робота было по две попытки, между которыми прошло около двух часов. За это время команды могли внести небольшие коррективы с учетом первого тура. Победитель определялся по результатам лучшей попытки — очки начислялись за касание нужного шарика в зоне погрузки, за его захват и его доставку к месту выгрузки. Если робот задевал ненужный шарик, то очки с команды снимались. Если два робота набрали одинаковое количество очков, то победителем объявлялся тот, который справился быстрее.
На первую попытку петербургская команда решила выбрать более консервативную тактику.
«Мы использовали давнюю, любимую мною стратегию — использовать на первой попытке только стабильные решения. Если сомневаешься: брать что-то или не брать, использовать дополнительные настройки или нет — не используй. Ты получаешь базовый результат, полученный системой, в которой ты уверен — ниже ты не опустишься. Во второй попытке ты используешь все возможные улучшения, если они сработают — то ты улучшишь результат, если нет — у тебя есть очки за первую попытку», — рассказывает Валерий Чернов.
После того, как робот вышел на старт, положение команды в психологическом смысле было даже сложнее, чем у спортивного тренера. Тот может сделать своим игрокам подсказку, указать на ошибку, робототехникам же приходится просто смотреть и радоваться успехам или расстраиваться из-за неудач робота.
«В начале первой попытки оказалось, что мы немного неверно подобрали коэффициенты, — рассказывает Александр Смехнов. — Наш робот считал, что доехал до места погрузки, но это было не так, в результате он только чуть задевал шарики. Это тяжело — ты видишь, что робот вот-вот промажет, осознаешь, что это твоя ошибка. Мы прямо считали, как с каждого шарика мы теряли по 15 баллов. С другой стороны, мы осознавали, что алгоритм сработал верно и нужно лишь немного изменить коэффициенты в перерыве. При этом мы все равно закончили первую попытку вторыми».
Финишный спурт
Первая попытка показала, какие ошибки сделала команда — некоторые из них было легко исправить, некоторые — сложнее.
«У нас конструкция держалась на серводвигателях, из-за этого были люфты, погрешности, иногда манипуляторы не закрывались полностью, все это приходилось вручную рассчитывать. Кроме того, мы учли положение поля, положение шариков, заново посчитали, исходя из первого тура, некоторые коэффициенты, все это позволило двигаться роботу точнее», — поясняет Александр.
Таким образом, во второй попытке петербургский робот показал себя лучше — смог захватить и удержать больше нужных шариков и набрать больше очков. Однако дотянуться до первого места этот результат не позволил, более того, в последний момент петербуржцев обошла команда, которая после первой попытки им уступала.
«Это была веселая история, — вспоминает Смехов. — Их робот начал ехать, но в какой-то момент буквально сошел с ума, он начал носиться повсюду, туда-сюда, сбивая шарики. Но эти шарики закатились в зону выгрузки и их… засчитали за доставленные. Мы даже почти не расстроились, скорее повеселились и порадовались везению ребят. Тут понятно, что все нервничают, времени не хватает, всегда все идет не так, многое зависит от рандома. Хотя, конечно, немного обидно, что место зависело в итоге от пары цифр в коде».
И все же первокурсники Университета ИТМО смогли остаться в призах и привезти домой бронзовые медали. Поэтому дебют робота (имя ему команда пока придумать не успела) можно признать удачным. Теперь на нем будет продолжена работа с автономной навигацией. Студенты же получили бесценный опыт соревнований в другом городе, на чужой площадке, который пригодится им в будущем.
«После соревнований у ребят появляется понимание, что такое высокая инженерия, — подводит итог Валерий Чернов. — Ведь соревнования по робототехнике не слишком отличаются от, к примеру, запуска ракеты. У тебя есть задание, ты работаешь, у тебя есть примерно одна попытка чтобы добиться успеха. Возможно, кого-то это привлечет, может быть, кто-то из участников решит пойти по другому пути — уйдет в исследования, где нет ограничения по времени и нет одной попытки, а поиск наилучшего решения никогда не заканчивается».