exponenta event banner

Подключение к роботу с поддержкой ROS от Simulink ® через ROS

2

В этом примере показано, как настроить модель Simulink для отправки и получения информации из отдельного симулятора на основе ROS, такого как Gazebo ® через ROS 2.

Введение

Simulink можно использовать для подключения к физическому роботу с поддержкой ROS или к имитатору робота с поддержкой ROS, такому как «Беседка». В этом примере показано, как:

  • Настройка Simulink для подключения к отдельному имитатору робота с помощью ROS 2

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

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

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

open_system('robotROS2ConnectToRobotExample');

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

Задача 1 - Запуск тренажера робота беседки

В этой задаче запускается симулятор на основе ROS для робота с дифференциальным приводом вместе с мостом ROS, который воспроизводит сообщения ROS по сети ROS 2.

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

  2. На рабочем столе Ubuntu щелкните значок «Gazebo Empty», чтобы начать мир Gazebo.

  3. Щелкните по пиктограмме «ROS Bridge» для ретрансляции сообщений между сетью ROS и ROS 2.

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

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

  • Посылает nav_msgs/Odometry сообщения в /odom тема.

Задача 2 - Настройка Simulink для подключения к сети ROS 2

  • На вкладке Моделирование (Simulation) Подготовительная галерея (Prepare gallery) щелкните Сеть ROS (ROS Network) в разделе ПАНЕЛЬ ИНСТРУМЕНТОВ ROS (ROS too

  • В диалоговом окне Configure ROS Network Addresses в разделе Domain ID (ROS 2) установите идентификатор в значение 25. Это значение идентификатора соответствует идентификатору домена сети ROS 2 на виртуальной машине Ubuntu, где принимаются сообщения от Gazebo в сети ROS.

Задача 3 - Отправить роботу команды Velocity

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

ROS использует правую систему координат, поэтому ось X находится вперед, ось Y - слева, а ось Z - вверх. Команды управления отправляются с помощью geometry_msgs/Twist сообщение, где linear.x указывает линейную прямую скорость (в метрах/с), и angular.z угловая скорость вокруг оси Z (в радианах/с).

  • Откройте новую модель Simulink.

  • На вкладке Приложения в разделе СИСТЕМЫ УПРАВЛЕНИЯ щелкните Операционная система робота.

  • В диалоговом окне ROBOT OPERATING SYSTEM (ROS) нажмите кнопку Select a ROS Network и выберите Robot Operating System 2 (ROS 2).

  • На вкладке «ROS Toolbox» > «ROS 2» в браузере библиотеки перетащите в модель блок «Публикация». Дважды щелкните блок.

  • Задайте для параметра Источник темы значение Указать собственное. Войти /cmd_vel в поле Тема. Нажмите Выбрать рядом с типом сообщения, выберите geometry_msgs/Twist из раскрывающегося списка и нажмите кнопку ОК.

  • На вкладке «ROS Toolbox» > «ROS 2» в браузере библиотеки перетащите в модель блок «Пустое сообщение». Дважды щелкните блок.

  • Нажмите Выбрать рядом с типом сообщения и выберите geometry_msgs/Twist.

  • Установить время выборки на 0.01 и нажмите кнопку ОК.

  • На вкладке «Simulink > Signal Routing» в браузере библиотеки перетащите в модель блок назначения шины.

  • Подключите выходной сигнал блока пустых сообщений к Bus вход блока назначения шины и Bus вывод на вход блока публикации.

  • На вкладке Моделирование (Modeling) щелкните Обновить модель (Update Model), чтобы убедиться в правильном распространении информации о шине. Игнорируйте ошибку «Выбранный сигнал 'signal1' в блоке назначения шины 'без названия/назначения шины' не может быть найден во входном сигнале шины», если он появляется. На следующем шаге эта ошибка будет устранена.

  • Дважды щелкните на блоке «Назначение шины». Выбрать ??? signal1 в правом списке и нажмите кнопку Удалить. В левом списке разверните оба linear и angular свойства. Выберите линейный > x и угловой > z и нажмите кнопку «Выбрать». Нажмите кнопку «ОК», чтобы закрыть маску блока.

  • Добавьте блок «Константа», блок «Усиление» и два блока «Усиление ползунка». Соедините их вместе, как показано на рисунке ниже, и установите для параметра Gain значение -1.

  • Установите пределы и текущие параметры регулятора линейной скорости в значение 0.0 кому 2.0, и 1.0 соответственно. Установите соответствующие параметры ползуна усиления рулевого управления в значение -1.0 кому 1.0, и 0.1.

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

Создание абонента для приема сообщений, отправленных /odom тема. Вы также извлекете местоположение робота и постройте его траекторию в плоскости XY.

  • На вкладке «ROS Toolbox» > «ROS в браузере библиотеки перетащите в модель блок «Subscribe». Дважды щелкните блок.

  • Задайте для параметра Источник темы значение Выбрать из сети ROS (Select From ROS network) и нажмите кнопку Выбрать (Select) рядом с полем Тема (Topic). Выберите «/odom »для темы и нажмите кнопку OK. Обратите внимание, что тип сообщения nav_msgs/Odometry устанавливается автоматически.

  • На вкладке «Simulink > Signal Routing» в браузере библиотеки перетащите в модель блок выбора шины.

  • Подключите Msg выходной порт блока Subscribe к входному порту блока выбора шины. На вкладке Моделирование (Modeling) щелкните Обновить модель (Update Model), чтобы убедиться в правильном распространении информации о шине.

  • Дважды щелкните на блоке выбора шины. Выбрать ??? signal1 и ??? signal2 в правом списке и нажмите кнопку Удалить. В левом списке разверните pose > pose > pose и выберите x и y. Нажмите кнопку Выбрать и нажмите кнопку ОК.

  • На вкладке «Симуляция» > «Раковины» в браузере библиотеки перетащите в модель блок графика XY. Подключите X и Y выходные порты блока выбора шины к входным портам блока графика XY.

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

Задача 5 - Настройка и запуск модели

  • На вкладке Моделирование (Modeling) щелкните Параметры модели (Model Settings). На панели решателя задайте для параметра Тип (Type) значение Фиксированный шаг (Fixed-step) и Фиксированный размер шага (Fixed-step size) значение 0.01.

  • Установить время остановки моделирования в inf.

  • Нажмите кнопку Выполнить (Run), чтобы начать моделирование.

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

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

  • Чтобы остановить моделирование, нажмите кнопку Остановить (Stop).