Создайте сервисный сервер ROS 2
Используйте ros2svcserver
создать сервисный сервер ROS 2, который может получить запросы из и отправить ответы на, сервисный клиент ROS 2.
Когда вы создаете сервисный сервер, он указывает себя с сетью ROS 2. Когда вы создаете сервисный клиент, это устанавливает связь с сервером. Связь сохраняется, в то время как и клиент-сервер существует и может достигнуть друг друга. Получить список сервисов или получить информацию о конкретном сервисе, который доступен в текущей сети ROS 2, использование ros2
функция.
Сервис имеет связанный тип сообщения, который содержит пару сообщений: один для запроса и один для ответа. Сервисный сервер получает запрос, создает соответствующий ответ на основе функции обратного вызова и возвращает его в клиент. Поведение сервисного сервера является по сути асинхронным, потому что это становится активным только, когда сервисный клиент соединяется с сетью ROS 2 и издает приказ. Для получения дополнительной информации смотрите Вызов и Предоставьте ROS 2 Услуги.
создает сервисный сервер заданного server
= ros2svcserver(node
,servicename
,servicetype
,callback
)servicetype
доступный в сети ROS 2 под именем servicename
. Это присоединяет сервер к узлу ROS 2, заданному ros2node
объект, node
. Это также задает callback
функция, которая установлена в NewRequestFcn
свойство. Входные параметры servicename
и servicetype
, установлены в ServiceType
и ServiceName
свойства, соответственно.
ros2message | Создайте структуры сообщения ROS 2 |
Сервисные серверы ROS 2 не могут передать ошибки в выполнении обратного вызова непосредственно клиентам. В таких ситуациях серверы только возвращают ответ по умолчанию без любой индикации относительно отказа. Следовательно, рекомендуется использовать блоки try-catch в функции обратного вызова и установить определенные поля в сообщении ответа передавать успех/отказ выполнения обратного вызова на серверной стороне.