текст логотипа
Статьи

Команда SPbUnited на соревнованиях Robótica 2023

Аватар пользователя
Мерзлякова Юлия Игоревна

Мы - команда SPbUnited, активно участвующая в соревнованиях RoboCup в категории робототехнического футбола Soccer SSL (Small Size League). С 7 по 12 октября текущего года мы принимали участие в соревнованиях Robótica 2023 в Салвадоре, Бразилия, представляя Президентский физико-математический лицей №239, ИПМаш РАН, НПО “СтарЛайн” и ПАО "Газпром нефть". Эти соревнования представляют собой значимое мероприятие для всех регионов Бразилии, привлекая команды из Латинской Америки и соответствуя стандартам RoboCup. В прошлом году часть нашей команды уже участвовала в этих соревнованиях в составе команды UroboRus. Больше информации об участии UroboRus и подробное описание правил соревнований можно найти тут.

iV0IQR3WbtiemtIJys6R_mgnK5XsInvWwZyzX9PJyMemI88-hO1JYLyYhneqYIUCux3REmkzBRhY83K3w6GI_f6g8-cGspmEhn4bAfhrJlU3hpIDwJN9DoiC-stMdqwxnML02d9cJJ9vgpb7TSNsouM

Состав команды SPbUnited: Липкович Михаил, Устинов Илья, Мещеряков Александр, Ярмолинский Арсений, Иванов Василий, Викторов Борис, Мерзлякова Юлия, Глазов Юрий.

RoboCup Soccer SSL представляет увлекательные и технически сложные соревнования, привлекающие внимание и побуждающие интерес к робототехнике. Основной целью является проведение полностью автономных футбольных матчей между двумя командами роботов. Есть два дивизиона с разным количеством роботов и размером поля: Дивизион А (11 роботов в команде) и Дивизион Б (6 роботов в команде). В этой лиге акцент делается на разработке алгоритмов управления роботами и тактики игры. Команды получают одинаковую информацию о положении роботов и мяча от организаторов, а затем, используя её, рассчитывают команды для управления своими роботов. Любые вмешательства в разработанный участниками алгоритм после начала матча запрещены, что подчеркивает важность интеллекта роботов и программы.

aK_izWYuWkAL7DnIDZRD0WZ_xbxY3HUWLuD5RXL9zYOD8SOTRAdM8e006_XMCmhYrFVY0xxXsmHLgfUxdYU0U-zfuA-fySE2UugHGVLiVMZnIpOKaRfkqL3R3x_-KO5Pvz0SQggRZ642rAw0hGPB5yY

Участие в соревнованиях RoboCup SSL предоставляет отличную платформу для развития знаний и умений в различных областях, включая физику, математику, информационные технологии и искусственный интеллект. Робототехнический футбол объединяет академические и прикладные научные знания, что способствует подготовке студентов к будущей профессиональной деятельности.

На основе результатов соревнований прошлого года, мы провели анализ ошибок и внесли ряд глобальных изменений в подход к подготовке. 

Изменился состав команды - стало больше программистов. Разделение обязанностей и сегментирование программных компонентов позволяет улучшить подход к деталям каждого участка.

Изменен подход к структуре программ. Теперь в качестве основного языка программирования используется Python вместо MatLab. Благодаря этому новые члены команды смогли быстрее разобраться в программе, а сама разработка ускорилась благодаря простоте языка и наличию множества существующих библиотек.

Были устранены проблемы электроники. В прошлом году сильно не хватало силы удара пинающего механизма (кикера): в то время, как у противника мяч летел через все поле, нашим роботам лишь изредка удавалось закатить в ворота из центра. Эта проблема была решена при помощи увеличения пикового напряжения зарядки конденсаторов со 140 В до 250 В. Это усовершенствование также привело к необходимости усиления механизма кикера, чтобы он выдерживал удар и не ломался от возросших нагрузок.

Существенно улучшился механизм захвата и удержания мяча - дрибблер. За счет внесенных изменений в конструкцию валика, мяч, при попадании в робота выравнивается по центру, что позволяет пинать точно в цель, минимизируя отклонение.

