4.13 ROS повторение

Поскольку, возможно, прошло уже некоторое время с тех пор, как вы делали учебники для начинающих и tf Tutorials, вот краткий обзор основных концепций ROS. Основная сущность в ROS называется узлом. Узел-это обычно небольшая программа, написанная на Python или C++, которая выполняет какую-то относительно простую задачу или процесс. Узлы могут запускаться и останавливаться независимо друг от друга, и они взаимодействуют, передавая сообщения. Узел может публиковать сообщения по определенным темам или предоставлять услуги другим узлам.

Например, узел издателя может передавать данные с датчиков, подключенных к микроконтроллеру вашего робота. Сообщение в теме /head_sonar со значением 0,5 будет означать, что датчик в данный момент обнаруживает объект на расстоянии 0,5 метра. (Помните, что ROS использует метры для измерения расстояния и радианы для угловых измерений.) Любой узел, который хочет знать показания этого датчика, должен только подписаться на тему /head_sonar. Чтобы использовать эти значения, узел подписчика определяет функцию обратного вызова, которая выполняется всякий раз, когда новое сообщение поступает в подписанный раздел. Как часто это происходит, зависит от скорости, с которой узел издателя обновляет свои сообщения.

Узел также может определять одну или несколько служб. Служба ROS производит некоторое поведение или отправляет ответ при отправке запроса с другого узла. Простым примером может служить сервис, который включает или выключает светодиод. Более сложным примером может служить сервис, который возвращает навигационный план для мобильного робота при задании местоположения цели и начальной позы робота.

Узлы ROS более высокого уровня будут подписываться на ряд тем и сервисов, объединять результаты полезным образом и, возможно, публиковать сообщения или предоставлять собственные сервисы. Например, узел отслеживания объектов, который мы будем развивать далее в книге, подписывается на сообщения камеры по набору видео-тем и публикует команды движения по другой теме, которые считываются базовым контроллером робота для перемещения робота в соответствующем направлении.

Last updated