Обзор гонок роботов на Robotex 2016 в Таллине
В начале декабря в Таллине завершились робототехнические соревнования Robotex 2016. Семейная команда GoodLancer.com участвовала в гонках роботов и представляет свой отчет.
В начале декабря наша команда гонщиков посетила Robotex в Таллине чтобы участвовать в гонках по линии, также прихватив с собой одного из сильнейших российских лайн-фолловеров робота Ангел из МФТИ.
В этом году на Robotex зарегистрировалось 2660 участников из 20 стран, представляющих 1136 роботов, что сделало Robotex крупнейшим зарегистрированным соревнованием по робоспорту в истории. Предыдущим обладателем рекорда был VEX Worlds в апреле 2016, на который зарегистрировалось 1075 команд участников. Кроме того, осенью было объявлено, что популярный в Европе Robotchallenge будет перенесен в 2017 году из Вены в Пекин, что делает Robotex практически безальтернативным для тех, кто хочет увидеть максимальное количество сильных спортивных роботов.
Основной целью нашей поездки было приобрести опыт крупных соревнований перед Китаем и обменяться информацией с сильнейшими Европейскими командами, понять в чем мы сильны, а что необходимо подтянуть чтобы не отставать от них по уровню. Планировалось кроме роботов из дружественной команды МФТИ взять трех наших роботов, которых мы планировали в конце ноября обкатать на Робоштурме в Ярославле. Итого нами готовились:
- Ясон-2. Это – основной наш проект этого года, гонщик с компьютерным зрением, который хорошо проявил себя на Робоштурме заняв первое место в гонке по линии профи, обыграв ранее бесменного чемпиона в этой дисциплине – Малинового Блина (МФТИ);
- Гермес-3. Наша рабочая лошадка, классический лайн-фолловер, показывающий довольно приличные, но не чемпионские результаты. Сейчас в соревнованиях в России участвует, наверно, десяток несколько более быстрых роботов;
- Тифон. Сумо-бот, соженный нами в процессе первой сборки. Мы пытались выставить его на Робоштурме (один датчик был частично рабочим, двигатели во многих случаях работали) в режиме зомби-робота. Мы надеялись, что даже частично живой он сможет выступать, но увы, Тифон сошел с дистанции еще в России.
Ехали в Таллин мы на автобусе, в дороге работал Wi Fi и телевизор, встроенный в кресло, т.е. вся поездка прошла с довольно приемлемым комфортом. По приезду вечером мы протестировали роботов – они прилично ездили и утром 3 декабря мы отправились в спорткомплекс Таллинского Политехнического Университета себя показать и других посмотреть.
Организация мероприятия была несколько для нас необычной. В Таллине очень многие говорят по-русски, как мне кажется, процентов 50. Но не на соревнованиях. Среди организаторов и судей нам не удалось найти ни одного согласного говорить по-русски и было удивительно говорить по английски на соревнованиях и по-русски – как только выходим из спортивного комплекса. В России на соревнованиях тренировочные зоны занимают больше всего места и зачастую роботов пытаются доделать и наладить прямо в ходе соревнования. В Таллине тренировочная зона была в отдельной пристройке – больших размеров палатке, пристроенной к одному из выходов из спорткомплекса. В ней было довольно холодно, по ощущениям не намного больше ноля, и она была отдалена от зоны соревнований, просто так туда-сюда не побегаешь.
Сами соревнования проводилась на твердой линии из какого-то пластика, а не на баннерной ткани, как в России. Линия в тренировочной зоне сильно отличалась от соревновательной, была более лёгкой, что явилось одной из причин большого количества дисквалификаций.
Приехав на место мы включили роботов и сразу осознали, что «надежность конструкции» и «качество подготовки» должны быть основным в нашей дальнейшей соревновательной работе. Ясона включить не удалось – отломилось и потерялось крепление шины камеры, а запасной камеры мы с собой не взяли. Двигатели Ангела «заморозились» — часто останавливались, либо вращались очень медленно, так что, как у Дюма в «Трех мушкетерах», их осталось только двое, да и то Ангела можно было заставить двигаться только с большим трудом. Кстати, потом оказалось, что в жизни робота это был уже второй такой эпизод. В следующий раз мы будем брать с собой запасные двигатели специально на такой случай.
Первым этапом надо было пройти квалификацию и все участники выстроились в длинной очереди на квалификационный заезд. Проводились все заезды на одной и той же линии, по два робота одновременно.
Эпизод соревнований
Два участника одновременно (не обязательно совсем одновременно, но время на запуск робота лимитировано) запускают своих роботов. Одновременно заезд транслируется на большом экране, более того, все заезды целиком выложены в многочасовых видео на Youtube, которые можно найти поиском по строке «Robotex 2016».
Стоит заметить, что время, отведенное на запуск очень ограниченно. Выходишь на старт, рапортуешь готовность, получаешь свисток – запускаешь робота. Если робот не запускается, то начинается отсчет времени (какой-то очень короткий, похоже 3 минуты). На линии обилие резких поворотов на 90 градусов, петель и очень коварная «пила» — серия разнонаправленных поворотов под прямым углом. Гермес был настроен на более простой тренировочной линии. Давалось в квалификации только две попытки и только подряд, и Гермес сошел дважды. Та же ситуация повторилась с Ангелом. И с 2/3 других участников, включая и сильнейших сейчас в Европе HBFS из Румынии – у них сошло 2 робота из трех заявленных.
Только после прохождения квалификации начались настоящие гонки. Много участников было нашего уровня, много было послабже, но большое количество заметно отличались, в первую очередь сильно облегченными носами, что уменьшает инерцию робота на поворотах, и установленными турбинами, «присасывающими» робота к трассе. Многие роботы имели систему управления с ИК-пульта. Выглядело это весьма отличающимся от нашего Российского опыта – большую часть время участники проводили в соревновательной зоне, а не в тренировочной. Роботы тщательно осматривались перед заездом, тряпочкой со спиртом протирались колеса, занималось место на старте. Потом по команде судьи запускались турбины и роботы шли по трассе с реактивным гулом и со скоростью втрое выше, чем та, к которой мы привыкли для таких сложных трасс.
После прохождения роботами квалификации цена ошибки, как это ни странно, уменьшилась – робот выбивал из соревнования только после двух проигрышей. Каждый раунд между двумя конкретными роботами велся до двух побед. Т.е. если в первом раунде робот проигрывает два заезда, то у него будет возможность проводить заезды с другими соперниками, пока он опять не проиграет два заезда кому-то другому.
Очень хорошо, как обычно, выступали поляки, а чемпионами стали румыны HBFS, у которых два робота не смогли пройти квалификацию, но третий получил золотую медаль.
Когда закончились гонки мы прошлись по залу, поздравили с победой в минисумо итальянцев, удивились проигрышу наших сумоистов (у них проигравшим посчитали робота, выставившего лезвие за пределы поля, но не упавшего с поля, похоже на судейскую ошибку). В этот и следующий день там же удалось увидить несколько необычных соревнований, как, например, сумо среди роботов-пылесосов iRobot или гонки роботов-катеров.
Нам удалось пообщаться со многими участниками гонок по линии, включая победителей, сравнить своих роботов и собрать информацию для подготовки к дальнейшим соревнованиям. 8 января на соревнованиях в МФТИ в подмосковном Долгопрудном мы планируем обкатать новое поколение роботов – с турбинами и управлением по блютуз, а весной на открытом чемпионате Санкт-Петербурга не только продемонстрировать чему мы научились, но и побороться за медали.
Результаты обсуждений роботов в Таллине и наших экспериментов мы в ближайшее время выложим на GoodLancer.com в открытый доступ, чтобы все, кто делает соревновательных роботов в России могли воспользоваться также и европейскими наработками.
Евгений
22.12.2016
Очень интересный опыт.
Для соревнований в которых трасса не известна заранее не планируете внедрения алгоритма самообучения?
Я может сейчас велосипед изобретаю, но самое просто очевидное сделать так.
Первый проезд — настройки «лишь бы» не слетел. В нем записываем данные энкодеров. По ним сам робот «строит трассу» и оптимизирует скоростные режимы (т. е. настроеки ПИД, среднюю скорость) для прохождения каждого поворота по оптимальной траектории и скорости.
После каждого успешного проезда — оптимизацию повторяем.
Вячеслав Нефедов
22.12.2016
Да, немного велосипед. Типичный адаптивный контроль для европейских соревнованиях выглядит таким образом: энкодеры на датчиках Холла для моторов (считаем расстояние по среднему между двух датчиков), плюс IMU (акселерометр + гирокомпас) для определения угла. В первый проход всю трассу делим на прямые и кривые участки по двум параметрам — пробег плюс угол поворота трассы. Два ПИДа и две разные скорости. На этих конкретно соревнованиях я почему-то не обратил внимание на активное использование адаптивного контроля.
У нас основной робот, Ясон, идёт по видео, он видит трассу и видит разгоняться ему или нет, может поэтому мы и не делали в этом году адаптивный контроль. Если у вас есть желание — можем поработать над этими алгоритмами совместно, у нас на GoodLancer.com есть контакты, пишите, буду рад познакомиться ближе.
Вячеслав Нефедов
23.12.2016
Для тех, кто сам делает роботов для гонок я описал технические подробности про самих роботов — http://www.goodlancer.com/archives/7149