exponenta event banner

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.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)

Отключитесь от сети АФК.

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 будет использовать структуры сообщений вместо объектов для сообщений ROS.

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

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

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

свернуть все

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Изменение поведения в будущем выпуске

Представлен в R2019b