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

Основные термины

Мастер (Master), Мастер-Нода

Мастер выполняет роль сервера имен для возможности подключения между собой различных нод. Команда roscore запускает сервер мастера, и после этого к нему могут подключиться и зарегистрироваться ноды ROS. Связь между нодами (обмен сообщениями), невозможна без запущенного мастера.

При запуске ROS roscore, мастер будет запущен по адресу URI, установленным в переменной окружения ROS_MASTER_URI. По умолчанию адрес использует IP-адрес локального ПК и номер порта 11311

Нода (Node)

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

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

Пакет (Package)

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

Работа с пакетами ROS очень похожа на работу с пакетами linux. Пакет ROS можно поставить готовым из репозитория пакетов, так и скачить и скомпилировать из исходных кодов.

Поиск доступных пакетов ROS возможен на странице http://wiki.ros.org/

Сообщение (Message)

Ноды отправляют и принимают данные между собой, согласно заданного формата. Эти данные называют Сообщения, а описание Типом Сообщения.

Сообщения могут быть как простых типов (integer, float, boolean), так и могут состоять из сложных структур, содержащих вложенные сообщения и массивы сообщений).

Например для сообщения с координатами обьекта (XYZ) есть существующий тип сообщения geometry_msgs/Point.msg который описывается:

float64 x
float64 y
float64 z

Топик (Topic), модель Издатель и Подписчик

Топик (Topic), это один из видов обмена сообщениями, который буквально похож на тему в разговоре. Нода издателя (publisher) сначала регистрирует свою тему на мастере, а затем начинает публикацию сообщений в эту тему (топик). Узлы подписчиков, которые хотят получать информацию из этой темы (топика) при помощи мастера получают адрес этой темы и далее получают сообщения из этого топика.

Издатель (Publisher)

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

Подписчик (Subscriber)

Подписчиком (Subscriber) называется процесс, который получает сообщения из определенного топика (Topic). Подписчик (Subscriber) регистрируется на Мастере (Master), указывая какие топики Подписчик (Subscriber) хочет получать. После этого Издатель (Publisher) начинает отправлять сообщения подписчику. Связь с топиком для подписчика является асинхронной (издатель публикует сообщения в не зависимости от статуса подписчиков).

Этот тип взаимодействия удобно применять для работы с датчиками, которые непрерывно передают полученные значения. Более подробно данная модель описана в главе Работа с Топиками.

Сервис (Service), Сервис Клиент и Сервис Сервер

Сервис это модель коммуникации, работающая по принципу синхроной двунаправленной связи между клиентом (Service Client), который запрашивает данные и сервером (Service Server), который отвечает на запросы.

Сервис Сервер (Service Server)

«Сервис Сервер» - это узел коммуникации (процесс), который получает запрос, обрабатывает данные и передает обратно ответ. Запрос и ответ представляют собой обычное Сообщение (Message).

Сервис Клиент (Service Client)

Сервис Клиент - это узел коммуникации (процесс), который создает запрос на Сервис Сервере (Service Server) и получает ответ после выполнения запроса.

Данная модель взаимодействия применяется для удаленного выполнения различных операций в рамках разных нод. Более подробно данная модель описана в главе Работа с Сервисом.

Действие (Action), Action Goal, Action Result, Action Feedback

Действие представляет собой модель связи, используемую для асинхронной двунаправленной связи. Действие используется там, где требуется больше времени для ответа после получения запроса, и промежуточные ответы требуются до тех пор, пока результат не будет достигнут. Структура протокола Действия (Action) похожа на структуру Сервис (Service), однако в протокол внесены дополнительные параметры: задача (Action Goal), обратная связь (Action Feedback), результат (Action Result). Более подробно данная модель описана в главе Работа с Событиями.

results matching ""

    No results matching ""