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 и получите сообщение о цели. The actClient объект соединяется с уже работающим сервером действий ROS. The 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