Что общего между револьвером, шайбами и автономным роботом
Мы любим роботов. Мы студенты технических ВУЗов, конструкторы, электронщики, программисты, и мы все любим создавать роботов. Два года назад на базе лаборатории робототехники Сбербанка появилась наша команда setUP и тогда же впервые приняла участие в соревнованиях по созданию мобильных автономных роботов Eurobot Open для молодых любителей робототехники. На данный момент команда отыграла 2 сезона, дважды стала вице-чемпионом, выходила на международный этап. Мы не спали сутками, программировали, паяли, собирали и разбирали наших роботов, находили серьезные проблемы за час до соревнований, а затем всё-таки их запускали. А еще получили незабываемый опыт и наработали ряд интересных решений, о чем и хотим рассказать в серии статей (со множеством гифок, осторожно, трафик).
Eurobot Open — это международные соревнования автономных роботов. Задания, поле «битвы» и игровые элементы меняются каждый год, но суть остаётся одна — команда должна создать двух автономных роботов, которые будут соревноваться с роботами соперника на небольшом поле за ограниченные ресурсы в течение 100 секунд. За этим коротким предложением скрывается огромное количество задач, которые команда должна решить, потому что роботы должны быть быстрыми, манёвренными, уметь самостоятельно выполнять задания и не сталкиваться с противником. А еще каждый год надо разрабатывать новых роботов. И всё же опыт и наработки прошлых лет могут дать большое преимущество. Из года в год нужны системы локализации, предсказания движения противников и избежания столкновений, планировщики маршрута, гибкие системы управления поведением, собственная электроника и механика. Да, для много из этого есть стандартные алгоритмы и библиотеки, однако, большую часть всё равно приходится сильно модифицировать или писать с нуля из-за специфичности функционала и требованиям к ресурсоемкости.
Наша команда на российском финале в Москве.
Классное видео про наше участие в 2019 году:
Основной игровой темой в 2019 году была «Атомная энергия». Но это не значит, что от команд требовалось сделать робота на ядерном двигателе. Просто разным игровым заданиям и элементам были даны тематические названия. Единственным игровым объектом манипулирования были хоккейные шайбы — электроны. Они имеют разный вес, разный цвет, а одна, «золотая», другого размера. Необходимо собрать максимум шайб, находящихся в разных местах поля, в разных положениях, на разной высоте, и затем рассортировать их по зонам на поле в зависимости от того, какой это химический элемент.
Так выглядело игровое поле в 2019 году.
Кодовыми именами наших роботов в этом году были Чип и Дейл. Почему? Ответ думаю буден понятен из фотографии:
Давайте пробежимся по основным техническим решениям в наших роботах в прошедшем сезоне. В этом году мы максимально постарались всё унифицировать и у нас было два робота близнеца. Структурная схема наших роботов на картинке ниже.
Верхний уровень был представлен одноплатным проверенным Odroid xu4 c ubuntu 16.04 и ROS Kinetic на борту. На нём крутятся все «тяжелые» задачи.
На нижнем уровне трудится STM32F407VGTX-DISC1, воткнутая в шилд собственной разработки, который позволяет удобно подключать десяток моторов, серв и гирлянду сенсоров. Их, кстати, всегда набирается внушительное количество. В каждом нашем роботе содержатся лидар, 7 dc/bldc моторов, 9 сервоприводов и порядка 25 различных сенсоров (цвета, веса, расстояния, тока). И всё это, плюс ещё 6 объёмных механизмов, было размещено в компактных роботах с периметром 850 и высотой 350 мм. На самой STM’ке крутится FreeRTOS, которая обслуживает задачи, требующие исполнения в реальном времени, обработку всех сенсоров и конечные автоматы механизмов.
Вид на омниколеса робота.
Интересной особенностью является использование в качестве привода омниколесной платформы, которая позволяет нам ездить в любую сторону и любой стороной, не выполняя ненужные повороты, что кардинально повышает манёвренность робота.
Так, например, на следующем видео с прошедшего во Франции матча видно, как несмотря на то, что нас заблокировали (из-за грубейшего нарушения правил соперником), робот ювелирно выбрался из ловушки.
Однако из-за омни точность колесной одометрии очень сильно хромает: колёса не идеально круглые, ролики люфтят и имеют малое пятно контакта. Для решения этой проблемы можно периодически биться в стену, сбрасывая ошибку, или применять внешние системы корректировки. Относительно часто для этого ставят лидары на роботов. Пару лет назад появилась еще одно решение: на поле добавили место, на которое можно поставить камеру. В прошлом году мы ездили только по внешней камере с детекцией aruco маркеров, нанесенных на робота, но в этом мы одновременно прорабатывали локализацию с помощью лидара на роботе и внешней камеры (по локализации и навигации скоро будет еще одна большая интересная статья). Лидар мы не успели оттестировать, поэтому катались по камере и использовали лидар как подставку под арукомаркеры. Плюсы системы — мы знаем положение всех роботов на поле. Из минусов — большая чувствительность к внешним засветам и точности калибровки, что, к сожалению, нас не единожды подводило. Но в целом, комплексирование одометрии и арукодетектора позволяет нам позиционироваться с точностью в несколько миллиметров на поле 2×3 метра.
Разработанная нами плата дальномеров.
Правилами запрещены столкновения с другими роботами (за это могут и дисквалифицировать), поэтому роботу важно вовремя замечать препятствия на совём пути. Обычно для контроля ближней зоны ставят обычные пороговые ИК дальномеры или Sharp GP2Y0A21YK, которые крайне чувствительны к поверхности, например, могут сработать на полированный алюминий с полуметра и при этом не видеть карбон в упор. Так же часто используют УЗ дальномеры, но они чувствительны к углу отражающей поверхности и боятся взаимных помех. В последнее время быстро набирают популярность ToF дальномеры, например, VL53l0x или VL53l1x. Единожды попробовав эти датчики, тяжело от них отказаться — у них слабая зависимость от материала препятствия, высокая точность, компактность, низкая цена. Однако, в прошлом году мы попытались использовать VL53l0x и всплыл ряд нюансов. Что может пойти так, когда ты сажаешь полтора десятка дальномеров на i2c, среди сгустка моторов и серв? Вдобавок, у датчиков нельзя задать постоянный адрес, ну и вишенка в их фантомном зависании. Поэтому в этом году мы сделали плату перехода на rs485, которая сильно упростила использование дальномеров. На фотографиях робота синие огоньки — это они.
Тут мы всячески препятствуем роботу ехать прямо между двумя точками, и он упорно оказывается умнее нас:
Использование внешней системы локализации, полноценного планера, а также офигенного collision avoidance ближней зоны позволяет вытворять вот такие вещи на скорости 1 м\с. В ближайших статьях мы постараемся рассказать максимум про самые интересные вещи из наших решений (и открыть наработки), но сегодня хотим рассказать про особенность механики в этом году.
Проектирование механики для Евробота отличается своей спецификой. Во-первых, ввиду того, что это соревнования, всё должно работать максимально быстро и на сто процентов надёжно. Во-вторых, задача поставлена так, что чем больше очков ты хочешь зарабатывать, тем сложнее механику нужно проектировать. А чем сложнее механика, тем больше вероятность её отказа, который, по закону Мёрфи, произойдёт в самый неподходящий момент.
Задачи могут показаться на первый взгляд простыми, но это совсем не так: задача манипулирования объектами (взять, переориентировать, поставить) до сих пор остаётся крайне трудно решаемой. В отличие от промышленных манипуляторов, которые располагаются, как правило, статично, у которых отлажены все перемещения по координатам, и которые работают в идеальных условиях, здесь всё круче: поставил робота на поле, дёрнул ключ и робот действует, пока заезд не закончится. Возможность какой-то корректировки координат и дополнительной отладки практически отсутствует. Нужно учитывать возможные серьёзные ошибки локализации или неточности в изготовлении поля (например, робот думает, что он стоит перед шайбой, которую планирует взять, а на самом деле он смещён по х на 15 мм от требуемой координаты), поэтому поставить манипулятор с аккуратным захватом, перемещающимся от точки к точке не получится: в реальных условиях соревнований у вас возникнут серьезные проблемы.
Расположение механизмов в роботе.
Нам удалось сконструировать два одинаковых робота, каждый из которых решал весь спектр возможных в рамках соревнований задач. В роботе разместился конвейер револьверного типа на 6 шайб, и в любой момент времени мы могли любую из них выгрузить. На поле шайбы находятся в двух положениях: лежащие на полу и стоящие на специальной полке. Для каждого варианта был спроектирован свой механизм сбора. Шайбы с полки собирались с помощью специального лепесткового ролика, который скидывал шайбы на рампу, по рампе шайба съезжала в нижнюю ячейку револьвера, после чего её цвет детектировался, револьвер прокручивался, а робот подъезжал к следующей шайбе.
Несущий каркас робота был изготовлен из листового алюминия и 204 печатных детали, за механизмы отвечало 6 штук Dynamixel AX-12A, один Dynamixel MX-64 и две девятиграмовки, 3 штуки maxonmotor 16mm и один maxonmotor 22mm. Ходовая была из трех maxonmotor 22mm и 60 мм омниколес. Всё это приправлено 106 подшипниками.
Почему dynamixel’и, а не стандартные сервы? У них есть много защит, цифровое управление и много настроек, удобное последовательное подключение и в целом хорошего качества. Так же наш опыт показывает, что дешевые сервы за сезон меняются в круг несколько раз, а дорогие стоят почти столько же.
Так как большинство шайб на полу находились не в конкретных координатах, а были расположены случайно в пределах определенной зоны, использовать манипуляторы было затруднительно, поэтому был разработан специальный механизм поглощения шайб.
Выгрузка шайб осуществляется в две зоны: на весы, куда шайбы могут падать в любом положении, и в зону ускорителя, где шайбы размещаются в вертикальном положении. Вот тут робот идеально разгружает всё в ускоритель на домашнем поле (что было в 90% случаев):
Однако, на решающих заездах это, к сожалению, отрабатывало через раз.
При выгрузке в ускоритель есть возможность скидывать шайбы как сразу на наклонную поверхность, так и сначала скидывать на горизонтальную поверхность, а потом сталкивать на наклонную. Второй вариант позволяет скинуть на две шайбы больше и набрать больше очков. Поэтому этот вариант и был выбран, что, как выяснилось впоследствии, было критической ошибкой. Подъехать к стенке, выкинуть шайбу, сбросить её роликом и повторить это ещё N раз оказалось крайне трудно. Шайбы могут встать криво, не разогнаться, врезаться в стенку и, что самое важное, заблокировать проход последующих шайб.
Как показал опыт соревнований и, в частности, конструктивные решения других команд, чем проще решения по механике, тем лучше. Текущее решение требовало согласованной и отлаженной работы большого количества сложных механизмов, отказ любого из которых приводил к сбою в работе всей системы, а это, как известно из теории надёжности, не особо круто. Также механика требовала регулярной подстройки и мелкого ремонта, что останавливало процесс отладки софта на роботе. Куда лучше сделать робота с одной присоской на однозвенном рычаге, который складывает шайбы в стопочку, но отрабатывает в ста процентах случаев так, как задумано. С другой стороны, участие в соревнованиях можно рассматривать не просто как соревнования по набиранию очков, а как хороший способ для реализации наиболее интересных и крутых инженерных решений.
В целом, несмотря на не очень успешное выступление во Франции, мы довольны результатами. Выучили много уроков: что состояние готовности задачи не бинарный параметр, что скорость разработки зачастую обратно пропорциональна количеству задействованных людей, что простые и специализированные на небольшой задаче механизмы и модули могут быть лучше сложных и, в теории, красивых идей. И готовимся к новому сезону.
Ссылки на видео и более подробный обзор: официальная страница правил Eurobot. Подробный обзор от менторов команды.
Евробот не единственное чем стажеры могут заниматься в Лаборатории робототехники Сбербанка тут есть и другие стажировки, например, по интеллектуальным манипуляциям объектами, мобильным роботам, антропоморфной робототехнике на платформе iCub. А еще можно делать совместные исследования, писать диплом, магистерскую (если это пересекается с тематикой лабы). Высылай резюме и заявку в свободной форме на robotics@sberbank.ru