![](https://habrastorage.org/webt/hi/8b/pj/hi8bpjlmf2i8_muij5ejzfblat4.gif)
18 апреля пройдет очередной онлайн ROS Meetup, и мы продолжаем публиковать записи докладов с прошлого ROS Meetup, который прошел 30 ноября 2019 года в Москве и собрал больше 200 ROS-любителей, поделившимися своим опытом и знаниями.
В этой публикации вы можете познакомиться с подборкой выступлений про симулятор робототехники
Gazebo, поведение роботов и датасеты.
Итак, поехали!
Использование симулятора Gazebo в робототехнике
Автор доклада: Александр Богословский
Слайды презентации
Порой нет возможности повзаимодействовать с роботом «вживую», в таком случае приходится обращаться к симуляторам. А если речь идет о ROS, то в первую очередь к симулятору Gazebo, так как он изначально был создан для использования с ROS. На Gazebo проводят многие робототехнические соревнования, в том числе в таких именитых организациях как DARPA иNASA. Этот симулятор поможет реализовать почти любого твёрдотельного робота, такого как гуманоид, колесный робот, коптер, подводный робот и так далее.
Роботы для Gazebo создаются в формате URDF (Unified Robotic Description Format) — XML-разметке, которая описывает звенья робота и узлы связи между ними. Так как это универсальный формат, необходимый в том числе и для позиционирования реальных роботов на ROS (например пакеты robot_state_publisher и joint_state_publisher), он не был изначально предназначен для описания всего робота. Поэтому при импорте модели в Gazebo URDF-формат конвертируется в SDF (Simulation Description Format), который уже может содержать всю необходимую информацию для моделирования, в том числе материалы поверхностей, цвет, датчики и так далее. Мир симуляции, в который мы далее помещаем робота, по сути имеет тот же формат SDF. А расширения названий таких файлов для описания мира имеют вид ".world".
Своей многофункциональностью Gazebo обязан в том числе широкому спектру плагинов, созданных сообществом, а также полностью открытым кодом. Когда задачи станут слишком специфичны, для их выполнения Вы сможете написать собственный плагин на базе предоставляемого API. В написании поможет большое сообщество пользователей, а также огромное количество учебных статей по Gazebo на официальном сайте симулятора. Но далеко не всегда необходимо писать свой плагин — базовый функционал симулятора весьма обширен.
В данном докладе проводится обзор функционала и особенностей Gazebo, а также его сильных и слабыых сторон, что может помочь принять решение об использовании данного симулятора в своем проекте.
Behavior Tree как способ задания сценария действий робота
Автор доклада: Евгений Сафронов
Слайды презентации
Во многих случаях поведение робота должно быть не только сложным и разнообразным, но и как можно более (желательно на 100%) предсказуемым. Статистические модели поведения, основанные на методах ML, позволяют имитировать очень сложные действия, но гарантировать безопасность и прозрачность поведения робота всё ещё тяжело. В таких случаях инженеры прибегают к помощи различных машин состояний. Альтернатива им — деревья поведений (Behavior Trees / BT), пришедшие в робототехнику из игровой индустрии.
В этом видео мы начнём с основ Behavior Tree — рассмотрим типы узлов и листьев, правила обхода (выполнения) дерева, разберём два главных стиля создания BT — императивный и реактивный, и убедимся, что в чистом виде они редко применяются. Обсудим, чем могут являться BT с точки зрения машинного обучения и как методы ML можно интегрировать в созданную руками структуру дерева, увидим, что шаблоны узлов, как и классы в ООП помогают инкапсулировать поведение, увеличить читаемость ̶к̶о̶д̶а̶ логики дерева и создавать отдельные библиотеки. Напоследок — краткий обзор готовых фреймворков для работы с ROS. Тут нет явного лидера, у всех разные подходы ко многим ключевым аспектам, начиная с семантики базовых и заканчивая взаимодействием с ROS. Однако, уже сейчас можно скачивать и пробовать подключить BT к своему роботу/симулятору!
Что у тебя в сумке? Как работать с bag-файлами и не утонуть в данных
Автор доклада: Олег Шипитько
Слайды презентации
Ни для кого не секрет, что bag-файлы — основной формат логирования данных в ROS. Большинство разработчиков, которые хотя бы раз сталкивались с ROS, знают что такое bag-файлы и как с ними работать. Однако, далеко не все задумывались над такими вопросами как:
- как устроен bag-файл внутри?
- как уменьшить его объём?
- что ещё можно делать с bag-файлов помимо записи и воспроизведения?
- что делать, если изменился тип одного из сообщений, а выкидывать все ранее записанные файлы не хочется?
Ответам на эти и другие вопросы посвящено наше выступление.
В своём выступлении мы постарались ответить на каждый из них.
Доклад разбит на несколько частей. В начале рассматривается формат хранения bag-файлов и их внутреннее устройство.
Во второй части доклада рассматриваются особенности записи файлов. Освещаются неочевидные и редко используемые аргументы команды rosbag record. Рассматриваются особенности записи в bag-файл изображений. Описываются алгоритмы, применяющиеся для сжатия bag-файлов.
В части, посвящённой простоте и инспекции записанных файлов, рассматриваются команды, позволяющие просмотреть содержимое bag-файла, а также узнать, какие топики в нём содержатся. Особое внимание уделяется инструменту инспекции файлов rqt_bag и его основным возможностям.
Данные, записанные в bag-файлы могут использоваться для тестирования различных алгоритмов классификации. При этом возникает задача разметки данных — сопоставления набору данных некого тэга, определяющего правильный для данного набора данных класс. В качестве примера инструмента для решения такой задачи в докладе рассматривается пакет rosbag-sliding-windows-annotator, который позволяет использовать данные из визуальных топиков как основу для аннотации числовых данных. При этом необходимые классы для разметки подгружаются из пользовательского json-файла, что делает пакет конфигурируемым под множество задач разметки.
При хранении большого количества bag-файлов возникает задача быстрого поиска файла, отвечающего некоторым критериям. Для мобильного робота такими критериями могут быть, например, определённая погода, маршрут движения, наличие/отсутствия в файле определённого события (например, преграждения пути робота человеком) и т.д. Для быстрого поиска файла, отвечающего необходимому набору критериев, файлы можно аннотировать — сопоставлять каждому файлу некий сжатый объём информации, содержащий необходимые для быстрого поиска данные. В докладе рассматривается подход к аннотации bag-файлов, использующийся в компании “Визиллект Сервис”, — сопоставление каждому bag-файлу изображения, позволяющего быстро просматривать и сравнивать информацию о многих файлах.
Последняя часть доклада посвящена обзору стандартных инструментов миграции bag-файлов в ROS. Миграция необходима, если одно или несколько сообщений в файле изменилось, однако хочется сохранить и использовать ранее записанные bag-файлы. В таком случае можно перезаписать старые файлы, дополнив старое сообщение новыми полями (или убрав существующие). Для упрощения этого процесса ROS предоставляет готовые инструменты, которые кратко освещены в докладе.
Заключение
Совсем скоро, 18 апреля, состоится очередной ROS MeetUp, только теперь мы проведём его в формате онлайн-вебинара.Приглашаем всех коллег присутствовать в качестве слушателей и спикеров. Участие бесплатное, количество мест ограничено, регистрироваться тут.
А также мы организуем конкурс open-source пакетов на ROS!
И напоминаем, что найти единомышленников по разработке на ROS в России, узнать последние ROS-новости можно в нашем телеграм-канале ROS Russia community.
Если вам интересна разработка роботов, робототехнических модулей или программных компонентов, вы хотите показать свои разработки или просто пообщаться с единомышленниками,— добро пожаловать на наш следующий ROS Meetup который пройдет 18 апреля в онлайн формате!