exponenta event banner

rosactionclient

Создать клиент действия ROS

Описание

Используйте rosactionclient для подключения к серверу действий с помощью SimpleActionClient объект и запросить выполнение целей действия. Вы можете получить отзыв о процессе выполнения и отменить цель в любое время. SimpleActionClient объект инкапсулирует простой клиент действий и позволяет отслеживать одну цель одновременно.

Создание

Описание

пример

client = rosactionclient(actionname) создает клиент для указанного ROS ActionName. Клиент определяет тип действия автоматически. Если действие недоступно, эта функция отображает ошибку.

Использовать rosactionclient для подключения к серверу действий и запроса выполнения целей действий. Вы можете получить отзыв о ходе выполнения и отменить цель в любое время.

client = rosactionclient(actionname,actiontype) создает клиент действия с указанным именем и типом (ActionType). Если действие недоступно или имя и тип не совпадают, функция отображает ошибку.

[client,goalMsg] = rosactionclient(___) возвращает сообщение цели для отправки клиента действия, созданного с использованием любого из аргументов из предыдущих синтаксисов. Goal инициализируется со значениями по умолчанию для этого сообщения.

Если ActionFcn, FeedbackFcn, и ResultFcn определяются обратные вызовы, которые вызываются при обработке цели на сервере действий. Все обратные вызовы, связанные с ранее отправленной целью, отключены, но предыдущая цель не отменяется.

[___] = rosactionclient(___,"DataFormat","struct") использует структуры сообщений вместо объектов. Для получения дополнительной информации см. Структуры сообщений ROS.

client = ros.SimpleActionClient(node,actionname) создает клиент для указанного имени действия ROS. node является Node объект, подключенный к сети ROS. Клиент определяет тип действия автоматически. Если действие недоступно, функция отображает ошибку.

client = ros.SimpleActionClient(node,actionname,actiontype) создает клиент действия с указанным именем и типом. Тип действия можно получить с помощью rosaction type actionname.

client = ros.SimpleActionClient(___,"DataFormat","struct") использует структуры сообщений вместо объектов. Для получения дополнительной информации см. Структуры сообщений ROS.

Свойства

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

Имя действия ROS, возвращаемое в виде символьного вектора. Имя действия должно соответствовать одному из разделов, rosaction("list") выходы.

Тип действия для действия ROS, возвращаемого в виде строкового скалярного или символьного вектора. Тип действия можно получить с помощью rosaction type <action_name>. Дополнительные сведения см. в разделе rosaction.

Индикатор того, подключен ли клиент к серверу действий ROS, возвращаемый как false или true. Использовать waitForServer дождаться подключения сервера при настройке клиента действий.

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

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

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

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

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

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

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

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

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

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

Функция активации, возвращаемая как дескриптор функции. Эта функция выполняется, когда GoalState имеет значение 'active'. По умолчанию отображается функция 'Goal is active.'. Можно установить для функции значение [] чтобы клиент действия не делал ничего после активации.

Функция обратной связи, возвращаемая как дескриптор функции. Эта функция выполняется при получении нового сообщения обратной связи от сервера действий. По умолчанию функция отображает подробные данные сообщения. Можно установить для функции значение [] чтобы клиент действия не давал никаких отзывов.

Функция результата, возвращаемая как дескриптор функции. Эта функция выполняется, когда сервер завершает выполнение цели и возвращает состояние результата и сообщение. По умолчанию функция отображает состояние и подробные данные сообщения. Можно установить для функции значение [] чтобы клиент действия не делал ничего после достижения цели.

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

Функции объекта

cancelGoalОтмена последней цели, отправленной клиентом
cancelAllGoalsОтменить все цели на сервере действий
rosmessageСоздание сообщений ROS
sendGoalОтправить сообщение о цели на сервер действий
sendGoalAndWaitОтправить сообщение о цели и дождаться результата
waitForServerДождитесь запуска сервера действий

Примеры

свернуть все

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

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

rosrun actionlib_tutorials fibonacci_server

Подключение к сети ROS. Для сбора информации о доступных действиях необходимо подключиться к сети ROS. Заменить ipaddress с вашим сетевым адресом.

ipaddress = '192.168.203.133';
rosinit(ipaddress,11311)
Initializing global node /matlab_global_node_81947 with NodeURI http://192.168.203.1:54283/

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

rosaction list
/fibonacci

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

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

Дождитесь подключения клиента действий к серверу.

waitForServer(actClient);

Действие фибоначчи вычислит последовательность фибоначчи для заданного порядка, указанного в целевом сообщении. Сообщение о цели было возвращено при создании клиента действия и может быть изменено для отправки целей на сервер действий ROS. Установка порядка в int32 значение 8.

goalMsg.Order = int32(8);

Отправить цель и дождаться ее завершения. Укажите время ожидания 10 секунд для завершения действия.

[resultMsg,resultState] = sendGoalAndWait(actClient,goalMsg,10);
rosShowDetails(resultMsg)
ans = 
    '
       MessageType :  actionlib_tutorials/FibonacciResult
       Sequence    :  [0, 1, 1, 2, 3, 5, 8, 13, 21]'

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

rosshutdown
Shutting down global node /matlab_global_node_81947 with NodeURI http://192.168.203.1:54283/

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

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

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

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

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