Чуть больше месяца назад, увидев на канале Russian Hackers в телеграме анонс хакатона, да еще и робототехнического, да еще и проходящего в другой стране, мы с друзьями решили — а почему бы и нет? Мы участвовали в большом количестве хакатонов в России, но никогда не видели, как оно там, за границей. Быстро собравшись и уладив вопрос с визой, мы поехали в Хельсинки собирать роботов из Lego Mindstorms.
В этой статье постараюсь по порядку рассказать, что нам предстояло сделать, стоит ли участвовать, и сколько нам стоило времени и денег съездить. Начнем!
Про задачи
Называлось мероприятие Robot Uprising, для того, чтобы принять в нем участие. нужно было не позднее чем за 2.5 недели зарегистрироваться (кстати, было написано о том, что будет проводиться отбор команд, но видимо ссылки на гитхаб с небольшим количеством проектов достаточно чтобы пройти). Основной задачей было собрать робота из выданного нам набора Lego Mindstorms робота, который бы проходил трассу:
Состояла она из нескольких основных этапов:
- Лабиринт с нарисованной на полу белой линией. Лабиринт был разделен по диагонали и сначала был раздвинут так, что пройти его было нельзя. Нужно было заехать роботом на желтую нажимную платформу, подождать несколько секунд, пока лабиринт сдвинется обратно, и поехать дальше.
- Вторым этапом была платформа с металлическими штырями (которую организаторы поэтично называли iron trees). Между ними нужно было проехать, не застряв и не задевая их.
- На третьем этапе нужно было проехать до конца платформы, нажать на красную кнопку, взять выпавший в результате нажатия кубик и, вернувшись с ним в начало, поставить его на платформу — тогда откроется дверка, в которую можно будет проехать.
- На третьем этапе были три вращающихся диска, расположенных друг за другом и вращающихся в разных направлениях. На этих дисках так же были расположены мелкие препятствия. По этой части трассы надо было просто проехать
- Предпоследний этап, на котором нужно было нажатием на кнопку поднять вверх пандус, заехать по нему, а потом спуститься к заключительной части пути. Этот этап имел разные степени сложности, которые можно было выбирать путем нажатия разноцветных кнопок — чем выше сложность, тем больше баллов дают за прохождение этапа (например, один из вариантов был в том, что пандус поднимался и опускался постоянно).
- Заключительный этап. После прохождения трассы роботу остается занять одно из шести мест для победителей. Но, так как прошедших трассу было намного больше шести, после того как все места оказались заняты, следующим прошедшим трассу нужно было "вызывать на бой" кого-то из уже стоящих на пьедестале и столкнуть его с ринга.
Как уже было упомянуто раньше, на соревновании действовала балльная система. Баллы на финале получали за стиль кода, чистое прохождение трассы, сложность предпоследнего этапа, степень автономности. Например, за полное ее отсутствие (управление с компьютера/пульта/джойстика) ставили 0 баллов, за захардкоженное прохождение трассы — 100, а максимум в 500 баллов можно было получить, используя машинное обучение.
Баллы также можно было заработать еще до финала — для этого нужно было пройти дополнительные квесты. Чтобы получить доступ к задачам, нужно было найти на сайте пару строк, зашифрованных шифром Цезаря, расшифровать, перейти по ссылке, найти ссылку на еще одну страницу, и там уже было размещено достаточно большое количество квестов разной сложности. Например, были такие задания: есть две картинки с шумом, надо было догадаться, что их надо наложить друг на друга и вычесть, чтобы получить слово, которое нужно предоставить как ответ. Кстати, баллы, полученные до финала можно было еще и тратить, но об этом ниже.
А еще, из интересного, организаторы продумали предысторию и сеттинг. По легенде, хакатон проходил на территории большого автоматизированного завода, на котором производят роботов. И, неожиданно, что-то пошло не так:) Помещение, в котором проводился хакатон, одежда организаторов — все было оформлено в стилистике этой истории, и выглядело это очень круто. И задания, которые нужно было выполнить, тоже были вписаны в этот сеттинг.
Про оборудование
Организаторы предоставляли на команду набор Lego Mindstorm, состоящий из контроллера EV3, датчика цвета, сонара, трех движков, гироскопа и проводов, которых хватало, чтобы это подключить. Также в набор входили мелочи, такие как колеса, гусеницы, лего блоки. Набор получился достаточно скудным, неправда ли?
Для того, чтобы нормально решить задачу, такого набора не то чтобы достаточно, поэтому у участников было два варианта — либо привозить с собой дополнительно железо (как оказалось позже, пользоваться можно было любым железом, не только лего — raspberry pi, arduino, разные камеры. Что и делало большинство участников, принося из дома необходимые модули (ну, а у нас с собой не было ровным счетом ничего). Но для тех, кто поступил так же непредусмотрительно как и мы, работал своего рода магазин, в котором можно было обменивать заработанные баллы на модули (правда, заработал он часов за 15 до конца хакатона, что было немного поздновато).
Про нашего робота
Наверное, необходимо сказать, что контроллер EV3, как и весь набор, никто из команды до хакатона даже в руках не держал. Поэтому, в купе с отсутствием нужных деталей и дополнительного железа, результат мы получили вполне ожидаемый.
До поездки, посмотрев инфу, которую прислали нам организаторы, и немного погуглив, мы обнаружили, что в EV3 стоит армовский микроконтроллер (ARM9), и что туда можно поставить Debian. Обрадовавшись тому, что мы сможем писать на плюсах, а не соединять блоки, мы с нетерпением ждали возможности поработать с новым железом.
Но на деле все оказалось не так радужно, как мы рассчитывали. Поняли мы, что все будет не совсем так, как мы ожидали, как только запустили EV3 и попытались его обновить. Потому что он просто завис. Так же стати происходило при попытке поставить gcc. Промучившись с этим достаточно продолжительное время и докопавшись до менторов и участников других команд, мы выяснили несколько важных вещей: единственный вариант работать с плюсами это кросс-компиляция, почти все команды пишут на питоне (пара человек пыталась что-то делать на JavaScript и C#), а еще что кроме нас было несколько русскоговорящих участников.
Приняв тяжелое решение писать на питоне, мы наконец-то приступили к работе. На самом деле даже после этого мы столкнулись с огромным количеством мелких проблем, но не буду перегружать ими эту статью.
В итоге, к концу хакатона мы успели нормально сделать и отладить только удаленное управление. Но, несмотря на это, мы заняли 11 место из 29, что, как мне кажется, очень неплохо для первого раза.
Про то, как организовывали поездку
Теперь расскажу немного о том, что нужно было сделать и сколько денег нам потребовалось на поездку. Первым делом мы написали организаторам и спрашивали о всем, что было нам хоть немного непонятно. После прохождения отбора, по нашей просьбе организаторы отправили нам приглашения для визы, правда они прислали их когда мы уже почти неделю как подали документы. Но, в принципе, визы в Финляндию одни из самых простых, поэтому мы не особо боялись, что нам их не дадут. Нам, кстати, повезло, и через визовый центр оформили их за 5-6 дней. Жилье в Хельсинки дорогое, поэтому мы, как нищие студенты, решили не снимать жилье на время хакатона, а все время писать код или спать там (с этим кстати были проблемы, на сотню человек было всего два гамака и небольшие качели, чего было явно недостаточно). Кстати, на хакатоне было трехразовое питание:)
Добирались мы на самолет из Москвы, но нам повезло, и у Победы была акция, так что вместе с покупкой багажных мест и оплатой выбора мест, билеты стоили достаточно дешево.
И еще пара слов про языковой барьер. У нас в команде из трех человек хорошо на английском говорил только один человек, и двое могли что-то на уровне beginner. И этого было вполне достаточно. В принципе, если ваш уровень английского на уровне 11 класса школы, бояться не надо — в крайнем случае, можно купить местную сим-карту за 6 евро на пять дней и пользоваться гугл переводчиком. Ну и на крайний случай на самом хакатоне мы нашли несколько русскоговорящих финнов, в том числе и среди организаторов.
Примерная смета на три дня поездки:
- Оформление виз через визовый центр ~5000 рублей (зависит от курса евро).
- Билеты на самолет 3000 рублей туда-обратно, за багаж и выбор места еще около 1000 рублей.
- Сим карта, транспортные расходы в Хельсинки ~2000 рублей.
- Одна ночь в отеле, так как самолет был утром ~1500 рублей
Итого: 12500 за человека.
Итоги
В заключение хотелось бы сказать, что это был, наверное, лучший по организации хакатон, в котором я участвовал (а их было достаточно много). Участие в нем принесло мне и моим тиммейтам огромный опыт нахождения в IT среде другой страны, и, несмотря на большое количество технических проблем, мы получили массу положительных впечатлений. Кстати, Robot Uprising проводится ежегодно, так что надеюсь встретить в следующий раз там кого-нибудь из читателей этой статьи.
В публикации используются фотографии из группы хакатона.