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.203.133',11311)
Initializing global node /matlab_global_node_18287 with NodeURI http://192.168.203.1:55284/
[actClient,goalMsg] = rosactionclient('/fibonacci','DataFormat','struct');
waitForServer(actClient);

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

goalMsg.Order = int32(4);
[resultMsg,resultState] = sendGoalAndWait(actClient,goalMsg)
resultMsg = struct with fields:
    MessageType: 'actionlib_tutorials/FibonacciResult'
       Sequence: [0 1 1 2 3]

resultState = 
'succeeded'
rosShowDetails(resultMsg)
ans = 
    '
       MessageType :  actionlib_tutorials/FibonacciResult
       Sequence    :  [0, 1, 1, 2, 3]'

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

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

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

cancelGoal(actClient)

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

cancelAllGoals(actClient)

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

delete(actClient)

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

rosshutdown
Shutting down global node /matlab_global_node_18287 with NodeURI http://192.168.203.1:55284/

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

свернуть все

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

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

Примечание

В будущем релизе ROS Toolbox будет использовать структуры сообщения вместо объектов для сообщений ROS.

Чтобы использовать структуры сообщения теперь, установите "DataFormat" аргумент значения имени к "struct". Для получения дополнительной информации смотрите, что ROS передает Структуры.

Вопросы совместимости

развернуть все

Изменение поведения в будущем релизе

Введенный в R2019b