rosactionclient

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

Описание

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

Создание

Описание

пример

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

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

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

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

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

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

client = ros.SimpleActionClient(node,actionname) создает клиент для заданного имени действия ROS. The 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". Вы должны задать это свойство при создании с помощью входов name-value. Для получения дополнительной информации см. раздел Структуры сообщений 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);

Действие fibonacci вычисляет последовательность fibonacci для заданного порядка, заданного в сообщении цели. Сообщение о цели было возвращено при создании клиента действий и может быть изменено для отправки целей на сервер действий 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]'

Отсоединитесь от сети ROS.

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)

Отсоединитесь от сети ROS.

rosshutdown
Shutting down global node /matlab_global_node_18287 with NodeURI http://192.168.203.1:55284/

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

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

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

Введенный в R2019b