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

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

Действия 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)])

См. также

|

Похожие темы