Свяжите с поддерживающим ROS роботом от Simulink® по ROS 2

Этот пример показывает вам, как сконфигурировать модель Simulink, чтобы отправить и получить информацию от отдельного ОСНОВАННОГО НА ROS средства моделирования, такого как Gazebo® по ROS 2.

Введение

Можно использовать Simulink, чтобы связать с поддерживающим ROS физическим роботом или с поддерживающим ROS средством моделирования робота, таким как Gazebo. В этом примере показано, как к:

  • Сконфигурируйте Simulink, чтобы связать с отдельным средством моделирования робота с помощью ROS 2

  • Отправьте скоростные команды в симулированного робота

  • Получите информацию о положении от симулированного робота

Вот модель, которую вы будете создавать в этом примере.

open_system('robotROS2ConnectToRobotExample');

Предпосылки: Начало работы с ROS 2 обменивайтесь данными с ROS 2 издателя и подписчики, Начало работы с ROS 2 в Simulink®

Задача 1 - запускает средство моделирования робота Gazebo

В этой задаче вы запустите ОСНОВАННОЕ НА ROS средство моделирования для робота с дифференциальным приводом наряду с РОС-Бридж, который воспроизводит сообщения ROS по сети ROS 2.

  1. Запустите рабочий стол виртуальной машины Ubuntu® с Виртуальной машины с Мелодичным ROS 2 и Gazebo.

  2. В рабочем столе Ubuntu нажмите значок "Gazebo Empty", чтобы запустить мир Gazebo.

  3. Нажмите на значок "РОС-Бридж" к релейным сообщениям между сетью ROS и ROS 2.

Средство моделирования получает и отправляет сообщения по следующим темам:

  • Получает geometry_msgs/Twist скоростная команда обменивается сообщениями по/cmd_vel теме.

  • Отправляет nav_msgs/Odometry сообщения к /odom тема.

Задача 2 - конфигурирует Simulink, чтобы соединиться с сетью ROS 2

  • Из галереи вкладки Simulation Prepare нажмите ROS Network под ROS TOOLBOX.

  • В Сконфигурировать диалоговом окне Адресов Сети ROS, под Доменным ID (ROS 2), ID набора к 25. Это Значение идентификатора совпадает с доменным ID сети ROS 2 на виртуальной машине Ubuntu, где сообщения из Gazebo в сети ROS получены.

Задача 3 - отправляет скоростные команды в робота

Создайте издателя, который отправляет команды управления (линейный и скорости вращения) к средству моделирования. Сделайте эти скорости корректируемыми при помощи блоков Усиления Ползунка.

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.

Задача 4 - получает информацию о местоположении от робота

Создайте подписчика, чтобы получить сообщения, отправленные в /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.

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

Задача 5 - конфигурирует и запускает модель

  • От вкладки Modeling нажмите Model Settings. В панели Решателя, Типе набора к размеру Фиксированного шага и Фиксированного шага к 0.01.

  • Установите Время остановки симуляции на inf.

  • Нажмите Run, чтобы запустить симуляцию.

  • И в средстве моделирования и в графике XY, необходимо видеть, что робот перемещается в круг.

  • Во время симуляции измените значения блоков Усиления Ползунка, чтобы управлять роботом. Дважды кликните блок XY Graph и измените X и Y пределы по осям в случае необходимости (можно сделать это, в то время как симуляция запускается).

  • Чтобы остановить симуляцию, нажмите Stop.