rossvcclient

Соединитесь с сервисным сервером ROS

Описание

Используйте rossvcclient или robotics.ros.ServiceClient, чтобы создать сервисный объект клиента ROS. Этот сервисный клиент использует персистентную связь, чтобы отправить запросы к и получить ответы из, сервисный сервер ROS. Связь сохраняется, пока сервисный клиент не удален, или сервисный сервер становится недоступным.

Используйте синтаксис robotics.ros.ServiceClient при соединении с определенным узлом ROS.

Создание

Синтаксис

client = rossvcclient(servicename)
client = rossvcclient(servicename,Name,Value)
[client,reqmsg] = rossvcclient(___)
client = robotics.ros.ServiceClient(node, name)
client = robotics.ros.ServiceClient(node, name,"Timeout",timeout)

Описание

пример

client = rossvcclient(servicename) создает сервисный клиент с данным ServiceName, который соединяется с и получает его ServiceType от, сервисный сервер. Этот синтаксис команд блокирует текущую программу MATLAB® от выполнения, пока это не может соединиться с сервисным сервером.

client = rossvcclient(servicename,Name,Value) предоставляет дополнительные возможности, заданные одним или несколькими аргументами пары Name,Value.

[client,reqmsg] = rossvcclient(___) возвращает новое сообщение запроса на обслуживание в reqmsg, с помощью любого из аргументов от предыдущих синтаксисов. Тип сообщения reqmsg убежден сервисом, что client соединяется с. Сообщение инициализируется со значениями по умолчанию. Можно также создать сообщение запроса с помощью rosmessage wutg.

пример

client = robotics.ros.ServiceClient(node, name) создает сервисный клиент, который соединяется с сервисным сервером. Клиент получает его сервисный тип от сервера. Сервисный клиент присоединяет к указателю на объект robotics.ros.Node, node.

client = robotics.ros.ServiceClient(node, name,"Timeout",timeout) задает период тайм-аута в секундах для клиента, чтобы соединить сервисный сервер.

Свойства

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

Это свойство доступно только для чтения.

Имя сервиса, заданного как скаляр строки или вектор символов.

Пример: "/gazebo/get_model_state"

Это свойство доступно только для чтения.

Тип сервиса, заданного как скаляр строки или вектор символов.

Пример: "gazebo_msgs/GetModelState"

Функции объекта

rosmessageСоздайте сообщения ROS
callВызовите сервисный сервер ROS и получите ответ

Примеры

свернуть все

Соединитесь с сетью 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 путем создания объекта ServiceServer и используйте объекты ServiceClient запросить информацию по сети. Функция обратного вызова, используемая сервером, берет строку, инвертирует его и возвращает обратную строку.

Запустите ведущее устройство ROS и узел.

master = robotics.ros.Core;
node = robotics.ros.Node('/test');

Создайте сервисный сервер. Этот сервер ожидает строку как запрос и отвечает строкой на основе коллбэка.

server = robotics.ros.ServiceServer(node,'/data/string',...
                                    'roseus/StringString');

Создание функции обратного вызова. Эта функция берет входную строку в качестве свойства Str req и возвращает его как свойство Str resp. Необходимо создать и сохранить эту функцию отдельно. req является сообщением ROS, вы создаете использование rosmessage.


% Copyright 2015 The MathWorks, Inc.

function [resp] = flipString(~,req,resp)
% FLIPSTRING Reverses the order of a string in REQ and returns it in RESP.
resp.Str = fliplr(req.Str);
end


Сохраните этот код как файл с именем flipString.m к папке на вашем пути MATLAB®.

Присвойте функцию обратного вызова для входящих сервисных вызовов.

server.NewRequestFcn = @flipString;

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

client = robotics.ros.ServiceClient(node,'/data/string');
request = rosmessage(client);
request.Str = 'hello world';

Отправьте запрос на обслуживание и ожидайте ответа. Укажите, что сервис ожидает 3 секунды ответа.

response = call(client,request,'Timeout',3)
response = 

  ROS StringStringResponse message with properties:

    MessageType: 'roseus/StringStringResponse'
            Str: 'dlrow olleh'

  Use showdetails to show the contents of the message

Ответ является инвертированной строкой из сообщения запроса.

Очистите сервисный клиент, сервисный сервер и узел ROS. Закройте ведущее устройство ROS.

clear('client', 'server', 'node')
clear('master')

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