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.6921 seconds.
Initializing ROS master on http://192.168.0.10:52010.
Initializing global node /matlab_global_node_32067 with NodeURI http://bat6315glnxa64:41453/

Настройка сервера и клиента службы. Используйте структуры для формата данных сообщений 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_32067 with NodeURI http://bat6315glnxa64:41453/
Shutting down ROS master on http://192.168.0.10:52010.

Подключение к сети ROS.

rosinit
Launching ROS Core...
Done in 0.68205 seconds.
Initializing ROS master on http://192.168.0.10:57635.
Initializing global node /matlab_global_node_78536 with NodeURI http://bat6315glnxa64:35549/

Настройка сервера и клиента службы. Этот сервер вычисляет сумму двух целых чисел и основан на руководстве 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_78536 with NodeURI http://bat6315glnxa64:35549/
Shutting down ROS master on http://192.168.0.10:57635.

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

свернуть все

Клиент сервиса, заданный как 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". Установите это свойство при создании клиента службы с помощью входов name-value. Для получения дополнительной информации см. раздел Структуры сообщений ROS.

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

свернуть все

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

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

расширить все

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

См. также

|

Введенный в R2019b