Вызовите служебный сервер ROS и получите ответ
отправляет сообщение запроса услуги по умолчанию и ожидает услуги response = call(serviceclient)response. Сообщение запроса на обслуживание по умолчанию является пустым сообщением типа serviceclient.ServiceType.
определяет сообщение запроса на обслуживание, response = call(serviceclient,requestmsg)requestmsg, для отправки в службу.
Подключение к сети 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 - Сервисный клиентServiceClient дескриптор объектаКлиент службы, указанный как ServiceClient дескриптор объекта.
requestmsg - Сообщение запросаMessage дескриптор объекта | структураСообщение запроса, указанное как Message дескриптор объекта или структура. Тип сообщения по умолчанию: serviceclient.ServiceType.
Примечание
В следующем выпуске Панель инструментов ROS будет использовать структуры сообщений вместо объектов для сообщений ROS.
Чтобы использовать структуры сообщений сейчас, установите "DataFormat" аргумент «имя-значение» для "struct". Для получения дополнительной информации см. Структуры сообщений ROS.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
"TimeOut",5'TimeOut' - Тайм-аут для ответа службы в секундахТайм-аут для ответа службы в секундах, указанный как пара, разделенная запятыми, состоящая из "Timeout" и скаляр. Если клиент службы не получает ответ службы и истечет период тайм-аута, call отображает сообщение об ошибке и позволяет MATLAB ® продолжить выполнение текущей программы. Значение по умолчанию inf запрещает MATLAB запускать текущую программу до тех пор, пока клиент службы не получит ответ службы.
'DataFormat' - Формат сообщения"object" (по умолчанию) | "struct"Формат сообщения, указанный как "object" или "struct". Установите это свойство при создании клиента службы с помощью ввода «имя-значение». Для получения дополнительной информации см. Структуры сообщений ROS.
response - Ответное сообщениеMessage дескриптор объекта | структураОтветное сообщение, отправленное сервером службы, возвращенное как Message дескриптор объекта или структура.
Изменение поведения в будущем выпуске
Теперь можно создавать сообщения в виде структур с полями, соответствующими свойствам объекта сообщения. Использование структур обычно повышает производительность создания, обновления и использования сообщений ROS, но поля сообщений больше не проверяются при установке. Типы сообщений и соответствующие значения полей из структур проверяются при передаче по сети.
Для использования сообщений ROS в качестве структур используйте "DataFormat" аргумент «имя-значение» при создании издателей, подписчиков или других объектов ROS. Любые сообщения, созданные из этих объектов, будут использовать структуры.
pub = rospublisher("/scan","sensor_msgs/LaserScan","DataFormat","struct") msg = rosmessage(pub)
Кроме того, можно создавать сообщения непосредственно в виде структур, но необходимо указать формат данных как "struct" для издателя, подписчика или других объектов ROS. Объекты ROS по-прежнему используют объекты сообщений по умолчанию.
msg = rosmessage("/scan","sensor_msgs/LaserScan","DataFormat","struct") ... pub = rospublisher("/scan","sensor_msgs/LaserScan","DataFormat","struct")
В будущей версии сообщения ROS будут по умолчанию использовать структуры, а объекты сообщений ROS будут удалены.
Дополнительные сведения см. в разделе Повышение производительности ROS с использованием структур сообщений.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.