ROS-сервисы
Помимо топиков, в системе BRover E5 используются ROS-сервисы. В отличие от топиков, сервисы применяются для выполнения разовых действий по запросу — например, изменения состояния системы или выполнения служебных операций.
Актуальный список доступных сервисов можно получить командой:
ros2 service list
В системе присутствует большое количество стандартных сервисов ROS (например, работа с параметрами нод), а также пользовательские сервисы, реализующие прикладную функциональность ровера.
Пользовательские сервисы
На ровере реализованы два основных пользовательских сервиса:
/hmi/led
/odom/reset
Общий формат вызова
Вызов любого ROS-сервиса выполняется командой:
ros2 service call <имя_сервиса> <тип_сервиса> <сообщение>
Управление индикацией
Сервис /hmi/led используется для управления подсветкой кнопок на роботе.
Он позволяет изменять цвет:
- пользовательской кнопки
- кнопки питания
Тип сервиса:
cyphal_ros2_bridge/srv/CallHMILed
Пример вызова:
ros2 service call /hmi/led cyphal_ros2_bridge/srv/CallHMILed "{'led': {'r':0, 'g':255, 'b':0, 'interface':1}}"
В запросе задаются:
- значения цвета в формате RGB (r, g, b) в диапазоне от 0 до 255
- поле
interface, определяющее, к какой кнопке применяется команда
Значения поля interface:
1— пользовательская кнопка0— кнопка питания
Таким образом можно программно управлять визуальной индикацией состояния системы.
Сброс одометрии
Сервис /odom/reset используется для сброса текущих координат ровера.
Тип сервиса:
std_srvs/srv/Empty
Так как сервис не требует входных данных, вызов выполняется без передачи сообщения:
ros2 service call /odom/reset std_srvs/srv/Empty
После вызова сервиса положение ровера (одометрия) обнуляется.
Служебные сервисы ROS
Помимо пользовательских сервисов, каждая нода предоставляет стандартный набор сервисов для работы с параметрами:
- получение параметров (
get_parameters) - установка параметров (
set_parameters) - список параметров (
list_parameters) - описание параметров (
describe_parameters)
Эти сервисы используются для настройки и отладки системы.
Получение информации о сервисах
Для получения подробной информации о конкретном сервисе используйте команду:
ros2 service info <имя_сервиса>
Например:
ros2 service info /odom/reset
Это позволяет узнать тип сервиса, а также какие ноды являются его сервером и клиентами.
Полный список сервисов
Ниже приведён полный список сервисов, доступных в базовой конфигурации:
/camera1/describe_parameters
/camera1/get_parameter_types
/camera1/get_parameters
/camera1/get_type_description
/camera1/list_parameters
/camera1/set_camera_info
/camera1/set_parameters
/camera1/set_parameters_atomically
/control_move/describe_parameters
/control_move/get_parameter_types
/control_move/get_parameters
/control_move/get_type_description
/control_move/list_parameters
/control_move/set_parameters
/control_move/set_parameters_atomically
/cyphal_bridge/describe_parameters
/cyphal_bridge/get_parameter_types
/cyphal_bridge/get_parameters
/cyphal_bridge/get_type_description
/cyphal_bridge/list_parameters
/cyphal_bridge/set_parameters
/cyphal_bridge/set_parameters_atomically
/hmi/led
/imu/describe_parameters
/imu/get_parameter_types
/imu/get_parameters
/imu/get_type_description
/imu/list_parameters
/imu/set_parameters
/imu/set_parameters_atomically
/joy/describe_parameters
/joy/get_parameter_types
/joy/get_parameters
/joy/get_type_description
/joy/list_parameters
/joy/set_parameters
/joy/set_parameters_atomically
/odom/describe_parameters
/odom/get_parameter_types
/odom/get_parameters
/odom/get_type_description
/odom/list_parameters
/odom/reset
/odom/set_parameters
/odom/set_parameters_atomically
/radiolink_control/describe_parameters
/radiolink_control/get_parameter_types
/radiolink_control/get_parameters
/radiolink_control/get_type_description
/radiolink_control/list_parameters
/radiolink_control/set_parameters
/radiolink_control/set_parameters_atomically
/rosbridge_server/describe_parameters
/rosbridge_server/get_parameter_types
/rosbridge_server/get_parameters
/rosbridge_server/get_type_description
/rosbridge_server/list_parameters
/rosbridge_server/set_parameters
/rosbridge_server/set_parameters_atomically
/set_capture
/web_video_server/describe_parameters
/web_video_server/get_parameter_types
/web_video_server/get_parameters
/web_video_server/get_type_description
/web_video_server/list_parameters
/web_video_server/set_parameters
/web_video_server/set_parameters_atomically