Опыт участия в RobotChallenge 2014

в 5:11, , рубрики: робототехника, соревнования роботов, метки:

В конце марта этого года я со своей командой из Брянского ГТУ принял участие в международных соревнованиях по спортивной робототехнике RobotChallenge 2014 в Вене.

Опыт участия в RobotChallenge 2014

И в этой статье, я хотел бы рассказать о нашем опыте участия и раскрыть детали нашего подхода к решению задачи. Формат соревнований очень похож на олимпиаду, т.к. есть целый набор разных дисциплин и участник может выбрать ту, которая ему наиболее интересна. Сами дисциплины относительно просты с т.зр. задания, и как правило, задача состоит в том, что необходимо выполнить задание быстрее других. Мы участвовали в дисциплине AirRace, идея которой в том, что робот должен в полностью автономном режиме облетать 2 столба по траектории в виде “восьмерки”. Побеждает тот робот, который за 10 минут налетает в непрерывном полете больше всех “восьмерок”.

До этого соревнования у меня был только опыт участия в соревновании летающих роботов компании “КРОК”, которые проходили в августе 2013 года в г. Москва. На тех соревнованиях нас постигла неудача в виде дождя на летной площадке. При том, что мы на тестовых полетах выполняли задание быстрее организаторов, во время реального полета визуальная одометрия робота “ослепла” на лужах и на черном мокром асфальте и мы не смогли даже пролететь лабиринт. Ниже наша тестовая попытка на соревнованиях КРОКа в 2013 году.

В Вене с погодными условиями все было значительно лучше (+20 и ясное небо). Конкурс проходил внутри помещения, поэтому погодных капризов мы уже не боялись.

В силу ограниченности бюджета и времени было принято решение использовать на соревнованиях в Вене того же самого робота и тот же самой подход, что и на соревнованиях КРОКа.

Мы основывались на связке AR.Drone + наземная станция в виде ноутбука. Такой выбор (еще в период подготовки к КРОКу) был обусловлен тем, что AR.Drone по-сути из коробки уже умеет летать и существуют SDK, с помощью которого мы могли управлять им по Wi-Fi. Правда сейчас уже имея опыт работы с ним, я склоняюсь к тому, что необходимо собирать другой квадрокоптер и стремиться реализовать все вычисления на борту. По-сути к AR.Drone у меня 3 претензии. Это Wi-Fi, проблематичность аппаратного расширения и закрытый исходный код. Собственно аппаратную часть нашего AR.Drone нам удалось расширить путем подключения к нему дополнительных ультразвуковых дальномеров через плату Arduino Nano, подключенную через бортовой USB. Схематично это выглядит следующим образом.

Опыт участия в RobotChallenge 2014

Эти дальномеры мы использовали только на конкурсе КРОКа для ориентации в лабиринте, а на соревнованиях в Вене основной хак AR.Drone заключался в том, что мы повернули переднюю камеру вниз и ориентировались именно по ней.

На ноутбуке все наше ПО основывалось на фреймфорке ROS. Преимуществ его использования достаточно много, на мой взгляд основное — возможность тестировать код на виртуальной модели в среде физической симуляции Gazebo. По-сути переход от виртуальной модели к реальной происходит без каких-либо переделок кода (только несколько настроек параметров регуляторов и системы компьютерного зрения). Возможность моделирования позволяет не только создать рабочий код без реального дрона, но и позволяет уже в поле проверять изменения кода до того, как он будет использован на реальном квадрокоптере.

Что касается дисциплины Air Race, то правила там достаточно демократичные. Они разрешают использовать внутри поля любые дополнительные навигационные метки (и пассивные, и активные). Единственое ограничение состоит в том, что робот должен облетать столбы по “восьмерке”, причем она чисто условная и не должен касаться стен, столбов и пола. Ряд команд активно пользовались этим. Например, команда из Польши использовала дополнительного робота, который едет внизу по пунктирной линии, а квадрокоптер летит за этим роботом. В прошлом году они заняли первое место, а в этом их подвела надежность и они не смогли пролететь ни одного круга. Некоторые команды устанавливали дополнительные визуальные маркеры для ориентирования, а команда из Канады, вообще установила внутрь 2 кинекта, но у них тоже ничего не получилось.

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

  1. Ищем на изображении черные прямоугольники
  2. Делим их на группы в соответствии с их углом наклона к вертикали.
  3. Относим к первой группе те прямоугольники, которые наиболее вертикальны.
  4. Проводим через центры прямоугольников первой группы прямую.
  5. Формируем команду управления таким образом, чтобы полученная прямая занимала вертикальное положение.

Пример работы алгоритма можно увидеть на следующем видео.

Во время тестовых запусков на “домашнем” поле мы наматывали 15-16 кругов за 10 минут, это было немного больше, чем результат победителя в 2013 году. Поэтому на соревнования мы ехали не с пустыми руками. Сама поездка до Вены была достаточно интересной, т.к. добирались мы на автомобиле (1800 км). Это оказалось дешевле чем на самолете, и не было страха, что робота сломают при транспортировке в самолете.

На нашу дисциплину было заявлено 16 команд, причем 5 команд было российских. Помимо нашей команды, остальные российские команды были из Санкт-Петербурского физико-математического лицея №239. Всего в соревнованиях принимало участие 547 команд из 46 стран, поэтому мы встали пораньше и направились к месту соревнования к открытию регистрации. В принципе, как оказалось, особой нужды в этом не было. Т.к. регистрация проходила очень быстро, и очередь хоть и была, но стоять долго не пришлось. Сами соревнования в нашей дисциплине должны были начаться в 12-30, а до этого времени должно было пройти что-то вроде квалификации (каждый робот должен был показать, что он способен пролететь хотя бы круг). Все мы наслышаны о немецкой (австрийской) пунктуальности, но здесь это правило не работало. Большинство команд после регистрации начали тестировать своих роботов, судья в принципе никак не участвовал в этом процессе и когда должна была начаться именно квалификация было не совсем понятно. Мы не собирались что-то до-настраивать на роботе, поэтому в очередь на тестирование и не лезли. Но в один момент получилось так, что поле свободно, я подошел к судье и спросил можем ли мы пройти квалификацию. Он ответил утвердительно и мы запустили робота. Он достаточно неплохо отлетал 2 круга, и тут начались проблемы с Wi-Fi. Робот стал ударяться об столб, я стал нажимать кнопку посадки. И вот здесь нас ждала неудача. Я, пытаясь нажать кнопку посадки, то ли от нервов, то ли от невнимательности нажал кнопку “экстренной посадки” и робот рухнул с 2-х метров на мраморный пол. Подняв его с пола, я сразу понял, что у него сломана крестовина и летать он теперь вряд ли сможет. Что мы чувствовали тогда думаю объяснять не нужно. Неожиданно ко мне подошел парень из чешской команды, поинтересовался что случилось, посоветовал перемотать дрона скотчем и попытаться выступить. Т.к. других вариантов не было, мы так и сделали. Я слабо верил, что он сможет полететь, но он полетел. Перестраховавшись, я не стал ставить тяжелый аккумулятор расширенной емкости, а поставил родной и это было моей второй ошибкой. Т.к. плоскости винтов из-за сломанной крестовины не были параллельны полу, двигателям приходилось работать практически на пределе мощности и аккумулятор сел уже на 5 круге. В итоге с 5-ю кругами мы заняли 4 место.

Конечно, с учетом поломки мы были очень довольны этим результатам. А полученный опыт, надеюсь, поможет нам на будущих соревнованиях.

Автор: alexbuyval

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js