1kZ70uclpIcAfNJ0EAGb1me2qi3RFbHuzjf2KwSPfzeCkab5RyuC5DysgUpFAXM6Y5LSF0eEc7O_pEefRgSmbi30LNOM9hUMUXdDoMtfPZFZryk8BJPKjZNInUcMEtVDdNoDs32obFKbrm3JJwzZ-vM

За год мы переписали полностью архитектуру и логику программы. Была проделана большая работа по разделению программы на независимые модули для более гибкой дальнейшей разработки и модернизации. Были кардинально переработаны алгоритмы тактики и низкоуровневого управления роботами. Стратегическая часть кода, хоть была доведена до рабочего состояния, но в итоге оказалась далёкой от идеала. Основная проблема была в том, что она была рассчитана на активную перепасовку между роботами, но из-за того, что мы не успели достаточно отладить пасы, мы отключили их и часть роботов периодически просто стояла на месте в ожидании паса. Это не было большой проблемой в матчах, где мы были фаворитами, но в матчах, где мы были аутсайдерами, это очень сильно влияло на результат. Мы считаем, что во многом это произошло из-за отсутствия спаррингов против других команд, поэтому на следующий год мы уже запланировали несколько спаррингов, для того чтобы столкнуть наши идеи с реальностью.

rv4qKmjwrTFrWLVPF6t1pGSNy2cDnq0ZBy5U_ojPeQpjF7Vq8ed4ZBQJn3aEXO1NleAjDru_zWGjHIklNj0vVqbIqCpo-ZsNpiIqeIzv-h5y1CfabYEADRwCs9-cXdE-ClpCD2_5cxrN5IHsivlwju4

Соревнования проходили в два этапа: групповой этап и плей-офф. В первый день мы столкнулись с некоторыми техническими проблемами, связанными с управлением маршевыми двигателями, их устранение заняло всё время до первого матча. Несмотря на это, мы прибыли на матч, но соперник, к сожалению, не смог начать игру, в результате чего нам присудили техническую победу 10-0. 

Во время тестирования стратегии на всех шести роботах было обнаружено, что присутствует задержка между тем как создается управляющая команда на ноутбуке и тем как она оказывается исполнена на роботе. Более того, роботы не действовали синхронно, то есть размер задержки отличался между футболистами. Замеры показали, что задержка могла достигать 200 мс что слишком много для SSL: за это время ситуация на поле может уже измениться, а роботы все еще будут пытаться осуществить команды, которые им были отправлены ранее.

В процессе отладки был локализован источник проблемы: им оказался блок связи, с которого управляющие команды отсылаются непосредственно на роботов. Помимо отправки команд блок выполняет и ряд других действий: он хранит текущие состояния роботов, отрисовывает на дисплее эту информацию, находится в постоянном ожидании входящих команд от сервера, в роли которого выступает наш ноутбук. Для пользователя любого современного персонального компьютера в таком одновременном исполнении различных задач, называемом параллелизмом, нет ничего необычного, операционная система оптимизирована, для того чтобы использовать множество ядер процессора. Однако, в блоке связи в силу физических и программных ограничений такая роскошь в виде параллелизма отсутствует, вместо этого там реализован механизм асинхронного исполнения задач. Это означает, что процессор в каждый момент времени исполняет лишь одну из описанных выше задач, все время переключаясь между ними. Иными словами, блок сначала пытается отослать команду на одного робота, затем переключается на то, чтобы отобразить что-то на дисплее, далее отправляет команду следующему роботу, потом проверяет не пришло ли новых входящих команд и так далее.

Сам по себе такой процесс является вполне работоспособным, однако, в его программной реализации были недочеты что приводило к тому, что была нарушена последовательность исполнения задач и их приоритетность. Эти недочеты и приводили к возникновению задержек между получением команд на блок связи и их отправки, и к тому что роботы получали команды с разными задержками. Данная проблема не возникала во время тренировочных игр ввиду того, что игры проводились три на три и для роботов из разных команд использовались разные блоки связи. При отправке команд на трех роботов нагрузка на блок была недостаточно высокой чтобы задержки стали ощутимыми.

Описанные проблемы в программном коде удалось разрешить и перепрошить блок связи. После этого роботы стали действовать синхронно и задержка перестала быть заметной.

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

