Как у нас почти получилось сделать автономного робота для «Битвы Роботов»

Базово наш робот не отличался от остальных. Главное отличие состояло в начинке. Роботы на «Битве» — это большие и тяжёлые машинки на радиоуправлении, которых полностью контролирует оператор-человек. Мы собирались сделать автономный «аппарат», который не будет управляться человеком и сможет победить в соревновании.

И у нас практически получилось.

Привет, меня зовут Дмитрий, я аспирант 4-го курса факультета «Систем управления и робототехники» Университета ИТМО. Я расскажу историю, как мы в прошлом году с командой выступили на «Битве роботов» с автономным роботом. Так как подобные роботы на ринге «Битвы» не появлялись, и мы, в свою очередь, ещё не занимались постройкой 160-килограммовых «самодвижущихся» боевых аппаратов, которые управляют «сами собой», опыт был весьма занимательный.

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

Команда университета ИТМО вместе с Альфа-Банком решила внести свой вклад в популяризацию и развитие автономных мобильных роботов и совместить приятное с полезным. Мы выступили (нескромно) с первым в истории «Битвы роботов» автономным роботом. Вот так он выглядит на тизере.

Встречайте, Робот A.L.F.A
Встречайте, Робот A.L. F.A

На общем фото с командой.

7400ffb5526c80eecf1c457ca7264fd8.png

А здесь на ринге.

Источник: https://vk.com/champbitvarobotov.
Источник: https://vk.com/champbitvarobotov.

Почему я так упираю на слово «автономный»? Для этого нужно сказать пару слов про «Битву». Это мероприятие, куда съезжаются команды, конструирующие разных роботов, выпускают их на ринг и управляют, чтобы нанести максимальный урон противнику.

d0175a47b194cc06095b47d818614c72.png

Понятие «автономность» не ново, но на «Битве роботов» эта концепция ещё не появлялась. Это связано с некоторыми особенностями площадки «Битвы» — открытое пространство, ловушки, кривой пол, о которых я расскажу далее. А самое главное — роботы-противники, управляемые людьми, поведение которых невозможно предсказать.

Во всех лигах «Битвы Роботов» в нашей весовой категории (о ней дальше) есть только один пример робота, считающегося автономным. Но его «автономность» со звёздочкой, потому что у робота есть оператор, а у оператора — пульт, посредством которого выбирается модель поведения робота.

Поэтому считаем, что на данном этапе научно-технического прогресса на март 2025 года на «Битве роботов» все роботы управляются оператором.

Наш робот не управлялся человеком с пульта.

Загвоздка в том, что задача разработки автономного мобильного робота — комплексная. Над этой задачей много лет трудятся большие компании, команды инженеров, проектировщиков, разработчиков. Нам же всё было необходимо «вот уже сейчас» синтезировать, имплементировать и тестировать систему управления. Расскажу, как это происходило.

Разработка робота: система управления

Организаторы разрешили нам утяжелить робота на 50 кг сверх верхней границы разрешённых значений, и наш робот A.L. F.A имел массу в 158 кг (и был самым тяжёлым). В остальном робот не сильно отличался от остальных моделей (не считая того, что он был самым красивым):

  • внутренний каркас из алюминия,  

  • корпус из стали,  

  • на корпусе установлены пластиковые элементы,  

  • двигатели стандартные для шоу,  

  • тяжелый вертикальный спиннер (самый тяжелый на шоу),

  • роликонесущие колеса, позволяющие двигаться в любом направлении.

Главное отличие — в начинке. Как я уже писал, роботы на «Битве» — это скорее большие и тяжёлые машинки на радиоуправлении. Их полностью контролирует оператор.

Автономному аппарату, ввиду отсутствия оператора, нужна самостоятельная система управления. Она состоит из нескольких блоков: система технического зрения, алгоритм планирования траектории, алгоритм слежения за траекторией.

  • Первый блок — видеозрение. От него на вход системы идут данные о текущем местоположении и ориентации A.L. F.A и местоположении робота-противника.

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

  • После сгенерированная траектория поступает на вход третьего блока. Третий блок представляет собой регулятор, задача которого — подавать напряжение на моторы, чтобы робот двигался согласно заданной траектории.

Для тестирования алгоритмов первым делом сделали уменьшенную версию робота, сохраняющую его кинематику. С помощью аддитивных технологий, то есть 3D-печати, лазерного станка и усилий студентов, у нас появился макет A.L. F.A. Колёса напечатали из PLA-пластика, ролики — из TPU. Для управления на борту находились микроконтроллер Arduino UNO и одноплатный компьютер Raspberry Pi.

Макет A.L.F.A.
Макет A.L. F.A.

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

Макет мобильного робота (противник).
Макет мобильного робота (противник).

