call

Вызовите сервисный сервер ROS и получите ответ

Описание

пример

response = call(serviceclient) отправляет сообщение запроса на обслуживание по умолчанию и ожидает сервиса response. Сообщение запроса на обслуживание по умолчанию является пустым сообщением типа serviceclient.ServiceType.

пример

response = call(serviceclient,requestmsg) задает сообщение запроса на обслуживание, requestmsg, быть отправленным службе.

пример

response = call(___,Name,Value) предоставляет дополнительные возможности, заданные одним или несколькими Name,Value парные аргументы, с помощью любого из аргументов от предыдущих синтаксисов.

Примеры

свернуть все

Соединитесь с сетью ROS.

rosinit
Initializing ROS master on http://bat6346glnxa64:35031/.
Initializing global node /matlab_global_node_09194 with NodeURI http://bat6346glnxa64:37145/

Настройте сервисный сервер и клиент.

server = rossvcserver('/test', 'std_srvs/Empty', @exampleHelperROSEmptyCallback);
client = rossvcclient('/test');

Вызовите сервисный сервер с сообщением по умолчанию.

response = call(client)
response = 
  ROS EmptyResponse message with properties:

    MessageType: 'std_srvs/EmptyResponse'

  Use showdetails to show the contents of the message

Закройте сеть ROS.

rosshutdown
Shutting down global node /matlab_global_node_09194 with NodeURI http://bat6346glnxa64:37145/
Shutting down ROS master on http://bat6346glnxa64:35031/.

Соединитесь с сетью ROS.

rosinit
Initializing ROS master on http://bat6346glnxa64:44651/.
Initializing global node /matlab_global_node_90947 with NodeURI http://bat6346glnxa64:39645/

Настройте сервисный сервер и клиент. Этот сервер вычисляет сумму двух целых чисел и основан на сервисном примере ROS.

sumserver = rossvcserver('/sum','roscpp_tutorials/TwoInts',@exampleHelperROSSumCallback);
sumclient = rossvcclient('/sum');

Получите сообщение запроса для клиента и измените параметры.

reqMsg = rosmessage(sumclient);
reqMsg.A = 2;
reqMsg.B = 1;

Вызовите сервис и получите ответ. Ответ должен быть суммой этих двух целых чисел, данных в сообщении запроса. Ожидайте 5 секунд сервиса испытать таймаут.

response = call(sumclient,reqMsg,'Timeout',5)
response = 
  ROS TwoIntsResponse message with properties:

    MessageType: 'roscpp_tutorials/TwoIntsResponse'
            Sum: 3

  Use showdetails to show the contents of the message

Закройте сеть ROS.

rosshutdown
Shutting down global node /matlab_global_node_90947 with NodeURI http://bat6346glnxa64:39645/
Shutting down ROS master on http://bat6346glnxa64:44651/.

Входные параметры

свернуть все

Сервисный клиент в виде ServiceClient указатель на объект.

Запросите сообщение в виде Message указатель на объект. Типом сообщения по умолчанию является serviceclient.ServiceType.

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: "TimeOut",5

Тайм-аут для сервисного ответа в секундах в виде разделенной запятой пары, состоящей из "Timeout" и скаляр. Если сервисный клиент не получает сервисный ответ, и период тайм-аута протекает, call отображает сообщение об ошибке и позволяет MATLAB® продолжить запускать текущую программу. Значение по умолчанию inf препятствует тому, чтобы MATLAB запустил текущую программу, пока сервисный клиент не получает сервисный ответ.

Выходные аргументы

свернуть все

Сообщение ответа отправляется сервисным сервером, возвращенным как Message указатель на объект.

Смотрите также

Введенный в R2019b

Для просмотра документации необходимо авторизоваться на сайте