d6Kngu-018zD_i1vCBJ6IyI_25XxzeryD5LqK2sf2vmqMzqwQBY2Zb0sHS5qJO5a_D0lGFUBZ4dj_IctvUkpJ2kWKaQNc8OIGgF5bbhWT6Vksehh-x0lr2tprmFVW8GyMnN3-xRsX4t4xUY9mnlLM14

Третий матч был крайне интересным для нас. На поле оказались Warthog - одна из наиболее опытных и сильных команд на соревнованиях. Опытные участники команды проявляют любопытные умения, заставляя дерзко маневрировать видавших множество матчей роботов. В прошлом году мы проиграли им всухую со счетом 0 - 10, так что данная игра была для нас показателем прогресса за год. Наши роботы, также, как и в прошлом году, были одними из самых стабильных с точки зрения механики и электроники. Прочная конструкция, а как следствие и большая масса робота по сравнению с соперниками, проявились интересной особенностью в этом матче. Роботы соперника не могли сдвинуть с места наших, что послужило причиной выхода из строя одного из Warthog’ов при попытке прорваться сквозь защитников SBbUnited. Также, при лобовом столкновении от быстрых и легких роботов нередко отлетали детали. Мы понимали, что в этом матче разрыв в счете может оказаться большим и не в нашу пользу в силу пропасти в опыте длиной в 8 лет, но матч прошел практически на равных и закончился нашим поражением со счетом 0 - 1. 

wCvksnIR5pNNGm1ipTLazauXK2rVtSZ46De2UzrkTCaPA6DdVzxEv9lq-6wJWEmQVSOlITRWYHdu_QPbMZXqQGV0lgZth5hVMpz7_Wj8WgYHIqig2BYEw_xGm6CiCCm8vxCyX67tKjXpMrZMY3zqxUs

По итогам двух дней мы прошли в плей-офф, оказавшись на втором месте в группе. Наш матч в плей-офф оказался крайне интересным и эмоциональным. (Кстати, посмотреть его можно тут). Мы играли с командой RoboFEI, которые приехали подготовленными значительно лучше, чем в прошлом году. В отличие от прошлого года, мощь алгоритмов университетской команды продемонстрировали все 6 роботов с их стороны. Год не прошел зря, и мы оценили их усовершенствованные маневры, которые отражают доработки кода. Однако, у всех существуют непредвиденные баги. Оказалось, что программа соперников не работает с номерами роботов, выбранных нашей командой. На роботах нашей команды были установлены номера с 9 по 16, которые редко применяются в дивизионе B. Это вызывало неправильную работу роботов соперника, алгоритм которых перезапускался в самом начале матча. Мы согласились предоставить им время на исправление, и когда они закончили - матч начался. Мы открыли счёт, забив гол уже на второй минуте. 

-y_4YY7SzzGR55GNQ864B4t_0dt4D7tZlGRJg3ZlDp6WWjJc1YQA3OHc5Y8yQpygadpkZKRvLlOxR269ui6DtrhRe_E-IgMZ353f3paRrq0JSllfMIjd2Av8CF2Q3XGt1XDsdI66KMujjQ4yKWVzhd0

Дальше на протяжении почти всего матча роботы просто пинали мяч друг другу, без голов. Мяч то вылетал в аут, то был неправильно выбит из него. В регламенте существует ряд требований к тому, как робот должен взаимодействовать с мячом в некоторых сценариях игры. Самым частым нарушением с обеих сторон был “double touch”. Такая причина ввода паузы и передачи инициативы оппоненту возникает когда робот при свободном ударе по мячу либо сдвигает его корпусом более, чем на 5 сантиметров, либо два раза подряд касается его. Если такое происходит, то мяч передается другой команде. Цикличное повторение нарушения с обеих сторон приводило к тому, что почти вся игра проходила возле краев поля, балансируя между зоной  противника, и нашей. Но ближе к концу матча, после отскока от вратаря, мяч все же залетел к нам в ворота. Ликующие соперники создали волнительную атмосферу. Вскоре, уже в последние 10 секунд второго тайма, RoboFEI дождались прорыва обороны нашего вратаря и во второй раз. Мы проиграли 1 - 2, и на этом, к сожалению, наше движение в турнирной сетке завершилось. 

