sendGoalAndWait

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

Описание

пример

resultMsg = sendGoalAndWait(client,goalMsg) отправляет целевое сообщение с помощью заданного клиента действия для сервера действия и ожидает, пока сервер действия не возвращает сообщение результата. Нажмите Ctrl+C, чтобы прервать ожидание.

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

[resultMsg,state,status] = sendGoalAndWait(___) возвращает итоговое целевое состояние и сопоставленный текст состояния с помощью любого из предыдущих синтаксисов. state содержит информацию о ли целевое выполнение, за которым следуют или нет.

Примеры

свернуть все

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

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

rosrun actionlib_tutorials fibonacci_server

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

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

rosinit('192.168.17.129',11311)
Initializing global node /matlab_global_node_59254 with NodeURI http://192.168.17.1:59729/
[actClient,goalMsg] = rosactionclient('/fibonacci');
waitForServer(actClient);

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

goalMsg.Order = 4;
[resultMsg,resultState] = sendGoalAndWait(actClient,goalMsg)
resultMsg = 
  ROS FibonacciResult message with properties:

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

  Use showdetails to show the contents of the message

resultState = 
'succeeded'
showdetails(resultMsg)
  Sequence :  [0, 1, 1, 2, 3, 5]

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

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

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

cancelGoal(actClient)

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

cancelAllGoals(actClient)

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

delete(actClient)

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

rosshutdown
Shutting down global node /matlab_global_node_59254 with NodeURI http://192.168.17.1:59729/

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

свернуть все

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

Сообщение цели действия ROS в виде Message указатель на объект. Обновите это сообщение со своими целевыми деталями и отправьте его клиенту действия ROS, использующему sendGoal или sendGoalAndWait.

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

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

свернуть все

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

Итоговое целевое состояние, возвращенное как одно из следующего:

  • 'pending' — Цель была получена, но еще не была принята или отклонена.

  • 'active' — Цель была принята и работает на сервере.

  • 'succeeded' — Цель выполняется успешно.

  • 'preempted' — Клиент действия отменил цель, прежде чем она закончила выполняться.

  • 'aborted' — Цель была прервана, прежде чем она закончила выполняться. Сервер действия обычно прерывает цель.

  • 'rejected' — Цель не была принята будучи в 'pending' состояние. Сервер действия обычно инициировал это состояние.

  • 'recalled' — Клиент отменил цель, в то время как это было в 'pending' состояние.

  • 'lost' — Внутренняя ошибка произошла в клиенте действия.

Текст состояния, который сервер сопоставил с итоговым целевым состоянием, возвращенным как вектор символов.

Введенный в R2019b