В этом примере показано управление клавиатурой TurtleBot ® с помощью ExampleHelperTurtleBotCommunicator класс. В инструкциях описывается, как настроить объект и как запустить управление клавиатурой. При запуске функции отображаются инструкции по использованию управления клавиатурой. Чтобы изменить параметры функции, отредактируйте exampleHelperTurtleBotKeyboardControl функции или ExampleHelperTurtleBotKeyInput класс. Вводные сведения об использовании TurtleBot с MATLAB ® см. в примерах начала работы (начало работы с реальным TurtleBot или начало работы с беседкой и моделируемым TurtleBot)
Предпосылки: Общайтесь с TurtleBot, исследуйте основное поведение TurtleBot
В этом примере представлен обзор работы с TurtleBot с использованием собственного интерфейса ROS. Пакет ROS Toolbox™ Support Package для роботов на базе TurtleBot обеспечивает более удобный интерфейс для TurtleBot2 оборудования.
Чтобы установить пакет поддержки, откройте меню Add-on > Get Hardware Support Packages на вкладке MATLAB Home и выберите ROS Toolbox Support Package for TurtleBot based Robots. В качестве альтернативы используйте rosAddons команда.
Убедитесь, что TurtleBot работает либо в симуляции через Gazebo ®, либо на реальном оборудовании. Процедуру запуска см. в разделе Начало работы с беседкой и моделируемым TurtleBot или Начало работы с реальным TurtleBot. При использовании моделирования Gazebo Office Хорошо подходит для исследования.
Инициализация ROS. Подключение к TurtleBot путем замены ipaddress с IP-адресом TurtleBot.
ipaddress = "http://192.168.111.134:11311";
rosinit(ipaddress)Initializing global node /matlab_global_node_50694 with NodeURI http://192.168.111.1:59298/
При работе с оборудованием реального TurtleBot2 убедитесь, что камера Kinect ® запущена. Выполните следующие действия в терминале на TurtleBot :
roslaunch turtlebot_bringup 3dsensor.launch
Между версиями TurtleBot могут существовать некоторые различия в функциональных возможностях, датчиках и названиях тем. Обязательно проверьте, какая версия используется и какие разделы ожидаются при управлении ею.
turtleBotVersion = 3; % Gazebo Office world uses TurtleBot3 Burger modelПодпишитесь на темы одометрии и лазерного сканирования и убедитесь, что вы можете получать сообщения по этим темам.
handles.odomSub = rossubscriber("/odom","BufferSize",25); receive(handles.odomSub,3); handles.laserSub = rossubscriber("/scan","BufferSize",5); receive(handles.laserSub,3);
Создайте издатель для управления скоростью робота.
if turtleBotVersion == 3 velTopic = "/cmd_vel"; else velTopic = "/mobile_base/commands/velocity"; end handles.velPub = rospublisher(velTopic);
Запустить exampleHelperTurtleBotKeyboardControl функция, позволяющая управлять TurtleBot с помощью клавиатуры. Отметьте вставленный пример кода как код (выделите и нажмите «Alt + Enter») для выполнения функции.
exampleHelperTurtleBotKeyboardControl(handles);
Ниже приведены примеры командного окна, мирового графика и мира Gazebo после некоторой телеоперации клавиатуры пользователем:



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

Показан пример графика реального движения TurtleBot по офисному пространству:

После выхода из функции нажатием qочистите издателей и подписчиков на хосте.
clear
Использовать rosshutdown после завершения работы с сетью ROS. Завершите работу глобального узла и отключитесь от TurtleBot.
rosshutdown
Shutting down global node /matlab_global_node_50694 with NodeURI http://192.168.111.1:59298/
См. следующий пример: Предотвращение препятствий с помощью TurtleBot и VFH