вызвать

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

Синтаксис

response = call(serviceclient)
response = call(serviceclient,requestmsg)
response = call(___,Name,Value)

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

rosinit
Initializing ROS master on http://ah-sradford:11311/.
Initializing global node /matlab_global_node_03934 with NodeURI http://ah-sradford:61301/

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

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

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

response = call(client)
A service client is calling

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_03934 with NodeURI http://ah-sradford:61301/
Shutting down ROS master on http://ah-sradford:11311/.

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

rosinit
Initializing ROS master on http://ah-sradford:11311/.
Initializing global node /matlab_global_node_18061 with NodeURI http://ah-sradford:61815/

Настройте сервисный сервер и клиент. Этот сервер вычисляет сумму двух целых чисел и основан на сервисном примере 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_18061 with NodeURI http://ah-sradford:61815/
Shutting down ROS master on http://ah-sradford:11311/.

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

свернуть все

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

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

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

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

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

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

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

свернуть все

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

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

Представленный в R2015a