3 ноября состоялся IX открытый дистанционный командный турнир по робототехнике AR2T2, где приняла участие команда из Березницкой гимназии.
— Да как же мне этого робота заставить «кегли» правильно двигать?
3 ноября состоялся IX открытый дистанционный командный турнир по робототехнике AR2T2 (Arkhangelsk interRegional Robotics Team Tournament), который проводится в рамках реализации государственной программы Архангельской области «Развитие образования и науки Архангельской области».
В нём принимают участие команды со всей нашей необъятной страны. Не стала исключением и наша гимназия. Волов Иван, учащийся 8 класса, достойно показал себя и защитил честь учебного заведения. Команда от Березницкой гимназии Grand Theft Robot участвует в подобных соревнованиях уже третий раз, и можно с уверенностью сказать, что с каждым разом уверенность, как и достигнутый результат, растут.
Перед турниром каждая команда должна провести определённую подготовку. Заключается она в том, что нужно собрать робота для соревнований по предоставляемой организаторами схеме, подготовить поле, где будут передвигаться роботы и другой необходимый инвентарь. Больше всего нервов пришлось потратить на поле.
Печатается оно на большом 200*120 см баннере. Поле было заказано в Вельске, типографии «Вельти», которая уже не первый раз помогает с этой задачей. Но после того, как поле было сделано, возникла проблема с его доставкой в гимназию. Здесь нам пришла на помощь Григорюк Татьяна Александровна, которая откликнулась на просьбу и сумела привезти баннер к началу соревнований. Выражаем ей огромную благодарность за отзывчивость и оперативность!
Ещё одной особенностью нынешних соревнований стал робот. Вернее, два робота! Именно так, в предыдущие годы робот был довольно сложным, но единственным. В этом же году конструкция несколько упростилась, зато число увеличилось. Это породило у нас множество вопросов. Как вы наверное понимаете, условие задачи никто заранее не объявляет. Однако, имея на руках поле, самих роботов, «кегли» в количестве пяти штук и ворота вполне можно предположить, что именно ожидает в день турнира.
К слову, правильно определить условия задачи у нашей команды не получилось. Мы, конечно, понимали, что придётся сдвигать кегли, расставленные в квадратах, но вот для чего нужны именно два робота и как они должны взаимодействовать на поле – оставалось для нас полной загадкой.
Настал день турнира. Начинался он с 10 часов утра и продолжался до 14 часов. Целых четыре часа на одну задачу! Это кажется очень долгим, если судить со стороны, да ещё и не представляя особенностей программирования роботов. На самом же деле времени в обрез.
Открыв условие задачи, мы на несколько минут впали в некоторый ступор. Само условие было, как и всегда, связано с жизнью. Звучит оно следующим образом:
Сегодня мы с вами находимся на складе, в котором хранятся товары, продающиеся в интернет-магазине. После покупки товара сотрудники магазина должны обеспечить доставку товара до потребителя. Для этого роботы устанавливают купленные товары на специальные подставки (далее – подставки) рядом с лентой транспортёра, который отправляет товар в логистическую компанию. Таких транспортёров на складе два: один – по левую сторону, второй – по правую сторону ангара (имеются в виду бо́льшие стороны поля). Также есть подставка, на которую помещаются спецтовары высокой ценности (для ускоренной спецдоставки). Эти товары сразу грузятся непосредственно в спецтранспорт.
К сожалению, перемещение товара с подставки на ленту осуществляют люди, так как этот участок склада ещё не автоматизирован. Но люди не так надёжны, как роботы. Поэтому мы предлагаем вам закончить автоматизацию склада товаров, роботизировав процесс перемещения на ленты транспортёров и в спецтранспорт товаров, подготовленных к передаче в логистическую компанию, установленных на подставки. Прежде чем идти в реальный складской ангар и производить рационализацию, необходимо отработать поведение роботов, решающих новую задачу на модели.
Для моделирования решения поставленной задачи будут использоваться два одинаковых робота: один обеспечивает доставку на ленту первого транспортёра, второй – на ленту второго. Подставка в зоне 5 для спецдоставки может быть обслужена любым из роботов. В нашей модели считается, что лента транспортёра находится вне зоны подставки.
Итак, задача выглядит не слишком сложно. Если бы не факт того, что программа должна быть ОДИНАКОВОЙ для обоих роботов! Да и ещё и разделение обязанностей должно присутствовать. То есть нельзя сделать так, чтобы один робот всё убрал, а второй халтурил. Каждый должен делать строго свою часть работы, не помогая, но и не мешая «коллеге». От этого прямо голова пошла кругом!
Немного подуспокоившись, взялись за решение задачи с самого начала. То есть определить, каким образом заставить роботов ехать не одновременно. Потому как они тогда точно столкнутся друг с другом и задание будет провалено полностью! Изучив условие, поняли, что расстояние, на котором они находятся от ворот, разное. Значит, можно использовать это, чтобы настроить задержку перед началом выполнения работы.
Звучит не так сложно? Однако у нас ушло минут двадцать на то, чтобы правильно настроить этот момент. Представляете? Двадцать минут из четырёх часов только на то, чтобы научиться выезжать с исходной точки и не врезаться друг в друга!
Дальше, правда, дело пошло лучше. Для простоты наша команда взялась программировать только одного робота, чтобы потом перенести команды (внеся, конечно, нужные исправления) для второго. Движение по линии, определение перекрёстков – эти задачи можно назвать практически стандартными, поэтому оставалось только правильно прописать нужные параметры. Дело двигалось споро, но, как часто бывает в жизни, очередное осложнение возникло совершенно неожиданно. Оказалось, что наш робот должен чётко вставать «головой» на середину подставки, чтобы увидеть «кеглю»! Стоит ему чуть-чуть недовернуть или повернуть немного дальше – всё, для него никакой «кегли» не существует! И он уедет, так и не сдвинув её с позиции.
Новые настройки, подбор параметров – препятствие позади. Но время, время неумолимо течёт, знаменуя собой приближение финиша. Добавлять блоки, подгонять, настраивать, проверять робота на поле раз за разом. Четыре часа пролетели незаметно, а программу с кодом отправили едва ли не в самую последнюю минуту.
Проверка результатов на данном турнире тоже организована весьма интересно. На сайте турнира имеется специальная вкладка, называющаяся «Полигон». Через час после окончания времени на выполнение задачи включается онлайн-трансляция, где организаторы начинают запускать роботов с программами команд-участниц. Запуск происходит на двух разных полях, расположенных в разных городах! Это позволяет снизить риск случайной ошибки. Судьи смотрят за прохождением роботами маршрута, выполнение задания, выставляя баллы. В соответствии с которыми затем формируется список победителей. То есть сама программа не проверяется. Значение имеет только результат! Прямо как в реальной жизни.
Саму трансляцию наша команда не смотрела, общий результат узнали только через несколько дней, когда уже был полностью сформирован список победителей. В общем среди всех команд списке мы заняли 30 место (из 84 команд), а в своей возрастной группе 5–8 классов – 17 (из 49). Вполне достойный результат!
По результатам соревнований команды получают соответствующие сертификаты. Наше участие в этом году прошло удачно, поэтому будем с нетерпением ждать следующего года, чтобы улучшить свой результат! А если у вас появилось желание проверить свои силы в управлении собственноручно созданными роботами – милости просим. Кружок робототехники проходит еженедельно, по пятницам, с 16 часов. Приходите, мы ждём всех желающих!