UroboRus на RoboCup Brazil 2022
Мы команда UroboRus, участвующая в соревнованиях RoboCup в категории робототехнического футбола Soccer SSL (Small Size League)(англ. Лига Малого Размера). С 17 октября по 22 октября этого года состоялись соревнования Robótica 2022 в городе Сан-Паулу, Бразилия, где наша команда представляла Президентский физико-математический лицей №239, Санкт-Петербургский Государственный университет и ПАО «Газпром нефть». Соревнования играют роль общих для всех регионов Бразилии, а также в них принимают участие команды из других стран Латинской Америки. Они проводятся в полном соответствии с регламентом RoboCup.
Команда на соревнованиях представлена 5 участниками:
Викторов Борис , Иванов Василий, Коновалов Петр, Мерзлякова Юлия, Липкович Михаил
Цель соревнований в категории SSL – это интерактивная игра в футбол между двумя группами роботов, в нашем случае это дивизион B, в котором предусматривается по 6 роботов в одной группе. Главной задачей категории выделяется проблема интеллектуальной мультиагентной кооперации и контроля над системой в условиях динамического окружения. Контроль предполагающий гибридное строение системы, сочетает централизованный и децентрализованный подходы.
Для игры, помимо самих роботов, требуется достаточно крупное поле. А также команды подготавливают свои компьютеры с ПО собственной разработки для контроля над роботами. Эти компьютеры команд подключаются в одну сеть с оборудованием организаторов.
Сверху над полем организаторы крепят камеры, изображение с которых поступает на единый сервер, выполняющий задачи машинного зрения.
Такие задачи решаются при помощи SSL Vision. Программа выполняет обнаружение координат роботов и идентификацию их номеров, принадлежности к команде, а также координат мяча на поле. Регламентом определено, что мячом является оранжевый мяч для гольфа. А верхние поверхности роботов строго регламентированы(их цвета, форма, размеры). Верхние грани роботов (шапки) роботов представляют из себя комбинацию специальных меток, выполненных из цветных бумажек круглой формы, которые задают номера роботам при их распознавании SSL Vision
Алгоритм распознавания и тонкая настройка параметров компьютерного зрения – это ответственность организаторов соревнований. Все компьютеры находятся в одной локальной сети, что обеспечивает простой и надежный доступ для команд к сведениям о координатах всех обнаруженных на поле роботах. Помимо сервера обнаружения роботов, регламентом предусмотрен единый для всех участников сервер арбитража процесса - Auto Referee. ПО выполняет важнейшую роль судейства происходящего на поле и определения нарушений регламента роботами. От выкатывания мяча в аут до выдачи желтой карточки команде - все это обнаруживает в первую очередь программа, и принимает решение, которое команды должны выполнить вручную или в автоматическом режиме. получает координаты мяча и роботов от SSL Vision, и содержит органы управления игрой - запуск, прекращение, взятие таймаута и тд.
Завершает трио автоматизации незаменимый Game Controller. С помощью этой программы определяется ход игры - централизованный запуск, остановка, подсчет голов и тд. Все общие игровые сигналы отправляет именно Game Controller. Такой подход способствует исключению возможного неравенства между командами.
Вышеперечисленное ПО является полностью открытым, и участники используют его для подготовки своих собственных алгоритмов управления роботами. SSL Vision, Auto Referee и Game Controller подготавливает и совершенствует оргкомитет в сотрудничестве с командами участников.
Ключевой задачей при подготовке команды под такую категорию является разработка ПО, способного управлять одновременно группой роботов, принимая данные от трех общих источников информации о состоянии игры. Такое ПО содержит алгоритмы построения маршрутов движения роботов для различных элементов игры, осуществляет контроль их положения по обратной связи от SSL Vision, логику принятия решений для ситуаций на поле по командам от Game Controller, и многое другое. Запуск и остановка работы этой программы задается во время игры не участником команды, а Game Controller. Вышеописанная программа соединяется с блоком связи с роботами, который тоже относится к команде.
Несмотря на то, что команды вольны использовать роботов любого происхождения для своих групп, характеристики роботов строго регламентированы. Например, диаметр 180мм и высота 150мм. И другие характеристики, например: связь, максимальная скорость перемещения и пинка мяча и тд. Такие ограничения заставляют команды создавать более совершенные алгоритмы, а не выигрывать соревнования за счет самых быстрых или мощных моторов или способности робота забить гол из любой точки поля. Еще стоит добавить, что в SSL принято стремиться делать роботов одинаковыми. Среди них нет ярко выраженных вратарей, нападающих, защитников - все это решает алгоритм, распределяя роли между теми роботами, которые присутствуют на поле в конкретный момент матча. А каждый робот должен быть способен выполнять любую из возможных ролей.
Матч состоит из двух таймов по 5 минут. Команды расставляют на поле запущенных роботов, ассистент рефери (да, люди все еще нужны) выставляет мяч в центр поля.
Когда команды дают подтверждение о готовности, человек за компьютером с Game Controller запускает игру. И вот: роботы обеих команд начинают двигаться. Мяч выбивает из центра поля команда желтых, команда синих сразу же принимает действия для предотвращения атаки - вратарь готовится защищать ворота, полузащитники ограничивают попадания мяча к вратарю, а нападающий старается отобрать мяч!
Стоит роботу желтого ударить чуть криво - и мяч оказывается возле одного из защитников синей команды.
Алгоритм синей команды распознает полученное преимущество и перераспределяет роль нападающего на другого робота группы. Бывший защитник ворот захватывает мяч и старается вывести его на вражескую часть поля, стремясь выполнить атаку на ворота оппонента, стремительно приближая для участников команды заветный “ГООЛ!”
Однако, в отличие от настоящих футболистов роботы даже теоретически не способны проявлять эмпатию к переживаниям своих создателей, болельщиков и вообще к кому-либо. Выполняя действия программы, они лишь показывают то, насколько дотошно были выработаны теоретические рассуждения разработчиков алгоритмов, управляющих этой группой навороченных машинок с омниколесами, а также - насколько хорошо таких роботов собрали и придумали их создатели. Каждое настоящие соревнование таких роботов между собой - это проверка на прочность для всех людей, принимавших участие в создании ПО, группы роботов, и других сопутствующих процессов.
В реальном матче, как только мяч покинет дрибблинги пары-тройки роботов - так вот, он уже оказывается за пределами поля, потому что какой-то бот его криво пнул. Стоит разыграть аут, как через 8 секунд Auto Referee выдает желтую карточку за что-то. Одна из команд убирает робота за обнаруженное нарушение. Игра продолжается, синие даже забивают гол. Но обнаруживается, что прежде чем гол был забит, SSL Vision потерял нескольких роботов команды из-за бликов. Ведь над полем закреплены обыкновенные камеры, они тоже подвержены различным оптическим искажениям. Поэтому гол оказывается не засчитанным. И нельзя пока что все эти “умные” программы оставить без присмотра.
Как и подачу мяча роботам, некоторые сигналы и настройки задает в интерфейсе Game Controller человек во время игры. За работой SSL Vision пристально следит второй человек: а вдруг на поле появится ошибочно распознанный второй мяч? Третьему прямоходящему приходится выполнять самую сложную задачу: следить за происходящим во время матча, чтобы отслеживать нарушения регламента, и определять то, правильный ли вердикт вынес Auto Referee. Интересной особенностью категории SSL является то, что во время матчей такие важные роли должны выполнять участники команд, не участвующих в текущем матче.
Познание вышеперечисленных тонкостей и есть неотъемлемая часть соревнований на реальном поле с реальными роботами. Почему же такой акцент на слово “реальный”? Дело в том, что матчи возможно производить и в виртуальной среде - программы организаторов следят за виртуальными координатами виртуальных роботов участников, а участники для этого лишь готовят код. Такие соревнования были уже не редкостью для команды UroboRus, принимавшей в них участие ранее. А также подобная техника применяется для банальной проверки собственных разработок, пока роботы проходят доработку.
В дистанционных состязаниях виртуального RoboCup наша команда даже смогла обыграть некоторых противников. Но такое испытание вряд ли чего-то может показать без полноценной игры на поле с покрытием из зеленого ковролина.
Тут и вступают в дело роботы. При разработке этих специальных “машинок” возможно учесть регламент, посчитать подходящие характеристики моторов и аккумулятора. Изготовить платы высококачественно, отфрезеровать пластины и отлить силиконовые ролики дрибблера ровно по 3D модели. Но никак нельзя предусмотреть все те нюансы, которые могут просочиться наружу только при реальной игре.
Поэтому экзистенциальной необходимостью для настоящей команды людей с роботами и своими алгоритмами являлся выезд на состязания с командами, которые уже не первый год выступают в той же категории. Только используя подобный опыт, возможно произвести сравнение достоинств и недостатков, проанализировать события матчей и разговоров с участниками других команд. А потом, вложить полученные знания в совершенствование роботов и ПО для них.
В связи с тем, что в России пока иных действующих команд SSL не было обнаружено, единственный шанс посоревноваться - это съездить на RoboCup в другую страну.
Большинство членов команды имело опыт участия в международных состязаниях RoboCup Junior годами ранее, однако в связи с событиями 2022 года, участие России в очередном международном этапе было ограничено. Мы быстро перестроились и начали искать другой способ покатать мяч с настоящими соперниками. Выбор Бразилии оказался крайне подходящим. С организаторами из этой страны уже был налажен контакт, благодаря прошлогодним дистанционным соревнованиям. А несмотря на то, что соревнования проводятся на уровне страны, команды SSL категории из Бразилии имеют давнюю историю и солидные результаты на международных этапах в прошлом. Это говорит о том, что нам довелось соревноваться не с самыми “простыми” представителями категории. Но и не с лидерами. Хотя, что уж тут скрывать - лидеров у такой новой команды сразу победить все равно вряд ли получится.
Соревнования проходили в два этапа: групповой этап и плей-офф. Первый матч был очень интересным, мы играли с одной из самых сильных команд. События на поле развивались стремительно: наши роботы не смогли забить ни единого мяча по воротам оппонента ни одного мяча, однако слаженная работа соперника позволяла и нашим роботам достойно ему подыгрывать. Матч получился одним из немногих, похожих на увлекательное зрелище.
Наши оппоненты оказались подготовлены как с технической стороны, так и с программный точки зрения: ни один робот не вышел из строя во время матчей, все работали одинаково хорошо, перемещались резво. А о программном превосходстве говорила, как минимум, их четко проработанная техника игры в пас. Впоследствии мы сравнивали этот матч со следующими: ярко выраженная инициатива соперника в игре в совокупности с их невысоким количеством ошибок, приводящих к приостановке игры, приводили к тому, что наши роботы стабильно выполняли задачи. Но некоторые зажатые рамки скоростей наших роботов (которые, согласно привычкам бывалых робототехников, не принято сразу раскручивать на полную катушку, пока не проверена работоспособность на практике), недостаточная проработка ключевых функций таких как пас, пинок мяча по воротам, пенальти - все это давало возможность более шустрым и тонко настроенным роботам оппонента быстренько захватить власть над мячом.
Далее последовала череда матчей, которые приносили нам позитивные баллы. Все благодаря нашим роботам, важнейшим и непоколебимым достоинством которых являлась их высокая надежность. Если робот получал команду пнуть мяч - то он его действительно пинал. Если он получал команду ехать - то гарантированно крутил моторами как надо. Роботы не теряли связь с единым блоком управления и не отключались сами по себе. Заряда аккумуляторов с лихвой хватало на любую игру: даже если игра затягивалась более чем на час(!!), то аккумуляторы всех роботов не успевали разрядится более 50%. Также, вратарь и защитники довольно неплохо держали оборону, хоть иногда оппоненты нам и забивали мяч. Один из матчей мы выиграли, другие - лишь отстояли, получив баллы за это. Все дело в том, что у большинства команд роботы постоянно ломались или работали неодинаково.
У каких-то команд роботы банально отсутствовали. Мы же на каждый матч выходили с 6 роботами, при этом имея еще двух в запасе. А у оппонентов на поле могла стоять пара роботов или даже один! Аккумуляторы они меняли при первой возможности. Нам же это не требовалось во время игры, однако мы ставили полностью заряженные аккумуляторы перед каждым новым матчем.
По итогам группового этапа при наших заслуженных баллах мы заняли 3 место, благодаря чему мы попали в четверть финала.
Это событие стало неожиданным результатом для нас. Однако, внезапный успех не помешал продолжить вечернюю работу над алгоритмами, ибо мы понимали, что в финале наши оппоненты бросят все усилия, чтобы дать отпор дерзким новичкам.
К сожалению, матч за выход в половину финала мы проиграли. У соперников были не очень удачные “шапки” с цветными метками, которые SSL Vision очень плохо распознавал. Это растянуло матч на полтора часа, вместо 15 минут: организаторам приходилось много раз перенастраивать распознавание цветов. В том матче нам не повезло, так как нашим роботам все-таки удалось забить гол, но из-за проблем с компьютерным зрением, это событие не было засчитано. Ибо получалось, что на момент гола роботы оппонента были на считанные секунды обездвижены из-за проблем у организаторов. Сыграть вничью не удалось. Поэтому мы не прошли в четвертьфинал, проиграв со счётом 1:0. Мы учтём наши ошибки, чтобы в следующий раз не произошло такой ситуации. Таким образом, мы заняли 5 место на этих соревнованиях.
Мы сделали много выводов после матчей. Во-первых, мы поняли, что у нас получалось играть вторым номером лучше, чем первым. Нам удавалось хорошо защищаться, а после проводить успешную контратаку. В ситуациях, когда мы сами атаковали, у нас не всегда удавалось обойти защитников. Мы решили, что для будущих соревнований нам нужно доработать объезд защитников, чтобы атаки нападающих чаще заканчивались голом. Во-вторых, матчи нам показали, что стоит поработать над плавностью движения, так как, несмотря на то, что наши роботы были быстрее роботов противников, они не всегда захватывали мяч первыми, потому что наш подъезд был неточен. В-третьих, мы протестировали экспериментальный повышающий преобразователь напряжения, который заряжает конденсаторы до 300в вместо 150в и позволяет дальше пинать мяч. Разница в расстоянии на практике достигает прироста в 1.5 раза, при этом скорость зарядки конденсаторов увеличивается на 1.25 . В следующую итерацию роботов мы установим усовершенствованные преобразователи, однако доработки с ними потребует и конструкция робота: увеличенная мощность пинка приводит в негодность детали робота всего лишь за несколько срабатываний, сгибая их!
Что касается роботов соперников, то мы оказались приятно удивлены. Уровень их технического совершенства либо был равноценным там роботам, которые у нас есть, либо мы их превосходили по нескольким параметрам.
Среди представленных команд сильно выделились RoboCIn. Именно с ними UroboRus и сражались на самом первом матче.
Удивительно, но начинка наших роботов и RoboCIn не имеет существенных различий по элементной базе. В их роботах предусмотрены те же ходовые моторы, что и у нас, а также совпадает мотор дриблинга. Напряжение конденсаторов кикера примерно соответствует тому, чего мы достигли на единственном экспериментальном роботе (300в). Электроника хоть и выполнена иначе, но тоже имеет схожие черты: STM32F4 в качестве главного МК, самодельные BLDC ESC, связь в обе стороны через NRF24L01 (у нас через них только прием)
Но есть и важные отличия. Роботы соперников существенно легче. Это достигнуто благодаря использованию грамотно смоделированного под FDM 3D печать нижнего каркаса робота, меньшей емкости аккумулятора, легким 3D печатным омниколесам, и другим заметным факторам снижения массы робота. По словам члена их команды, масса снаряженного робота RoboCIn вместе с аккумулятором не превышает 2.4кг, в то время как наш робот в сборе имеет массу 3.75кг.
Такое облегчение не проходит даром: соперники часто меняли аккумуляторы. И для транспортировки они снимали колеса на всех роботах, чтобы предотвратить их повреждения или ослабление посадочной втулки. Однако в деле роботы проявляли небывалую прыткость: превосходство в скорости реакции было видно невооруженным глазом. Их роботы значительно быстрее ускорялись и замедлялись. Было интересно наблюдать, как при столкновениях с легкими роботами соперника наши роботы иногда попросту сдвигали их с места. Вопреки ожиданиям, FDM детали из PETG в этих роботах выдерживали эксплуатацию на матчах, по словам членов команды. Как по стойкости к температурному воздействию, так и по прочности в целом, их роботы держались очень хорошо: мы не заметили каких-либо поломок.
Команда RoboCIn заняла 1 место.
Остальные роботы сильно проигрывали по надежности нашим роботам. Это мешало им стабильно выступать 6 на 6.
Но отдельное внимание хочется уделить команде Warthog. Их роботы были разработаны и изготовлены уже не менее 7-8 лет назад. Все металлические детали покрыты многочисленными вмятинами, царапинами, где-то облезла краска. Часть электронных компонентов соответствует тенденциям разработки роботов в те года. Повсюду видна изолента и термоклей, грязь и пыль. Моторы они используют коллекторные, а конструкция дрибблинга и кикера явно сильно уступает нашей.
Однако, у этой команды есть очень большой опыт. В течение долгих лет участия в соревнованиях, они научились вытягивать алгоритмами из своих роботов максимум, несмотря на их кажущееся техническое несовершенство. А что требовалось доработать - они постепенно улучшали, тем самым выполняя итерационное развитие. Несмотря на то, что их роботы такие неказистые, они довольно стабильно играли на матчах и почти не ломались.
Команда Warthog заняла 2 место.
Хотим также поздравить команды Starkit HL и Starkit SPL, наших московских коллег из МФТИ с победой в категории в RoboCup Soccer Humanoid League!