exponenta event banner

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)

Отключитесь от сети АФК.

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

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

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

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

Изменение поведения в будущем выпуске

Представлен в R2019b