Очувствление

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

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

Поскольку регламент шоу позволяет использовать внешние камеры, то решили, что это оптимальный для нас сценарий, и нам достаточно видеть картинку в 2D (решили расположить камеры так, чтобы они давали нам вид сверху на арену). Для арены 12×12 метров выбрали 6 камер с углом обзора 110 градусов, повесили их вертикально и сшили полученные изображения в одно целое. Так у нас появилась карта пространства, на которую робот «смотрит» сверху вниз.

Пример работы алгоритма для макета робота.
Пример работы алгоритма для макета робота.

Теперь перед нами стоял вопрос: как именно мы будем следить за нашим роботом и роботом противника? Для выполнения задачи слежения за объектом должны были выполняться следующие условия.

  • высокая скорость работы,

  • низкая задержка,

  • низкая ресурсозатратность,

  • стабильность работы. 

На основании этих вводных было решено остановиться не на алгоритме поиска, а на алгоритме слежения. 

Он существенно быстрее, так как следит за изменением положения объекта лишь в границах старого положения и не производит поиск по всему кадру. 

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

Как правило, в качестве маски используется обратная гистограмма по цветовому каналу HSV. Только необходимо отделить фон от объекта внутри бокса слежения на первой итерации. Для этой задачи применялся метод водораздела с разметками в центре для объекта и по углам для фона.

Минус обратной гистограммы — плохое слежение за объектами, близкими по тону с фоном. А в случае с цветовым каналом — и за бесцветными объектами. Для таких задач можно применить вычитание фона: фотографируем ринг до помещения в него объектов и следим именно за разницей между ним и текущим кадром. 

Также, чтобы боксы слежения не пересекались между разными целями, в масках слежения положение других объектов слежения приравнивается к нулю.

Для ориентации робота было решено использовать зелëные детали на нём. 

Источник: https://vk.com/champbitvarobotov. 
Источник: https://vk.com/champbitvarobotov. 

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

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

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

Система технического зрения на выходе даёт нам положение и ориентацию робота A.L. F.A и положение противника, а также дополнительный «флаг», сообщающий нашей системе, что мы столкнулись с противником.

Пример слежения за роботом противника на самой арене.
Пример слежения за роботом противника на самой арене.

На видео заметны мёртвые зоны. К сожалению, из-за сложности сшивания изображений и ограничений по времени использования общей арены (все на «Битве роботов» хотят протестировать свои машины) мы не успели исправить эту ошибку. Необходимо установить камеры, выставить необходимый свет (а он влияет на камеры), а ещё настроить регуляторы. На это в идеале нужно часов 20.

Однако алгоритм отрабатывал поставленную ему задачу. 

Планировщик

Техническое зрение позволяет роботу ориентироваться и понимать, где он находится, а также следить за положением противника. Дальше нам нужно доехать до противника и нанести урон. Значит, нам необходимо, чтобы робот мог построить маршрут до цели.

От системы технического зрения мы получаем 5 значений в каждый момент времени: положение по Х, по Y, ориентация нашего робота и положение противника. Поскольку наш робот обладает всенаправленной подвижностью (голономностью), его положение динамично изменяется, и он может двигаться в любом направлении.

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

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

По этому определению поезд — голономный, а автомобиль — нет. Причина в том, что у поезда одна управляемая степень свободы — скорость, и одна степень свободы движения — положение на рельсах. А у автомобиля две управляемые степени свободы — скорость и угол поворота, но три степени свободы движения: ось x, ось y и ориентация.

В книге «Omni-directional robots» есть картинка, которая иллюстрирует моё утверждение. Справа — типичная форма/конструкция автомобиля. Слева — типичная конструкция всенаправленного омни робота, которая и позволяет быть голономными.

d76d996d65a026a318b8145ab28e8ce8.png

Роботы на Битве используют различные кинематические схемы. Мы выбрали голономную, потому что она позволяет двигаться вперёд/назад (одна управляемая степень свободы), по кругу, поворачивать на месте и двигаться боком (плюс ещё две). И степени свободы движения у такого робота тоже три.

Как следствие,   в качестве алгоритма планирования траектории был выбран DWA. 

DWA — это популярный алгоритм планирования движения, который используется в робототехнике и других областях для планирования безопасных и оптимальных траекторий для перемещения роботов или других объектов.

