Eurobot-2012


В 2012 году мы вновь приняли участие в соревнованиях Евробот, которые проходили во Франции. Это решение носило довольно спонтанный характер, хотя внутри у каждого желание поучаствовать в соревнованиях есть всегда. Однако в  данном случае необходимы условия: финансовые и организационные. С первыми в этом году серьезные проблемы. Однако, несмотря на все трудности, мы улучшили прошлогодний результат и поднялись в международном рейтинге на 8 позиций. У нас не было командных проектов на период март-апрель и команда решила заполнить возникший вакуум в работе, приняв участие в Евробот-2012 и, думаю, это принесло пользу, какую именно – читаем дальше. 

   Постановка задачи

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

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

- фигуры. Имели очень неудобные формы. Диски с небольшим выступом и усеченные призмы - то, под что пришлось разработать манипуляторы. Карта была приклеена на подложку и снять ее было непросто. Снимали карту менее половины всех команд (и мы тоже).

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

Техническая часть

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

 

  1. Электроника.  Число электронных плат в роботе сократилось до 5 штук. Число контроллеров – до 7 штук. Главным новшеством являлось то, что в робот была установлена универсальная плата uniRobot, у которой огромное число функций ( на ней можно полностью построить простой мобильный робот). Своим функционалом она заменила сразу 3 платы прошлого года.

Применение контроллера ATMega2560 со 100 выводами позволило повесить на эту плату следующие функции:

- управление 8 сервомашинками

- снятие данных с 12 аналоговых датчиков, фильтрация результатов

- устройство старта

- снятие данных с датчиков maxBotix с выхода PWM

- modBus

Код для платы был написан на С++. Вообще тут использовалось от силы 30% процентов возможностей этой платы. Но в том то и прелесть такого подхода – можно заткнуть любую «дырку» в функционале нового робота. Стоит отметить, что в новом роботе стояли платы, имеющие 2 релиза. Поэтому это первая система, где удалось обойтись без проводков – исправлений ошибок трассировки. Код на С++ придал этой плате гибкость – можно быстро изменять число подключаемых объектов к плате, ибо физическому объекту (например аналоговый датчик Sharp) соответствует программный класс и виртуальный объект соответственно. Эта парадигма очень понятна.

Маяки остались с прошлого года. Не дорабатывались. Однако были придуманы новые методы их работы, которые придадут им необходимые характеристики. Но это сложный и длительный проект. Чтобы это сделать в этом году, нужно было отдать столько же времени и усилий как в прошлом. Мы же выделили на проект только 2 месяца и с трудом успели.

Механика Что касается механической части робота, то она была спроектирована в программе 3D моделирования SolidWorks и там же проверена на интерференции деталей.

В этом году сроки поджимали и основной упор был сделан на изготовление деталей лазерной резкой.

В состав робота входят

  • Планшетный компьютер Asus R2H
  • Хаб USB на 10 портов
  • Переходник USBTODynamixel
  • 3 манипулятора на базе цифровых сервоприводов Dynamixel AX-12 (по ддва сервопривода в каждом манипуляторе)
  • 2 платы EncoderM
  • 2 энкодера Autonics E20
  • Джестик Logitech
  • 2 переходника USB-RS485
  • 2 платы управления ДПТ AWD10-12-1
  • 2 двигателя IG-32GM
  • Переходник RS232-USB
  • Маяк ultraBeacon
  • Плата для периферийных устройств Unirobot
  • 6 аналоговых сервоприводов MG-995
  • Устройство старта
  • 12 инфракрасных дальномеров

В данном роботе была предпринята попытка разработать модульный блок приводов для последующих проектов. в каждый блок такого привода входит двигатель и энкодер освобожденный от момента. Энкодерное колясо имеет подвеску для постоянного следования по поверхности без отрыва от неё связанных с неровностями и стыками.

Некоторые детали были изготовлены в лаборатории ГПС Denford на станках с ЧПУ (Кафедра РК-9 МГТУ им. Н.Э. Баумана) с использованием SprutCAM для подготовки управляющих программ.

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

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

 

Программное обеспечение В этом году система управления роботом базируется на базе наших предыдущих разработок. В рамках проектов Eurobot 2011 и Интерактивный мобильный робот нами были разработана библиотека для работы с мануляторами dynamixel, библиотека для управления движением мобильного робота на основе методов ТАУ и библиотека, реализующая каркасные классы для разработки систем управления механическими системами. В данном проекте эти библиотеки былы задействованы и доработаны. В этом году мы опробовали несколько новых технологий: система планирования траектории на основе алгоритма A* и система планирования действий на основе того же A*. Поскольку от мяков мы в этом гооду отказались, мы реализовали детектор противника на основе информации с дальномеров.

В общих чертах система управления роботом состоит из трёх пакетов: GUI, HAL, CS. Пакет GUI содержит классы для пользовательского интерфейса. В HAL (Hardware Abstraction Level) лежат классы для работы с железом, и классы для работы с эмулятором в режиме отладки вместо с железа. CS - непосредственно система управления. Ниже приведена UML диаграмма пакетов для системы управления.

В качестве эмулятора мы использовали player/stage. На эмуляторе мы отлаживали избегание столкновновений с противником, планирование траетории, планирование и отработку действий.

Немного подробнее о детекторе противника. Робот оснащен двенадцатью дальномерами, расположенными следующим образом:

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

Система управления считывала показания с датчиков и оценивала расстояние. Возможны варианты:

1)      Расстояние максимально – дальномер никого не зафиксировал

2)      Расстояние меньше максимального – дальномер обнаружил объект

Для тех дальномеров, расстояние с которых меньше максимального, происходит перевод показаний с дальномеров в координаты точек на игровом поле (пересчет показаний в координаты происходит с использованием матриц перехода в двухмерном пространстве). После получения координат точек на игровом поле происходит отсеивание тех точек, которые попадают за пределы стола или на жестко расположенные игровые объекты (бланкирование). Оставшиеся точки пропускаются через трехпроходный алгоритм, который учитывая координаты полученных точек и предполагаемые габариты робота противника (форма роботы противника аппроксимируется окружностью заданного диаметра), выдает координаты центра противника. Данный алгоритм выдает хорошие результаты по обнаружения противника. Далее приводятся рисунки с результатами работы (Зеленый круг – наш робот, красный круг - вражеский, отрезки – показаний с дальномеров):

Достоинства алгоритма:

  • Простота реализации как программной, так и электронной
  • Высокая скорость работы
  • Определяет положения нескольких противников (что полезно с учетом нововведений регламента 2012 года)

Недостатки:

  • Невысокая точность
  • Неинвариантность относительно формы и размеров робота противника


Для избегания сталкновений с противником мы использовали планирование траетории на основе A*. На картинке ниже нарисован один из спланированных путей в отладочном режиме.