exponenta event banner

Обзор действий ROS

Отношение клиента к серверу

Действия ROS имеют связь «клиент-сервер» с указанным протоколом. Действия используют разделы ROS для отправки сообщений о целях от клиента на сервер. Цели можно отменить с помощью клиента действий. После получения цели сервер обрабатывает ее и может вернуть информацию клиенту. Эта информация включает в себя состояние сервера, состояние текущей цели, обратную связь по этой цели во время операции и, наконец, сообщение результата по завершении цели.

Используйте sendGoal для отправки целей на сервер. Отправить цель и дождаться ее завершения с помощью sendGoalAndWait. Эта функция позволяет вернуть сообщение результата, конечное состояние цели и состояние сервера. Пока сервер выполняет цель, функция обратного вызова, FeedbackFcn, вызывается для предоставления данных, относящихся к этой цели (см. SimpleActionClient). Отмена текущей цели с помощью cancelGoal или все цели на сервере с использованием cancelAllGoals.

Выполнение рабочего процесса действий

Как правило, при создании и выполнении действия ROS в сети ROS выполняются следующие шаги.

  • Установка сервера действий ROS. Проверьте, какие действия доступны в сети ROS, введя rosaction list в окне команд MATLAB ®.

  • Использовать rosactionclient для создания клиентов действий и их подключения к серверу. Укажите тип действия, доступный в сети ROS. Использовать waitForServer ожидание подключения клиента действий к серверу.

  • Отправить цель с помощью sendGoal. Определение goalMsg соответствует типу действия. При создании клиента действия с помощью rosactionclient, пробел goalMsg возвращается. Это сообщение можно изменить с помощью требуемых параметров.

  • Когда становится статус цели 'active', цель начинает исполнение и ActivationFcn вызывается функция обратного вызова. Дополнительные сведения об изменении этой функции обратного вызова см. в разделе SimpleActionClient.

  • Пока остается статус цели 'active'сервер продолжает выполнение цели. Функция обратного вызова с обратной связью периодически обрабатывает информацию о выполнении этих целей всякий раз, когда принимается новое сообщение обратной связи. Используйте FeedbackFcn для доступа или обработки данных сообщения, отправленных с сервера ROS.

  • Когда цель достигнута, сервер возвращает сообщение результата и состояние. Используйте ResultFcn обратный вызов для доступа или обработки сообщения результата и состояния.

Сообщения о действиях и функции

Действия АФК используют сообщения АФК для отправки целей и получения обратной связи об их выполнении. В 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)])

См. также

|

Связанные темы