Drone X

Сервисы, параметры, actions: обзор коммуникаций

5 блок(ов) теории · 12 заданий · 145 баллов

Один тип связи в курсе уже освоен — топик: односторонний поток сообщений, где издатель кладёт, подписчик берёт, и никто никого не ждёт. Но не вся задача робота — поток, и для остальных случаев в ROS 2 есть свои типы связи. Различать их и выбирать под задачу — главная компетенция этого модуля.

Сервис — разовый запрос-ответ: нода-клиент собирает запрос, отправляет его ноде-серверу и ждёт; сервер обрабатывает запрос в колбэке и возвращает ответ. Так выглядят «сменить режим полёта» и «заармить дрон». Параметр — конфигурационное значение, живущее при ноде: порог АКБ, частота телеметрии, имя узла. Это не сообщение в эфире, а свойство самой ноды: читается на старте и может быть перечитано, когда значение меняют.

Action — долгая работа под управлением клиента: клиент ставит цель («облети пять точек»), сервер принимает её и по ходу шлёт поток фидбека («точка 2 из 5 пройдена»), а в конце возвращает финальный результат («миссия завершена»). Итоговое правило выбора: непрерывный поток — топик; разовая команда с ответом — сервис; долгая работа с прогрессом — action; конфигурация — параметр.

Анатомия одного вызова сервиса — пять шагов: клиент строит запрос; запрос уходит серверу; у сервера просыпается колбэк-обработчик, а клиент в это время стоит и ждёт; колбэк завершается ответом; код клиента продолжается, получив результат. Ожидание — ключевое слово: клиент блокируется до ответа. Именно поэтому сервис не годится для потока данных — блокирующий запрос на каждое сообщение превратил бы телеметрию в очередь ожиданий; для потока и придуман топик, где издателя никто не заставляет ждать.

Честная граница модуля: мок курса исполняет только топики — издателей, подписки, таймеры (рамка модуля 1). Сервисы, параметры и actions в этом курсе не программируются и не исполняются: они живут в концептуальных заданиях и в «виртуальной кнопке» стенда. В реальном ROS 2 за ними стоят rclpy service server/client, declare_parameter и action-серверы — тема продвинутого курса. Что нужно джуну уже сейчас — выбирать тип связи под задачу и объяснять выбор словами.

Задания

0/12 заданий · 0/145 баллов

1. Топик против сервиса: поток и ожидание

10 балл(ов)

На ревью архитектуры стенда встал вопрос: чем топик отличается от сервиса? Выберите вариант, который верно противопоставляет механику двух типов связи — односторонний поток против запроса-ответа с ожиданием — и не путает роли сторон.

1 / 12