fUabJPQGzG4hg2f397GL-AmDlVHu6bTq48ETtGbk9xGa7ygDaGmR4LugWa9TuPc3-4vkzLjlTADU3tebF6-3VOjli-1qgluoPaitJMVKMXr0r8xYKBn0MG008Dv8QyfMiCwWjdrVuqLs0hMrCOFG9G8

Благодаря этим матчам мы выявили как положительные, так и отрицательные стороны нашей игры. 

Из положительного следует отметить стабильность: все наши роботы работали практически без сбоев, и программа всегда выполняла необходимые действия. Уровень нашей игры по сравнению с прошлым годом сильно возрос, мы достойно играли против сильных команд, матчи с нами было интересно смотреть, так как их исход был не очевиден, в отличии от прошлого года. 

Среди негативных моментов выделяется стратегия игры. Ввиду того, что эти соревнования были для нас первыми после крупной переработки программной базы, мы не могли протестировать все наши идеи ранее. Роботы бразильских команд оказались быстрей и манёвренней наших вследствие меньшего веса. Из-за этого наши защитники не успевали блокировать внезапные атаки, а атакующие постоянно блокировались. Также переход между состояниями атаки и защиты оказался малоэффективным, роботы не успевали встать в стенку, когда мяч уже летел в ворота или оказывался под нашим контролем. Эти и другие непредвиденные проблемы нашей стратегии мы исправляли в первые дни, во время отладочных игр и матчей в группе, но не все удалось устранить на месте.  Мы активно работаем над этим и надеемся продемонстрировать более впечатляющие результаты в следующих соревнованиях! 

Также стоит отметить наш опыт взаимодействия с другими командами. В связи с тем, что местное население в основном не владеет английским языком, общение вне соревнований было усложнено(хотя теперь мы немного понимаем португальский). Тем не менее, большинство студентов-участников владеют английским на достаточно хорошем уровне. Спорные соревновательные моменты решались компромиссами, все участники были заинтересованы в честных и интересных соревнованиях.

Sz346fPQATFMxA3UjZpUlOA0nEUPDqvcoVPJ7KulFYuAMc4e0Scl5vkLohbHquMrE4ZHPOODcXj4E8WAjZ9MD3ZPPHqG0n3BODU5A6z3d7stQ27TA5RZGTSwFitTqzBIWsDrwdJxqqiUeX8n52JycME

Отношение организаторов к нашей команде, как единственной из далекого зарубежья, заслуживает отдельного упоминания: судейство велось на английском языке, несмотря на то, что остальных команды были из Бразилии, а организационных чатах присутствовали английский и, иногда, даже русский языки. (На фото ниже главный судья лиги SSL - Рафаэль Ланг в футболке нашей команды)

Ia7voWbElLvjwt0X3lhf4_0ip9ctImYhI1S-Bs4AQQTrQvMB07jtJqO90eoR4XTjMqurshiCwwS176iOT8P__icTKvCF-VYYzzbNtz-euiMNLqpgG9kx5AmeHMBRO9cp82o9cTkawShwCDyGEW8kYmg

Мы хотим выразить благодарность за помощь при подготовке и за возможность участия в такой поездке Президентскому физико-математическому лицею №239,  ИПМаш РАН, ПАО “Газпром нефть”, НПО “СтарЛайн” и Благотворительному фонду “Финист”.

Наша команда старается активно развивать RoboCup Soccer SSL в России, но пока что мы остаемся единственной действующей командой в данном виде соревнований внутри страны. Из-за наложенных ограничений, нас не допускают до участия в основных этапах RoboCup, и наличие команд в дружественных странах (Бразилия, Индия, Китай, Турция, Иран и др.) делает возможным проведение независимых международных соревнований с участием отечественных команд. На данный момент со стороны нашей команды исходит инициатива сделать соревнования подобного уровня. В частности, начата разработка регламента соревнований вводного уровня "Дивизион С", которые требуют меньшее финансирование и имеют более низкий порог вхождения и позволят участвовать командам-любителям. 

ksiqi1WpRajRYow2MaF7roYdJoApVRjsa1VNpWtPh2b7pEEkaIB_PgGxxxtPjnA0msSAK_j_YvufHWCPxVFvBhG5Ew83YUEn4hZVjGTU1r4OnCaztN3NKQbeoBlXQf9UM5gyQwFF6RdkjpUbiZ6q31s