Действия ROS имеют коммуникационное отношение клиента к серверу с заданным протоколом. Действия используют темы ROS, чтобы отправить целевые сообщения от клиента к серверу. Можно отменить цели с помощью клиента действия. После получения цели, серверные процессы это и может отдать информацию клиенту. Эта информация включает состояние сервера, состояние текущей цели, обратной связи на той цели во время операции, и наконец сообщения результата, когда цель завершена.
Используйте sendGoal
функция, чтобы отправить цели в сервер. Отправьте цель и ожидайте ее, чтобы завершить использование sendGoalAndWait
. Эта функция позволяет вам возвратить сообщение результата, конечное состояние цели и состояние сервера. В то время как сервер выполняет цель, функцию обратного вызова, FeedbackFcn
, называется, чтобы обеспечить данные, относящиеся к той цели (см. SimpleActionClient
). Отмените текущую цель с помощью cancelGoal
или все цели на сервере с помощью cancelAllGoals
.
В общем случае следующие шаги происходят при создании и выполнении действия ROS с сетью ROS.
Setup сервер действия ROS. Проверяйте, какие действия доступны в сети ROS путем ввода rosaction
list
в командном окне MATLAB®.
Используйте rosactionclient
клиентам действия по созданию и соединяют их с сервером. Задайте тип действия, в настоящее время доступный в сети ROS. Используйте waitForServer
ожидать клиента действия, чтобы связать с сервером.
Отправьте цель с помощью sendGoal
. Задайте goalMsg
это соответствует типу действия. Когда вы создаете клиент действия, использующий rosactionclient
, пустой goalMsg
возвращен. Можно изменить это сообщение желаемыми параметрами.
Когда целевое состояние становится 'active'
, цель начинает выполнение и ActivationFcn
функция обратного вызова называется. Для получения дополнительной информации об изменении этой функции обратного вызова смотрите SimpleActionClient
.
В то время как целевое состояние остается 'active'
, сервер продолжает выполнять цель. Информация о процессах функции обратного вызова обратной связи об этом выполнении целей периодически каждый раз, когда новое сообщение обратной связи получено. Используйте FeedbackFcn
получить доступ или обработать данные о сообщении, отправленные от сервера ROS.
Когда цель достигается, сервер возвращает сообщение результата и состояние. Используйте ResultFcn
коллбэк, чтобы получить доступ или обработать сообщение результата и состояние.
Действия ROS используют сообщения ROS, чтобы отправить цели и получить обратную связь об их выполнении. В MATLAB можно использовать функции обратного вызова, чтобы получить доступ или обработать обратную связь и информацию о результате из этих сообщений. После того, как вы создаете SimpleActionClient
возразите, задайте функции обратного вызова путем присвоения указателей на функцию свойствам на объекте. Можно создать объект с помощью rosactionclient
.
GoalMsg
— Целевое сообщение содержит информацию о цели. Чтобы выполнить действие, необходимо отправить целевое сообщение с обновленной целевой информацией (см. sendGoal
). Тип целевого сообщения зависит от типа действия ROS.
ActivationFcn
— Если цель получена на сервере действия, его состояние переходит к 'pending'
пока сервер не решает выполнить его. Состоянием является затем 'active'
. В данный момент MATLAB выполняет функцию обратного вызова, заданную в ActivationFcn
свойство SimpleActionClient
объект. Нет никакого сообщения ROS или данных, сопоставленных с этой функцией. По умолчанию эта функция просто отображает 'Goal is active'
на командной строке MATLAB, чтобы уведомить вас выполняется цель.
Указатель на функцию по умолчанию:
@(~) disp('Goal is active')
FeedbackFcn
— Функция обратной связи используется, чтобы обработать информацию из сообщения обратной связи. Тип сообщения обратной связи зависит от типа действия. Функция обратной связи выполняется периодически во время целевой операции каждый раз, когда новое сообщение обратной связи получено. По умолчанию функция отображает детали сообщения с помощью showdetails
. Можно сделать другую обработку на сообщении обратной связи в функции обратной связи.
Указатель на функцию по умолчанию:
@(~,msg) disp(['Feedback: ',showdetails(msg)])
msg
сообщение обратной связи как входной параметр к функции, которую вы задаете.
ResultFcn
— Функция результата выполняется, когда цель была завершена. Входные параметры к этой функции включают и сообщение результата и состояние выполнения. Тип сообщения результата зависит от типа действия. Это сообщение, msg
, и состояние, s
, совпадают с выходными параметрами, которые вы получаете при использовании sendGoalAndWait
. Эта функция может также использоваться, чтобы инициировать зависимые процессы после того, как цель будет завершена.
Указатель на функцию по умолчанию:
@(~,s,msg) disp(['Result with state ',char(s),': ',showdetails(msg)])