sendGoal

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

Синтаксис

sendGoal(client,goalMsg)

Описание

пример

sendGoal(client,goalMsg) отправляет целевое сообщение в сервер действия. Заданный клиент действия отслеживает эту цель. Функция не ожидает цели, которая будет выполняться, и сразу возвращается.

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

Примеры

свернуть все

Этот пример показывает, как создать целевые сообщения и отправить к уже активному серверу действия ROS в сети ROS. Необходимо создать клиент действия ROS, чтобы соединиться с этим сервером. Чтобы запустить сервер действия, эта команда используется на распределении ROS:

roslaunch turtlebot_actions server_turtlebot_move.launch

Впоследствии, соединитесь с узлом ROS с помощью rosinit с правильным IP-адресом.

Создайте клиент действия ROS и получите целевое сообщение. Объект actClient соединяется с уже рабочим сервером действия ROS. goalMsg является допустимым целевым сообщением. Обновите параметры сообщения со своей определенной целью.

[actClient, goalMsg] = rosactionclient('/turtlebot_move');
disp(goalMsg)
  ROS TurtlebotMoveGoal message with properties:

        MessageType: 'turtlebot_actions/TurtlebotMoveGoal'
       TurnDistance: 0
    ForwardDistance: 0

  Use showdetails to show the contents of the message

Можно также создать сообщение с помощью rosmessage и объекта клиента действия. Это сообщение отправляет линейные и угловые скоростные команды в робота Turtlebot®.

goalMsg = rosmessage(actClient);
disp(goalMsg)
  ROS TurtlebotMoveGoal message with properties:

        MessageType: 'turtlebot_actions/TurtlebotMoveGoal'
       TurnDistance: 0
    ForwardDistance: 0

  Use showdetails to show the contents of the message

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

goalMsg.ForwardDistance = 2;
sendGoal(actClient,goalMsg)

Отправьте и отмените цели по действиям 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/

Входные параметры

свернуть все

Клиент действия ROS, заданный как указатель на объект SimpleActionClient. Этот простой клиент действия позволяет вам отследить одну цель за один раз.

Сообщение цели действия ROS, заданное как указатель на объект Message. Обновите это сообщение со своими целевыми деталями и отправьте его клиенту действия ROS, использующему sendGoal или sendGoalAndWait.

Введенный в R2017b