Основная идея DWA в том, чтобы найти безопасную и оптимальную траекторию для перемещения робота:

  • избегая столкновений с препятствиями (например, мимо подушки, которая подкидывает робота или шнеков, что бьют по корпусу);

  • и учитывая ограничения скорости и ускорения. 

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

  1. Алгоритм оценивает текущую ситуацию, включая положение робота, скорость, ускорение и окружающую среду.

  2. Определяет окно возможностей, которое представляет собой набор допустимых скоростей и направлений, которые робот может принять в текущий момент.

  3. Оценивает различные траектории, которые робот может пройти в пределах окна возможностей. Каждая траектория оценивается по нескольким критериям: безопасность, оптимальность, скорость достижения цели.

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

  5. Робот выполняет выбранное действие, которое может включать изменение скорости, направления или положения.

Всё, теперь наш робот умеет следить.

Слежение за объектом
Слежение за объектом

Регулятор

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

Поэтому только спиннер, только максимум урона. 

В правилах «Битвы» есть ограничение: тело вращения не может весить больше 30 кг. Мы и взяли 30 кг — наш робот его выдержит.  

Выбрали форму — по зубцу с каждой стороны. Вращение — против часовой стрелки, чтобы ещё и подбрасывать противника. Дальше под него выбираем шкивы, моторы, передачу (зубчатую), рассчитали передачу, ремни и светодиоды (глянца) — по мелочи, и аккумулятор. Желательно для орудия иметь отдельный аккумулятор: если по орудию сильно прилетит и аккумулятор выйдет из строя, то робот хотя бы сможет двигаться.

Крутим спиннер
Крутим спиннер

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

Этот метод был впервые предложен Ханном в 1998 году и с тех пор широко используется в различных областях, включая робототехнику, авиацию, автомобильную промышленность и другие.

Основные компоненты ADRC:

  1. Наблюдатель: наблюдатель оценивает состояние системы и вычисляет компенсационное воздействие.

  2. Компенсатор: компенсатор вычисляет компенсационное воздействие на основе оценки наблюдателя.

  3. Контроллер: использует компенсационное воздействие для корректировки управления системой.

Преимущества ADRC:

  • Компенсация возмущений: ADRC может компенсировать внешние возмущения и внутренние неопределенности, что позволяет системе работать стабильно и точно.

  • Низкая чувствительность к параметрам: ADRC не требует точных знаний параметров системы, что делает его более устойчивым к изменениям параметров.

  • Простота реализации: ADRC относительно прост в реализации и может быть использован в различных системах.

Регулятор был синтезирован в прикладной программе MATLAB Simulink. Общая система управления выглядит следующим образом:

Схема управления
Схема управления

После создания всех алгоритмов, отвечающих за автономность, они были связаны между собой и интегрированы в робота. 

Движение к объекту
Движение к объекту

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

У нас голономный робот с тремя каналами управления, все они зависят друг от друга. Таким образом, мы настраивали регулятор с девятью коэффициентами и четырьмя матрицами. И настроить эти коэффициенты в реальном мире — нетривиальная задача. Тем более, когда у нас такая сложная система. Ещё более нетривиальная она, когда времени совсем мало, о чём писал ранее.

Собираем всё вместе

Все вычисления мы вынесли на внешние устройства.

  • На первом ноутбуке сначала обрабатывается картинка технического зрения.

  • Передаются на второй, где обрабатываются в MATLAB/Simulink. 

  • Далее передаются на пульт управления. 

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

Итоги и благодарности

Робот выступал против опытной команды, которая участвовала в соревнованиях десятки раз (если не больше). Лучшего противника и не найти. И хотя наш робот не вывез драку, в целом, это было круто.

Хотя задача робота довольно проста — врезаться во врага с максимальной скоростью, избегая препятствий, — мы хотели сделать что-то действительно уникальное для международного чемпионата «Битва роботов». Исполнение этой простой задачи демонстрирует возможности современных автономных систем. Мы стремились показать, что инновации в робототехнике открыты не только для исследовательских лабораторий, но и могут привнести свежие идеи и технологии в сферу развлечений.

ИТМО предоставил проекту базу для разработки, включая опытные кадры и технические мощности, а на заводе университета создавались основные механические узлы. Наш партнёр, Альфа-Банк, не только стал спонсором, но и взял на себя ответственность за визуальную составляющую робота, создал рекламный ролик, обеспечил логистику и многое другое. Объединив усилия, мы разработали первого в истории шоу полностью автономного боевого робота, который может самостоятельно находить противника, планировать путь и следить за его траекторией.

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

Развитие систем робототехники и повсеместная роботизация — одно из ключевых направлений России и мира. Разработка автономных роботов, развитие ИИ — приоритетная задача. Мы считаем, что этим нужно заниматься.

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

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

Команда университета ИТМО: Алексей Ледюков, Федор Петриков, Андрей Яременко, Иван Смирнов и я, Дмитрий Захаров. Спасибо за внимание и смотрите следующий сезон «Битвы Роботов»:)

ef980439d470be0f2863e5ef915ddc9e.png

© Habrahabr.ru