waitForServer

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

Синтаксис

waitForServer(client)
waitForServer(client,timeout)

Описание

пример

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

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

Примеры

свернуть все

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

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

rosrun actionlib_tutorials fibonacci_server

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

ipaddress = '192.168.154.131';
rosinit(ipaddress)
Initializing global node /matlab_global_node_68978 with NodeURI http://192.168.154.1:51256/

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

rosaction list
/fibonacci

Создайте клиент действия. Задайте имя действия.

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

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

waitForServer(actClient);

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

goalMsg.Order = 8
goalMsg = 

  ROS FibonacciGoal message with properties:

    MessageType: 'actionlib_tutorials/FibonacciGoal'
          Order: 8

  Use showdetails to show the contents of the message

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

[resultMsg,resultState] = sendGoalAndWait(actClient,goalMsg,10)
Goal active
Feedback: 
  Sequence :  [0, 1, 1]
Feedback: 
  Sequence :  [0, 1, 1, 2]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5, 8]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5, 8, 13]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5, 8, 13, 21]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
Final state succeeded with result: 
  Sequence :  [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

resultMsg = 

  ROS FibonacciResult message with properties:

    MessageType: 'actionlib_tutorials/FibonacciResult'
       Sequence: [10×1 int32]

  Use showdetails to show the contents of the message


resultState =

  1×9 char array

succeeded

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

rosshutdown
Shutting down global node /matlab_global_node_68978 with NodeURI http://192.168.154.1:51256/

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

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

rosinit('192.168.154.131')
[actClient,goalMsg] = rosactionclient('/fibonacci');
waitForServer(actClient);
Initializing global node /matlab_global_node_40739 with NodeURI http://192.168.154.1:57343/

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

goalMsg.Order = 4;
sendGoalAndWait(actClient,goalMsg)
Goal active
Feedback: 
  Sequence :  [0, 1, 1]
Feedback: 
  Sequence :  [0, 1, 1, 2]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5]

ans = 

  ROS FibonacciResult message with properties:

    MessageType: 'actionlib_tutorials/FibonacciResult'
       Sequence: [6×1 int32]

  Use showdetails to show the contents of the message

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

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

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

cancelGoal(actClient)

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

cancelAllGoals(actClient)

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

delete(actClient)

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

rosshutdown
Shutting down global node /matlab_global_node_40739 with NodeURI http://192.168.154.1:57343/

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

свернуть все

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

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

Введенный в R2017b