sendGoalAndWait

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

Описание

пример

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

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

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

Примечание

В будущем релизе этот синтаксис не отобразит ошибку, если сервер не возвратит результат в период тайм-аута. Вместо этого это возвратит state как 'timeout', который может реагироваться на в коде вызова.

Примеры

свернуть все

В этом примере показано, как отправить и отменить цели по действиям 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 в виде Message указатель на объект или структура. Обновите это сообщение со своими целевыми деталями и отправьте его клиенту действия ROS, использующему sendGoal или sendGoalAndWait.

Примечание

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

Чтобы использовать структуры сообщения теперь, установите "DataFormat" аргумент значения имени к "struct". Для получения дополнительной информации смотрите, что ROS передает Структуры.

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

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

свернуть все

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

Примечание

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

Чтобы использовать структуры сообщения теперь, установите "DataFormat" аргумент значения имени к "struct". Для получения дополнительной информации смотрите, что ROS передает Структуры.

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

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

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

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

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

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

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

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

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

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

Вопросы совместимости

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

Изменение поведения в будущем релизе

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

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