Этот пример показывает вам, как сконфигурировать модель Simulink, чтобы отправить и получить информацию от отдельного ОСНОВАННОГО НА ROS средства моделирования, такого как Gazebo®.
Можно использовать Simulink, чтобы соединиться с поддерживающим ROS физическим роботом или с поддерживающим ROS средством моделирования робота, таким как Gazebo. В этом примере вы будете учиться как:
Сконфигурируйте Simulink, чтобы соединиться с отдельным средством моделирования робота с помощью ROS
Отправьте скоростные команды в моделируемого робота
Получите информацию о положении от моделируемого робота
Вот модель, которую вы будете создавать в этом примере.
open_system('robotROSConnectToRobotExample');
В этой задаче вы запустите ОСНОВАННОЕ НА ROS средство моделирования для робота с дифференциальным приводом. Средство моделирования получает и отправляет сообщения по следующим темам:
Это получает скоростные команды, как сообщения типа "geometry_msgs/Twist", по "/mobile_base/commands/velocity" теме
Это отправляет информацию об одометрии, как сообщения типа "nav_msgs/Odometry", к "/odom" теме
Можно выбрать одну из двух опций для подготовки ОСНОВАННОГО НА ROS средства моделирования.
Опция A: средство моделирования в MATLAB®
Эта опция использует простое основанное на MATLAB средство моделирования, которое строит текущее местоположение робота в отдельном окне рисунка.
Введите rosinit
в командной строке MATLAB. Это создает локальное ведущее устройство ROS с сетевым адресом (URI) http://localhost:11311
.
Введите ExampleHelperSimulinkRobotROS
, чтобы запустить Средство моделирования Робота. Это создаст окно фигуры:
Опция B: средство моделирования Gazebo
Эта опция использует моделируемый TurtleBot® в Gazebo.
См. Запуск с Gazebo и Моделируемым TurtleBot для получения инструкций относительно подготовки среды Gazebo. В рабочем столе Ubuntu® в виртуальной машине нажмите на "Gazebo Пустой" значок.
Отметьте сетевой адрес (URI) ведущего устройства ROS. Это будет похоже на http://192.168.84.128:11311
.
Проверьте, что среда Gazebo правильно настраивается путем ввода rostopic list
в окне терминала Ubuntu. Необходимо видеть список тем, включая "/mobile_base/commands/velocity" и "/odom".
1. Из образцового меню выберите Tools> Robot Operating System> Configure Network Addresses.
2. В разделе "ROS Master" выберите "Custom" из Сетевого выпадающего Адреса.
Если вы выбрали Option (MATLAB Simulator), гарантируйте, что ИМЯ УЗЛА/IP-АДРЕС установлено в "localhost", и Порт установлен в "11 311".
Если вы выбрали Option B (Gazebo Simulator), задайте IP-адрес и номер порта ведущего устройства ROS в Gazebo. Например, если это - http://192.168.60.165:11311
, затем введите 192.168.60.165
в поле "Hostname/IP address" и 11311
в поле Port Number.
В этой задаче вы создадите издателя, который отправляет команды управления (линейные и угловые скорости) к средству моделирования. Вы сделаете эти скорости корректируемыми при помощи блоков Усиления Ползунка.
ROS использует правую систему координат, таким образом, X вперед, Y оставляют, и Z произошел. Команды управления отправляются с помощью сообщения "geometry_msgs/Twist", где Линейный. X указывает на линейную прямую скорость (в метрах/секунда), и Угловой. Z указывает на угловую скорость вокруг оси Z (в радианах/секунда).
Откройте новую модель Simulink.
От вкладки Robotics System Toolbox в Браузере Библиотеки перетащите мышью блок Publish к модели. Дважды кликните на блоке.
Установите исходное поле Темы на сеть Select From ROS. Нажмите на Select... рядом с полем Topic, выберите "/mobile_base/commands/velocity" и нажмите ОК. Обратите внимание на то, что тип сообщения ("geometry_msgs/Twist") установлен автоматически.
От вкладки Robotics System Toolbox в Браузере Библиотеки пропустите и пропустите блок Blank Message к модели. Дважды кликните на блоке.
Нажмите на Select... рядом с полем Типа сообщения и выберите "geometry_msgs/Twist".
Установите Шаг расчета на 0.01
и нажмите ОК.
От вкладки Simulink> Signal Routing в Браузере Библиотеки перетащите мышью блок Bus Assignment к модели.
Соедините Пустое сообщение, Присвоение Шины, и Опубликуйте блоки можно следующим образом. Нажмите на Simulation> Update Diagram, чтобы гарантировать, что информация о шине правильно распространена. Можно получить ошибку, "Выбранный сигнал 'signal1' в блоке Bus Assignment 'неназванное Присвоение / Присвоение Шины' не может быть найден в сигнале входной шины". Эта ошибка ожидается и будет разрешена следующим шагом.
Дважды кликните на блоке Bus Assignment. Выберите"? signal1" в правильном поле списка и нажмите Remove. В левом поле списка расширьте оба свойства Linear и Angular. Выберите Linear> X и Angular> Z и нажмите Select>>. Нажмите ОК, чтобы закрыть маску блока.
\
Добавьте блок Constant, блок Gain и два блока Усиления Ползунка. Соедините их вместе как показано в изображении ниже и установите значение Усиления к -1
Установите пределы и текущее значение каждого блока Slider Gain как показано в изображении ниже.
В этой задаче вы создадите подписчика, чтобы получить сообщения, отправленные в "/odom" тему. Вы также извлечете (x, y) местоположение робота и построите путь в XY-плоскости.
От вкладки Robotics System Toolbox в Браузере Библиотеки перетащите мышью блок Subscribe к модели. Дважды кликните на блоке.
Установите исходное поле Темы на сеть Select From ROS и нажмите на Select... рядом с полем Topic. Выберите "/odom" для темы и нажмите ОК. Обратите внимание на то, что тип сообщения ("nav_msgs/Odometry") установлен автоматически.
От вкладки Simulink> Signal Routing в Браузере Библиотеки перетащите мышью блок Селектора Шины к модели.
Соедините выходной порт блока Subscribe к входному порту блока Селектора Шины. Нажмите на Simulation> Update Diagram, чтобы гарантировать, что информация о шине правильно распространена.
Дважды кликните на блоке Селектора Шины. Выбрать"? signal1" и"??? signal2" в правильном поле списка и нажимают Remove. В левом поле списка расширьте Положение> Положение> Положение и выберите X and Y. Нажмите Select>> и затем OK.
От вкладки Simulink> Sinks в Браузере Библиотеки перетащите мышью блок XY Graph к модели. Соедините выходные порты блока Селектора Шины к входным портам блока XY Graph.
Целая модель должна выглядеть так. Предварительно сконфигурированная модель включена для вашего удобства.
В этой задаче вы сконфигурируете и запустите свою модель.
Нажмите на Simulation> Model Configuration Parameters. В панели Решателя, Типе набора к размеру Фиксированного шага и Фиксированного шага к 0.01
.
Установите Время остановки симуляции на inf
.
Кликните по кнопке воспроизведения, чтобы запустить симуляцию. График XY появится. И в средстве моделирования и в графике XY, необходимо видеть, что робот перемещается в круг.
В то время как симуляция запускается, измените значения блоков Усиления Ползунка, чтобы управлять роботом. Если перемещения робота из области значений в графике XY, дважды кликните на блоке XY Graph и измените пределы по осям X и Y (можно сделать это, в то время как симуляция запускается).
Чтобы остановить симуляцию, нажмите кнопку Stop.
Этот пример показал вам, как связаться с внешним средством моделирования путем подписки и публикации на существующие темы в сети ROS. Пример также показал вам, как извлечь информацию от подписанных тем.