waitForServer

Ожидайте сервера действия, чтобы запуститься

Описание

пример

waitForServer(client) ожидает, пока сервер действия не запущен и доступен, чтобы отправить цели. IsServerConnected свойство SimpleActionClient показывает состояние связи сервера. Нажмите Ctrl+C, чтобы прервать ожидание.

waitForServer(client,timeout) задает период тайм-аута в секундах. Если сервер действия не запускает в период тайм-аута, эта функция отображает ошибку.

status = waitForServer(___) возвращает status указание, доступен ли сервер действия, с помощью какого-либо из аргументов от предыдущих синтаксисов. Если сервер не доступен в timeoutСостояние будет false, и эта функция не отобразит ошибку.

Примеры

свернуть все

В этом примере показано, как создать клиент действия ROS и выполнить действие. Типы действия должны быть настроены заранее с выполнением сервера действия.

Вы, должно быть, настроили '/fibonacci' тип действия. Чтобы запустить этот сервер действия, используйте следующую команду в системе ROS:

rosrun actionlib_tutorials fibonacci_server

Соединитесь с сетью ROS. Вы должны быть соединены с сетью ROS, чтобы собрать информацию о том, какие действия доступны. Замените ipaddress с вашим сетевым адресом.

ipaddress = '192.168.203.133';
rosinit(ipaddress,11311)
Initializing global node /matlab_global_node_81947 with NodeURI http://192.168.203.1:54283/

Перечислите действия, доступные в сети. Единственным действием, настроенным в этой сети, является '/fibonacci' действие.

rosaction list
/fibonacci

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

[actClient,goalMsg] = rosactionclient('/fibonacci','DataFormat','struct');

Ожидайте клиента действия, чтобы связать с сервером.

waitForServer(actClient);

fibonacci действие вычислит fibonacci последовательность для данного распоряжения, заданного в целевом сообщении. Целевое сообщение было возвращено при создании клиента действия и может быть изменено, чтобы отправить цели в сервер действия ROS. Установите порядок к int32 значение 8.

goalMsg.Order = int32(8);

Отправьте цель и ожидайте ее завершения. Задайте тайм-аут 10 секунд, чтобы завершить действие.

[resultMsg,resultState] = sendGoalAndWait(actClient,goalMsg,10);
rosShowDetails(resultMsg)
ans = 
    '
       MessageType :  actionlib_tutorials/FibonacciResult
       Sequence    :  [0, 1, 1, 2, 3, 5, 8, 13, 21]'

Отключитесь от сети ROS.

rosshutdown
Shutting down global node /matlab_global_node_81947 with NodeURI http://192.168.203.1:54283/

В этом примере показано, как отправить и отменить цели по действиям ROS. Типы действия должны быть настройкой заранее с выполнением сервера действия.

Вы, должно быть, настроили '/fibonacci' тип действия. Чтобы запустить этот сервер действия, используйте следующую команду в системе ROS:

rosrun actionlib_tutorials fibonacci_server

Во-первых, настройте клиент действия ROS. Затем отправьте целевое сообщение модифицированными параметрами. Наконец, отмените свою цель и все цели на сервере действия.

Соединитесь с сетью ROS с заданным IP-адресом. Создайте клиент действия ROS, соединенный с сетью ROS с помощью rosactionclient. Задайте имя действия. Ожидайте клиента, чтобы быть соединенными с сервером.

rosinit('192.168.203.133',11311)
Initializing global node /matlab_global_node_18287 with NodeURI http://192.168.203.1:55284/
[actClient,goalMsg] = rosactionclient('/fibonacci','DataFormat','struct');
waitForServer(actClient);

Отправьте целевое сообщение модифицированными параметрами. Ожидайте цели закончить выполняться.

goalMsg.Order = int32(4);
[resultMsg,resultState] = sendGoalAndWait(actClient,goalMsg)
resultMsg = struct with fields:
    MessageType: 'actionlib_tutorials/FibonacciResult'
       Sequence: [0 1 1 2 3]

resultState = 
'succeeded'
rosShowDetails(resultMsg)
ans = 
    '
       MessageType :  actionlib_tutorials/FibonacciResult
       Sequence    :  [0, 1, 1, 2, 3]'

Отправьте новое целевое сообщение без ожидания.

goalMsg.Order = int32(5);
sendGoal(actClient,goalMsg)

Отмените цель на клиенте действия ROS, actClient.

cancelGoal(actClient)

Отмените все цели на сервере действия что actClient соединяется с.

cancelAllGoals(actClient)

Удалите клиент действия.

delete(actClient)

Отключитесь от сети ROS.

rosshutdown
Shutting down global node /matlab_global_node_18287 with NodeURI http://192.168.203.1:55284/

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

свернуть все

Клиент действия ROS в виде SimpleActionClient указатель на объект. Этот простой клиент действия позволяет вам отследить одну цель за один раз.

Период тайм-аута для подготовки сервера действия ROS в виде скаляра в секундах. Если клиент не связывает с сервером в указанном периоде времени, ошибка отображена.

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

свернуть все

Состояние запуска сервера действия, возвращенного как logical скаляр. Если сервер не доступен в период тайм-аута, status будет false.

Примечание

Используйте status выходной аргумент, когда вы используете waitForServer в функции точки входа для генерации кода. Это избежит, чтобы ошибки периода выполнения вывели состояние вместо этого, которое может реагироваться на в коде вызова.

Расширенные возможности

Введенный в R2019b
Для просмотра документации необходимо авторизоваться на сайте