7. Сервисы ROS 2: запрос, ответ, клиент и сервер
Когда нужен сервис
Сервис реализует обмен «запрос — ответ». Клиент передаёт входные данные, сервер выполняет операцию и возвращает результат. Сервис подходит для короткого вычисления или команды, результат которой нужен вызывающей стороне. Промежуточного feedback-потока у обычного сервиса нет.
Контракт .srv содержит две части, разделённые строкой ---. Например, для учебного вычисления суммы:
float64 a
float64 b
---
float64 sum
Разместите интерфейс в каталоге srv пакета интерфейсов и включите его в генерацию. После сборки проверьте тип через ros2 interface show.
Разделение обязанностей
Сервер создаёт сервис ожидаемого типа и заполняет ответ в callback. Клиент создаёт клиентский объект, ожидает доступности сервиса и отправляет запрос. Асинхронный вызов возвращает future: ответ появится после обработки событий executor, а не немедленно в момент отправки.
Отдельно проверяйте доступность сервера, выполнение запроса и получение ответа. Наличие имени в списке сервисов ещё не доказывает корректность вычисления.
Практика
Реализуйте сервер суммы и клиент. Запустите их раздельно. Изучите список и тип сервиса:
ros2 service list -t
ros2 service type /sum
Для интерфейса study_interfaces/srv/Sum пример вызова:
ros2 service call /sum study_interfaces/srv/Sum '{a: 2.0, b: 3.0}'
Имена здесь учебные: они должны совпадать с вашим пакетом и сервером.
Самостоятельное задание
Проверьте положительные, отрицательные и нулевые входные значения. Остановите сервер и опишите поведение клиента при недоступности сервиса.
Самопроверка
- Чем сервер отличается от подписчика на топик?
- Почему длительное движение робота неудобно оформлять как блокирующий сервис?
- Кто обрабатывает события, пока клиент ожидает ответ?
Основа урока: учебное пособие «Операционная система для роботов ROS 2», ИТМО, 2026, печатные страницы 47–53. Это учебный конспект с упражнениями; полные примеры и рисунки приведены в пособии.
YouTube канал чтобы посмотреть видео по робототехнике & семинары
Аккаунт в Телеграмм чтобы следить за анонсами мероприятий & Исследованиями