sendGoalAndWait

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

Описание

пример

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

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

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

Примеры

свернуть все

В этом примере показано, как отправить и отменить цели для действий 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.

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

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

свернуть все

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

Примечание

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

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

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

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

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

  • 'succeeded' - Цель выполнена успешно.

  • 'preempted' - Клиент действия отменил цель до завершения ее выполнения.

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

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

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

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

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

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

расширить все

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

Введенный в R2019b