Отправьте целевое сообщение в сервер действия
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/
client
— Клиент действия ROSSimpleActionClient
указатель на объектКлиент действия ROS, заданный как SimpleActionClient
указатель на объект. Этот простой клиент действия позволяет вам отследить одну цель за один раз.
goalMsg
— Сообщение цели действия ROSMessage
указатель на объектСообщение цели действия ROS, заданное как Message
указатель на объект. Обновите это сообщение со своими целевыми деталями и отправьте его клиенту действия ROS, использующему sendGoal
или sendGoalAndWait
.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
Вы щелкнули по ссылке, которая соответствует команде MATLAB:
Выполните эту команду, введя её в командном окне MATLAB.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.