Обзор действий 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)])

Смотрите также

|

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте