rosactionclient

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

Описание

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

Создание

Синтаксис

client = rosactionclient(actionname)
client = rosactionclient(actionname,actiontype)
[client,goalMsg] = rosactionclient(___)
client = robotics.ros.SimpleActionClient(node,actionname)
client = robotics.ros.SimpleActionClient(node,actionname,actiontype)

Описание

пример

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

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

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

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

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

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

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

Свойства

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

Имя действия 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.'. Можно установить функцию на [] сделать, чтобы клиент действия ничего не сделал после активации.

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

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

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

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

Примеры

свернуть все

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

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

rosrun actionlib_tutorials fibonacci_server

Соединитесь с сетью ROS. Вы должны быть соединены с сетью ROS, чтобы собрать информацию о том, какие действия доступны. Замените ipaddress на свой сетевой адрес.

ipaddress = '192.168.154.131';
rosinit(ipaddress)
Initializing global node /matlab_global_node_68978 with NodeURI http://192.168.154.1:51256/

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

rosaction list
/fibonacci

Создайте клиент действия. Задайте имя действия.

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

Ожидайте клиента действия, чтобы соединиться с сервером.

waitForServer(actClient);

fibonacci действие вычислит fibonacci последовательность для данного распоряжения, заданного в целевом сообщении. Целевое сообщение было возвращено при создании клиента действия и может быть изменено, чтобы отправить цели в сервер действия ROS.

goalMsg.Order = 8
goalMsg = 

  ROS FibonacciGoal message with properties:

    MessageType: 'actionlib_tutorials/FibonacciGoal'
          Order: 8

  Use showdetails to show the contents of the message

Отправьте цель и ожидайте ее завершения. Задайте тайм-аут 10 секунд, чтобы завершить действие.

[resultMsg,resultState] = sendGoalAndWait(actClient,goalMsg,10)
Goal active
Feedback: 
  Sequence :  [0, 1, 1]
Feedback: 
  Sequence :  [0, 1, 1, 2]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5, 8]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5, 8, 13]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5, 8, 13, 21]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
Final state succeeded with result: 
  Sequence :  [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

resultMsg = 

  ROS FibonacciResult message with properties:

    MessageType: 'actionlib_tutorials/FibonacciResult'
       Sequence: [10×1 int32]

  Use showdetails to show the contents of the message


resultState =

  1×9 char array

succeeded

Отключитесь от сети ROS.

rosshutdown
Shutting down global node /matlab_global_node_68978 with NodeURI http://192.168.154.1:51256/

Отправьте и отмените цели по действиям ROS. Во-первых, установите клиент действия ROS. Затем отправьте целевое сообщение с измененными параметрами. Наконец, отмените свою цель и все цели на сервере действия.

Соединитесь с сетью ROS с заданным IP-адресом. Создайте клиент действия ROS, соединенный с помощью rosactionclient. Задайте имя действия. Ожидайте клиента, чтобы быть соединенными с сервером.

rosinit('192.168.154.131')
[actClient,goalMsg] = rosactionclient('/fibonacci');
waitForServer(actClient);
Initializing global node /matlab_global_node_40739 with NodeURI http://192.168.154.1:57343/

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

goalMsg.Order = 4;
sendGoalAndWait(actClient,goalMsg)
Goal active
Feedback: 
  Sequence :  [0, 1, 1]
Feedback: 
  Sequence :  [0, 1, 1, 2]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3]
Feedback: 
  Sequence :  [0, 1, 1, 2, 3, 5]

ans = 

  ROS FibonacciResult message with properties:

    MessageType: 'actionlib_tutorials/FibonacciResult'
       Sequence: [6×1 int32]

  Use showdetails to show the contents of the message

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

goalMsg.Order = 5;
sendGoal(actClient,goalMsg)

Отмените цель на клиенте действия ROS, actClient.

cancelGoal(actClient)

Отмените все цели на сервере действия, с которым соединяется actClient.

cancelAllGoals(actClient)

Удалите клиент действия.

delete(actClient)

Отключитесь от сети ROS.

rosshutdown
Shutting down global node /matlab_global_node_40739 with NodeURI http://192.168.154.1:57343/

Введенный в R2017b