В этом примере показано управление клавиатурой TurtleBot ® посредством ExampleHelperTurtleBotCommunicator
класс. Инструкции описывают, как настроить объект и как запустить управление клавиатурой. Инструкции по использованию управления клавиатурой отображаются при запуске функции. Чтобы изменить параметры функции, отредактируйте exampleHelperTurtleBotKeyboardControl
функцию или ExampleHelperTurtleBotKeyInput
класс. Для ознакомления с использованием TurtleBot с MATLAB ®, смотрите примеры начала работы (Начало работы с настоящим TurtleBot или Начало работы с Gazebo и моделируемым TurtleBot)
Необходимые условия: Общайтесь с TurtleBot, Исследуйте основное поведение TurtleBot
Этот пример дает обзор работы с TurtleBot, используя его собственный интерфейс ROS. Пакет Toolbox™ поддержки ROS для роботов на базе TurtleBot обеспечивает более оптимизированный интерфейс для TurtleBot2 оборудования.
Чтобы установить пакет поддержки, откройте дополнения > Get Hardware Support Packages на вкладке MATLAB Home и выберите ROS Toolbox Support Package для роботов на основе TurtleBot. Кроме того, используйте rosAddons
команда.
Убедитесь, что TurtleBot работает либо в симуляции через Gazebo ®, либо на реальном оборудовании. Для получения информации о процедуре запуска см. раздел «Начало работы с 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