Этот пример показывает вам, как сконфигурировать модель Simulink, чтобы отправить и получить информацию от отдельного ОСНОВАННОГО НА ROS средства моделирования, такого как Gazebo® по ROS 2.
Можно использовать Simulink, чтобы связать с поддерживающим ROS физическим роботом или с поддерживающим ROS средством моделирования робота, таким как Gazebo. В этом примере показано, как к:
Сконфигурируйте Simulink, чтобы связать с отдельным средством моделирования робота с помощью ROS 2
Отправьте скоростные команды в симулированного робота
Получите информацию о положении от симулированного робота
Вот модель, которую вы будете создавать в этом примере.
open_system('robotROS2ConnectToRobotExample');
Необходимые условия: Начало работы с ROS 2 обменивайтесь данными с ROS 2 издателя и подписчики, Начало работы с ROS 2 в Simulink®
В этой задаче вы запустите ОСНОВАННОЕ НА ROS средство моделирования для робота с дифференциальным приводом наряду с РОС-Бридж, который воспроизводит сообщения ROS по сети ROS 2.
Запустите рабочий стол виртуальной машины Ubuntu® с Виртуальной машины с Мелодичным ROS 2 и Gazebo.
В рабочем столе Ubuntu нажмите значок "Gazebo Empty", чтобы запустить мир Gazebo.
Нажмите на значок "РОС-Бридж" к релейным сообщениям между сетью ROS и ROS 2.
Средство моделирования получает и отправляет сообщения по следующим темам:
Получает geometry_msgs/Twist
скоростная команда обменивается сообщениями по/cmd_vel теме.
Отправляет nav_msgs/Odometry
сообщения к /odom
тема.
Из галереи вкладки Simulation Prepare нажмите ROS Network под ROS TOOLBOX.
В Сконфигурировать диалоговом окне Адресов Сети ROS, под Доменным ID (ROS 2), ID набора к 25
. Это Значение идентификатора совпадает с доменным ID сети ROS 2 на виртуальной машине Ubuntu, где сообщения из Gazebo в сети ROS получены.
Создайте издателя, который отправляет команды управления (линейный и скорости вращения) к средству моделирования. Сделайте эти скорости корректируемыми при помощи блоков Усиления Ползунка.
ROS использует правую систему координат, таким образом, Ось X вперед, Ось Y оставляют, и ось Z возросла. Команды управления отправляются с помощью geometry_msgs/Twist
обменивайтесь сообщениями, где linear.x
указывает на линейную прямую скорость (в метрах/секунда), и angular.z
указывает на скорость вращения вокруг оси Z (в радианах/секунда).
Откройте новую модель Simulink.
На вкладке Apps, под СИСТЕМАМИ УПРАВЛЕНИЯ, нажимают Robot Operating System.
В диалоговом окне Операционной системы робота (ROS) нажмите Select a ROS Network и выберите Robot Operating System 2 (ROS 2).
От вкладки ROS Toolbox> ROS 2 в Браузере Библиотеки перетащите блок Publish к модели. Дважды кликните блок.
Установите источник Темы Задавать ваше собственное. Введите /cmd_vel
в поле Topic. Нажмите Select next to Message Type, выберите geometry_msgs/Twist
из выпадающего списка, и нажимают ОК.
От вкладки ROS Toolbox> ROS 2 в Браузере Библиотеки пропустите блок Blank Message к модели. Дважды кликните блок.
Нажмите Select next to Message type и выберите geometry_msgs/Twist
.
Установите Шаг расчета на 0.01
и нажмите ОК.
От вкладки Simulink> Signal Routing в Браузере Библиотеки перетащите блок Bus Assignment к модели.
Соедините выход блока Blank Message к Bus
вход блока Bus Assignment и Bus
выведите к входу блока Publish.
От вкладки Modeling нажмите Update Model, чтобы гарантировать, что информация о шине правильно распространена. Проигнорируйте ошибку, "Выбранный сигнал 'signal1' в блоке Bus Assignment 'неназванное Присвоение / Присвоение Шины' не может быть найден в сигнале входной шины", если это появляется. Следующий шаг разрешит эту ошибку.
Дважды кликните блок Bus Assignment. Выберите ???
signal1
в правильном поле списка и нажимают Remove. В левом поле списка расширьте оба linear
и angular
свойства. Выберите линейный> x и угловой> z и нажмите Select. Нажмите ОК, чтобы закрыть маску блока.
Добавьте блок Constant, блок Gain и два блока Усиления Ползунка. Соедините их вместе как показано в изображении ниже и установите значение Усиления к -1.
Установите пределы и текущие параметры линейного скоростного ползунка к 0.0
к 2.0
, и 1.0
соответственно. Установите соответствующие параметры держащегося ползунка усиления к -1.0
к 1.0
, и 0.1
.
Создайте подписчика, чтобы получить сообщения, отправленные в /odom
тема. Вы также извлечете местоположение робота и построите, это - путь в XY-плоскости.
От вкладки ROS Toolbox> ROS 2 в Браузере Библиотеки перетащите блок Subscribe к модели. Дважды кликните блок.
Установите источник Темы на сеть Select From ROS и нажмите Select рядом с полем Topic. Выберите "/odom" для темы и нажмите ОК. Обратите внимание на то, что тип сообщения nav_msgs/Odometry
установлен автоматически.
От вкладки Simulink> Signal Routing в Браузере Библиотеки перетащите блок Селектора Шины к модели.
Соедините Msg
выходной порт блока Subscribe к входному порту блока Селектора Шины. Во вкладке Modeling нажмите Update Model, чтобы гарантировать, что информация о шине правильно распространена.
Дважды кликните блок Селектора Шины. Выберите ???
signal1
и ???
signal2
в правильном поле списка и нажимают Remove. В левом поле списка расширьте положение> положение> положение и выберите X и Y. Нажмите Select и затем OK.
От вкладки Simulink> Sinks в Браузере Библиотеки перетащите блок XY Graph к модели. Соедините X
и Y
выходные порты Селектора Шины блокируются к входным портам блока XY Graph.
Следующий рисунок показывает завершенную модель. Предварительно сконфигурированная модель включена для вашего удобства.
От вкладки Modeling нажмите Model Settings. В панели Решателя, Типе набора к размеру Фиксированного шага и Фиксированного шага к 0.01
.
Установите Время остановки симуляции на inf
.
Нажмите Run, чтобы запустить симуляцию.
И в средстве моделирования и в графике XY, необходимо видеть, что робот перемещается в круг.
Во время симуляции измените значения блоков Усиления Ползунка, чтобы управлять роботом. Дважды кликните блок XY Graph и измените X
и Y
пределы по осям в случае необходимости (можно сделать это, в то время как симуляция запускается).
Чтобы остановить симуляцию, нажмите Stop.