call

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

Описание

пример

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

пример

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

пример

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

Примеры

свернуть все

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

rosinit
Launching ROS Core...
Done in 0.75124 seconds.
Initializing ROS master on http://192.168.0.10:59077.
Initializing global node /matlab_global_node_30951 with NodeURI http://bat1071901glnxa64:43547/

Настройте сервисный сервер и клиент. Используйте структуры для формата данных сообщения ROS.

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

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

response = call(client)
response = struct with fields:
    MessageType: 'std_srvs/EmptyResponse'

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

rosshutdown
Shutting down global node /matlab_global_node_30951 with NodeURI http://bat1071901glnxa64:43547/
Shutting down ROS master on http://192.168.0.10:59077.

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

rosinit
Launching ROS Core...
Done in 0.83413 seconds.
Initializing ROS master on http://192.168.0.10:56909.
Initializing global node /matlab_global_node_87889 with NodeURI http://bat1071901glnxa64:33207/

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

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

свернуть все

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

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

Примечание

В будущем релизе ROS Toolbox будет использовать структуры сообщения вместо объектов для сообщений ROS.

Чтобы использовать структуры сообщения теперь, установите "DataFormat" аргумент значения имени к "struct". Для получения дополнительной информации смотрите, что ROS передает Структуры.

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

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

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

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

Формат сообщения в виде "object" или "struct". Установите это свойство на создании сервисного клиента, использующего вход значения имени. Для получения дополнительной информации смотрите, что ROS передает Структуры.

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

свернуть все

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

Вопросы совместимости

развернуть все

Изменение поведения в будущем релизе

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

|

Введенный в R2019b