Мы любим роботов. Мы студенты технических ВУЗов, конструкторы, электронщики, программисты, и мы все любим создавать роботов. Два года назад на базе лаборатории робототехники Сбербанка появилась наша команда 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
Наш Телеграм: t.me/SetUpSber
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
Наш Телеграм: t.me/SetUpSber
Комментарии (7)
hallucination
05.12.2019 20:05+1Я так понимаю, на поле одновременно и ваши роботы и роботы соперников? Как соперников отслеживали?
Eppy Автор
05.12.2019 20:31Да, в раунде, как правило, по 2 робота от команды. На поле есть возвышение (на картинке хорошо видно эту мачту), куда можно поставить камеру, которая при должном угле обзора будет видеть всё. Также каждая команда имеет право поставить "маяк" в определенное место своего робота и робота противника. В нашем случае это кубик обклееный арукомаркерами, детектируя которые мы можем понять положение всех роботов.
Tsa_2019
06.12.2019 19:12+1Спасибо за статью, интересный опыт. А такой вопрос: высока ли себестоимость получившегося решения? И какова была бы себестоимость, если, как вы писали, сделали его проще?
dvserg
Интересные Далеки у Вас получились.
А можно поинтересоваться, что за железо и ОС использовались?Не вижу эту информацию.Нашел.