Переместите робота Turtlebot Используя действия ROS

В этом примере показано, как использовать /turtlebot_move действие с роботом Turtlebot. /turtlebot_move действие берет местоположение в среде робота и попытках переместить робота в то местоположение.

Выполните шаги в Начало работы с Gazebo и Симулированным TurtleBot, чтобы установить симулированный TurtleBot. После запуска виртуальной машины запустите Gazebo Пустой мир с помощью настольного ярлыка и откройте окно терминала.

Чтобы запустить сервер действия Turtlebot ROS, используйте эту команду на терминале распределения ROS.

~/start-turtlebot-move-action-server.sh

Соединитесь с сетью ROS. У вас должна быть настройка сервера действия ROS в этой сети. Измените ipaddress к адресу вашей сети ROS.

ipaddress = "192.168.178.133";
rosinit(ipaddress,11311);
Initializing global node /matlab_global_node_88888 with NodeURI http://192.168.178.1:57929/

Просмотрите действия ROS, доступные в сети. Необходимо видеть /turtlebot_move доступный.

rosaction list
/turtlebot_move

Создайте простой клиент действия, чтобы связать с сервером действия. Задайте имя действия. goalMsg целевое сообщение для вас, чтобы задать целевые параметры. Используйте формат сообщения struct для лучшего КПД.

[client,goalMsg] = rosactionclient("/turtlebot_move","turtlebot_actions/TurtlebotMove","DataFormat","struct");
waitForServer(client);

Установите параметры для цели. goalMsg содержит свойства для обоих расстояния поворота и форвард. Задайте, как далеко вперед и какой угол вы хотели бы, чтобы робот повернул. Этот пример перемещает робота прямые 2 метра.

goalMsg.ForwardDistance = single(2);
goalMsg.TurnDistance = single(0);

Установите функцию обратной связи пустеть, чтобы ничего не иметь выход во время целевого выполнения. Оставьте FeedbackFcn как значение по умолчанию, чтобы вытащить печать из информации об обратной связи о целевом выполнении.

client.FeedbackFcn = [];

Отправьте целевое сообщение в сервер. Ожидайте его, чтобы выполнить и получить сообщение результата.

[resultMsg,~,~] = sendGoalAndWait(client,goalMsg)
resultMsg = struct with fields:
        MessageType: 'turtlebot_actions/TurtlebotMoveResult'
       TurnDistance: 0
    ForwardDistance: 2.0078

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

rosshutdown
Shutting down global node /matlab_global_node_88888 with NodeURI http://192.168.178.1:57929/