- Регистрация
- 23.09.18
- Сообщения
- 12.347
- Реакции
- 176
- Репутация
- 0
30 ноября 2019 прошёл 2-й ROS Russian MeetUp, организатор — Лаборатория робототехники Сбербанка, собравший больше 200 ROS-разработчиков. В этом материале мы сделали подборки части интересных выступлений с этого MeetUp.
Совсем скоро, 18 апреля, состоится очередной ROS MeetUp, ещё более масштабный и интересный! Коронавирус не позволяет нам встретиться очно, но ничто не мешает нам собраться на онлайн-конференции! Детали по трансляции будут разосланы зарегистрировашимся участникам митапа. Приглашаем всех коллег поприсутстовать в качестве слушателей, спикеров и участников конкурса. Участие бесплатное, регистрироваться
You must be registered for see links
. И напоминаем, что найти единомышленников по разработке на ROS в России, узнать последние ROS-новости можно в нашем телеграм-канале
You must be registered for see links
. Полный анонс с программой и часть докладов прошлого митапа мы уже
You must be registered for see links
, а сегодня поделимся еще тремя интереснейшими докладами.Итак, поехали!
“Локализация робота по ARUCO маркерам”
Автор доклада: Алексей Будяков
→
You must be registered for see links
Этот доклад детально рассматривает одну из важных составляющих подсистемы навигации — определение местоположения по маркерам.
Во введении освещены основные принципы и понятия методов компьютерного зрения, позволяющих осуществлять навигацию мобильного робота по фидуциарным маркерам: специальным изображениям, предназначенными для распознавания в качестве реперных точек. Они обычно имеют высокую контрастность сами по себе и на любом возможном фоне, оптимизированы для распознавания при сканировании под углом и при плохом освещении. В качестве маркеров можно применять примитивные логотипы (например, «шашечки» на бортах летательных аппаратов), готовые системы кодирования данных (DataMatrix, QR), однако в робототехнике применяются специально разработанные системы маркеров, чаще всего в виде чёрно-белых изображений. Одной из них является ArUco, которая позволяет создавать пиксельные маркеры с несколькими значениями гранулярности (от 4*4 до 7*7) и, в отличие от QR-кода, распознавание которого занимает несколько десятков миллисекунд, позволяет с минимальными вычислительными затратами находить и детектировать маркер. В докладе разобран путь от обнаружения маркера на изображении до вычисления позиции робота относительно маркера, рассмотрены преимущества использования модуля распознавания ArUco маркеров aruco_marker, входящую в популярную библиотеку методов компьютерного зрения OpenCV. Мы постарались выстроить доклад так, чтобы он давал общее понимание процесса навигации по маркерам без углубления в математику, плюс к тому из него можно извлечь ссылки на методы популярных библиотек, реализующих тот или иной метод, используемый в навигации.
“Обзор планировщика пути Timed Elastic Band”
Автор доклада: Иван Корнев
→
You must be registered for see links
Целью доклада было не только рассказать о принципе работы локального планировщика TimedElasticBand, но и сравнить его с другим популярным ROS планировщиком — DynamicWindowApproach, поскольку он входит в состав навигационного стека MoveBase, и установлен как планировщик по умолчанию в стеке навигации для turtlebot3. Именно с этим планировщиком новички, как правило, знакомятся в первую очередь.
Содержание доклада:
- Краткий обзор навигационного стека MoveBase, объясняющий принцип его работы. Будет полезен тем, кто ранее не имел дел с этим пакетом, но хочет в нём разобраться или понять, какую роль в нём выполняет локальный планировщик.
- Обзор локального планировщика Dynamic Window Approach (далее — DWA). Рассказано об алгоритме DWA, лежащем в основе этого планировщика. Произведен анализ его преимуществ и недостатков. Стоит отметить, что в выступлении было сказано об отсутствии возможности объезжать динамические препятствия, что является правдой лишь наполовину. На текущий момент написаны
You must be registered for see linksYou must be registered for see links, в которых описано расширение этого алгоритма для учета динамических препятствий. Однако, реализация локального планировщика DWA на ROS не включает в себя эти расширения алгоритма, поэтому динамические препятствия считаются статичными в каждый момент времени. Именно из-за отсутствия этих расширений в реализации среди недостатков было указана невозможность учета динамики препятствий.
- Обзор локального планировщика TimedElasticBand (далее — TEB). Рассказано о принципе работы этого метода. Был сделан акцент на двух отличительных особенностях этого локального планировщика:
— возможность учёта динамических препятствий, информация о которых (их форма и скорости) должна публиковаться в отдельный топик
— подключение одного из нескольких плагинов, объединяющих точки на карте (карта представляет собой матрицу точек, каждой из которых присваивается значение от 0 до 255, свидетельствующее о безопасности нахождения робота в этой точке, известно в ROS как Costmap) со значением 255 (значение в 255 свидетельствует о наличии препятствия в этой точке) в полигоны. Таким образом, объединяя соседствующие занятые точки, разработчики хотели снизить вычислительную нагрузку при расчёте локальной траектории. Пока не понятно, удалось ли им это сделать эффективно, поскольку операция объединения точек в полигоны также требует вычислительных мощностей и времени. Произведён анализ преимуществ и недостатков этого локального планировщика. Одним из самых серьёзных недостатков TEB является его прожорливость в плане вычислительных ресурсов, особенно это заметно при попытке одновременного использования всех возможностей планировщика. - Сравнительный анализ этих планировщиков с подведением результатов в таблице. Названия основных статей по алгоритмам DWA и TEB не приводятся, поскольку их можно найти на главной странице этих планировщиков в ROS Wiki.
“Eurobot: планирование пути робота”
Авторы выступления: Георгий Щукин, Станислав Киселев
→
You must be registered for see links
Вице-чемпионы России, команда SETup, поддерживаемая Лабораторией робототехники Сбербанка, рассказывают о своей собственной навигационной системе. Процесс разработки описан в
You must be registered for see links
. “Роботы ездят по ровному полю и большинство препятствий заранее известно, однако, коварные противники могут попытаться украсть ресурсы (да и мы не прочь иногда полакомиться парой десятков дополнительных баллов), при этом мы хотим проехать к желаемой точке как можно быстрее, не задев препятствий. С внешней камеры на поле мы получаем данные о положении противника и знаем, где он сейчас находится. Однако, мало знать его положение — нужно уметь использовать эту информацию.
Сегодня мы попробуем проехать из точки А в точку Б, не проехав при этом по хвосту котика, заснувшего на полу. В частности объясним, как мы строим маршрут и управляем скоростью робота, а также расскажем, как запустить всё на своем компьютере”.
Попытка обойтись малой кровью
При решении такой задачи можно взять уже готовый материал, написанный профессионалами, тогда мучений и изобретения очередного «велосипеда» не будет. Мы использовали омниколесную платформу, поэтому хоть и была попытка использовать готовый local planer от ROS, но по ряду причин сочли это неперспективным.
Из плюсов стандартного стека можно выделить наличие документации и возможность найти информацию на форумах. Подробнее можно почитать
You must be registered for see links
.Важно упомянуть, что ROS пакеты чаще всего тестируются на двухколесных платформах. Мы оптимизировали сборку системы для омниколёс (такой робот называется голономным: в любой момент времени он может двинуться в любом направлении) за счёт увеличения доступного угла поворота при движении до 360 градусов. Нам показалось, что это грязный хак, но другие варианты не были универсальными. Стандартный planner оказался слишком тяжеловесным и имел много параметров, которые нам бы никогда не понадобились
Global planner
Первое, что мы решили доработать из навигационных пакетов, — сделали свой __global planner__ на основе алгоритма theta*. Если говорить кратко, то это модифицированный
You must be registered for see links
. Так же, как и обычно, известная карта разбивается растровым способом на сетку из элементов (нод); планировщик постоянно выполняет поиск родительской node, к которой можно доехать напрямую, т.е. на пути к которой отсутствуют препятствия. Это позволяет строить удобные пути и сглаживать их. Далее они передаются в local planner.Сравнение A* и theta*
Local planner
Локальный планировщик работает по методу градиентного спуска в потенциальном поле. В качестве входной информации используется путь из global planner. Кроме того, в local planner существуют внутренние сервисы для выбора режима построения пути. Доступны два режима работы: режим смещения точек по градиенту, использующий многократный проход по карте, а также режим смещения, при котором непосредственно вычисляется приращение по двум координатам, и точка перемещается на край безопасной зоны.
В итоге мы приняли решение использовать градиентный спуск в потенциальном поле на основе пути из global planner 'а. Получился легковесный и относительно простой алгоритм, который полностью устроил нас по качеству получаемого пути, времени работы и количеству потребляемой оперативной памяти (в районе 100-150 мб), что в несколько раз меньше, чем получалось на первых итерациях разработки со стандартными пакетами.
Пример смещения пути local planner'ом
Trajectory regulator
Последний, но не менее важный элемент навигационного стека — это trajectory regulator. Он отвечает за преобразование пути из local planner в траекторию и выдаёт значения мгновенной скорости для текущего шага. Первой итерацией на пути к новому «траекторнику» был алгоритм замены вектора, к которому движется робот. Он назначался как сумма векторов к трём последующим нодам с разными коэффициентами. Второй итерацией было написание фильтра Minimum Jerk через построение полинома 5-ой степени, где координаты x и y зависят от времени доезда до каждой из точек.
На рисунке представлен график зависимости одной из координат от времени, а также скорость по данной координате
Если вам интересна разработка роботов, робототехнических модулей или программных компонентов, вы хотите показать свои разработки или просто пообщаться с единомышленниками,— добро пожаловать на наш следующий
You must be registered for see links
!Авторы статьи: Альберт Ефимов, Алексей Бурков, Александр Богословский, Олег Уржумцев