Управляйте TurtleBot с дистанционным управлением

Этот пример показывает управление клавиатурой TurtleBot® с помощью ExampleHelperTurtleBotCommunicator класс. Инструкции описывают, как настроить объект и как запустить управление клавиатурой. Инструкции относительно того, как использовать управление клавиатурой, отображены, когда функция запускается. Чтобы изменить параметры функции, отредактируйте exampleHelperTurtleBotKeyboardControl функционируйте или ExampleHelperTurtleBotKeyInput класс. Для введения в использование TurtleBot с MATLAB® смотрите начинающие примеры (Начало работы с Действительным TurtleBot или Начало работы с Gazebo и Симулированным TurtleBot)

Необходимые условия: свяжитесь с TurtleBot, исследуйте основное поведение TurtleBot

Пакет аппаратной поддержки для TurtleBot

Этот пример дает обзор работы с TurtleBot с помощью его нативного интерфейса ROS. Пакет поддержки ROS Toolbox™ для основанных на TurtleBot Роботов обеспечивает более оптимизированный интерфейс к оборудованию TurtleBot2.

Чтобы установить пакет поддержки, откройтесь, Дополнения> Получают Пакеты Аппаратной поддержки на вкладке MATLAB Home и выбирают основанных на ROS Toolbox Support Package for TurtleBot Роботов. В качестве альтернативы используйте rosAddons команда.

Соединитесь с TurtleBot

Убедитесь, что у вас есть TurtleBot, запускающийся или в симуляции через Gazebo® или на действительном оборудовании. Обратитесь к Начало работы с Gazebo и Симулированным TurtleBot или Начало работы с Действительным TurtleBot для процедуры запуска. Если вы используете симуляцию, Gazebo Office хорошо для исследования.

Инициализируйте ROS. Соединитесь с TurtleBot, заменив ipaddress с IP-адресом TurtleBot.

ipaddress = "http://192.168.178.133:11311";
rosinit(ipaddress)
Initializing global node /matlab_global_node_59490 with NodeURI http://192.168.178.1:55912/

Если вы работаете с действительным оборудованием TurtleBot2, убедитесь, что вы запускаете камеру Kinect®. Запустите следующее в терминале на TurtleBot:

roslaunch turtlebot_bringup 3dsensor.launch

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

turtleBotVersion = 3; % Gazebo Office world uses TurtleBot3 Burger model

Подпишитесь на одометрию и лазерные темы скана и убедитесь, что можно получить сообщения по этим темам. Передайте формат сообщения структуры использования для лучшей эффективности.

handles.odomSub = rossubscriber("/odom","BufferSize",25,"DataFormat","struct");
receive(handles.odomSub,3);
handles.laserSub = rossubscriber("/scan","BufferSize",5,"DataFormat","struct");
receive(handles.laserSub,3);

Создайте издателя для управления скоростью робота.

if turtleBotVersion == 3
    velTopic = "/cmd_vel";
else
    velTopic = "/mobile_base/commands/velocity";
end
handles.velPub = rospublisher(velTopic,"DataFormat","struct");

Управляйте роботом

Запустите exampleHelperTurtleBotKeyboardControl функция, которая позволяет вам управлять TurtleBot с клавиатурой. Отметьте вставленный пример кода как код (подсветите и нажмите 'Alt+Enter') выполнить функцию.

exampleHelperTurtleBotKeyboardControl(handles);

Следующее является выборками Командного окна, мирового графика и мира Gazebo после некоторого дистанционного управления клавиатуры пользователем:

Если вы перемещаете TurtleBot слишком быстро, графический вывод препятствия может стать грязным из-за относительных погрешностей в теме одометрии на высоких скоростях. Вот пример грязного мирового графика:

Демонстрационный график действительного TurtleBot, перемещающего офис, показывают:

Отключитесь от робота

Если вы вышли из функции путем нажатия q, очистите издателей и подписчиков на хосте.

clear

Используйте rosshutdown если вы сделаны, работая с сетью ROS. Закройте глобальный узел и отключитесь от TurtleBot.

rosshutdown
Shutting down global node /matlab_global_node_59490 with NodeURI http://192.168.178.1:55912/

Следующие шаги