View on GitHub

Робот Вомбат

Документация к робототехнической платформе Вомбат

Содержание

Введение

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

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

С описанием аппаратной части можно познакомиться в разделе “Базовая платформа” документации, а для размещения датчиков и иного оборудования предназначен отсек для оборудования.

Робот Вомбат может поставляться с различными комплектами оборудования. Комплекты для картографирования содержат набор датчиков, достаточный для автономной навигации внутри помещений. На примере данных комплектов будет рассмотрен процесс установки Robot Operating System (ROS), конфигурирования и запуска пакетов navigation в составе ROS. В результате робот будет способен перемещаться из текущей позиции в точку, заданную оператором на карте, объезжая при этом видимые препятствия.

Что такое ROS?

ROS или Robot Operating System — набор программных библиотек и утилит, обеспечивающих взаимодействие между аппаратной и программной частями робота, а также между составляющими программной части. Иными словами, ROS является middleware — ПО промежуточного уровня, обеспечивающим инфраструктуру для общения между собой компонентов робота: контроллеров двигателей, бортового компьютерв и датчиков.

На сайте wiki.ros.org содержится подробная документация и обучающие примеры по работе с ROS.

Почему ROS?

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

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

Чтобы обеспечить совместимость программ, созданных различными разработчиками, в ROS были составлены соглашения, определяющие используемые понятия. Например, соглашение о системах координат REP105 определяет именование и предназначение используемых систем координат, а также их взаимосвязь. Такая стандартизация позволяет существенным образом облегчить интеграцию новых алгоритмов в уже существующие системы, поскольку разработка изначально велась на основе одних и тех же понятий и стандартов.

Другим достоинством ROS является наличие общедоступной базы программных пакетов ROS Index, содержащей пакеты для коммуникации с элементами информационно-измерительной системы робота, восприятия окружающей обстановки, принятия решений (например, планирования траектории) и т.п. Эти пакеты могут быть использованы в качестве строительных блоков при разработке собственной системы, что позволяет сосредоточиться на разработке только тех алгоритмов, которые представляют интерес. У ROS есть своя вики, содержащая подробную информацию об установке и настройке ROS, входящих в ее состав пакетах и утилитах, их параметрах, использовании и т.д.

Базовые понятия ROS

Описание робота

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

При помощи трансформаций между координатными системами (tf) определяется также и положение робота в пространстве (на карте, в мире).

Модель робота

Для визуализации робота в утилите rviz и его симуляции в gazebo используется формат URDF. Файл в формате urdf описывает конструкцию робота, геометрические размеры отдельных его частей, их массы, моменты инерции и т.п. При помощи встроенных в ROS механизов формируются все соответствующие трансформации tf; для подвижных соединенией также возможно программное изменение их позиции.

Пакет и ноды

В ROS программные компоненты распространяются в виде пакетов (package). Пакет может содержать в себе ноды (node), библиотеки (library), описание форматов сообщений (messages) и служб (services), наборы данных (datasets), параметры запуска (launch files).

Нода представляет собой некоторую программу, предназначенную для решения одной задачи. Для компиляции ноды из ее исходного кода используется система сборки catkin. В настоящий момент ROS поддерживает два основных языка программирования: C++ и Python. Для запуска нод используются, как правило, утилиты rosrun и roslaunch.

Сообщения и службы представляют собой типы данных, используемые для обмена данными между запущенными нодами. Сообщения представляют собой способ асинхронной негарантированной связи: нода-отправитель не знает ни количества, ни идентификаторов получателей сообщения. Службы, наоборот, являются синхронными и, кроме того, помимо полей запроса могут содержать еще и поля ответа. При использовании механизма служб нода-отправитель ожидает результата своего запроса: был ли он доставлен, что было отвечено получателем. Только получив тот или иной ответ, она продолжает свою работу. В ROS существует значительное количество встроенных сообщений и служб, объединенных в пакеты. Например, sensor_msgs, используемые для передачи данных от различных датчиков. В случае, если стандартных типов недостаточно, пользователь может создать свои типы, описывающие необходимые ему форматы данных.