sendGoal

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

Синтаксис

Описание

пример

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

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

Примеры

свернуть все

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

roslaunch turtlebot_actions server_turtlebot_move.launch

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

rosinit('192.168.17.129',11311)
Initializing global node /matlab_global_node_27318 with NodeURI http://192.168.17.1:60260/

Создайте клиент действия 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. Типы действия должны быть настройкой заранее с выполнением сервера действия.

Вы, должно быть, настроили '/fibonacci' тип действия. Чтобы запустить этот сервер действия, используйте следующую команду в системе ROS:

rosrun actionlib_tutorials fibonacci_server

Во-первых, настройте клиент действия ROS. Затем отправьте целевое сообщение модифицированными параметрами. Наконец, отмените свою цель и все цели на сервере действия.

Соединитесь с сетью ROS с заданным IP-адресом. Создайте клиент действия ROS, соединенный с сетью ROS с помощью rosactionclient. Задайте имя действия. Ожидайте клиента, чтобы быть соединенными с сервером.

rosinit('192.168.17.129',11311)
Initializing global node /matlab_global_node_59254 with NodeURI http://192.168.17.1:59729/
[actClient,goalMsg] = rosactionclient('/fibonacci');
waitForServer(actClient);

Отправьте целевое сообщение модифицированными параметрами. Ожидайте цели закончить выполняться.

goalMsg.Order = 4;
[resultMsg,resultState] = sendGoalAndWait(actClient,goalMsg)
resultMsg = 
  ROS FibonacciResult message with properties:

    MessageType: 'actionlib_tutorials/FibonacciResult'
       Sequence: [6×1 int32]

  Use showdetails to show the contents of the message

resultState = 
'succeeded'
showdetails(resultMsg)
  Sequence :  [0, 1, 1, 2, 3, 5]

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

goalMsg.Order = 5;
sendGoal(actClient,goalMsg)

Отмените цель на клиенте действия ROS, actClient.

cancelGoal(actClient)

Отмените все цели на сервере действия что actClient соединяется с.

cancelAllGoals(actClient)

Удалите клиент действия.

delete(actClient)

Отключитесь от сети ROS.

rosshutdown
Shutting down global node /matlab_global_node_59254 with NodeURI http://192.168.17.1:59729/

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

свернуть все

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

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

Введенный в R2019b