exponenta event banner

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

®

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

Можно выполнить действия, описанные в примере, чтобы создать собственную модель, или использовать эту завершенную версию.

open_system('robotROSConnectToRobotExample');

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

Имитатор робота

Запустите симулятор на базе ROS для робота с дифференциальным приводом. Симулятор принимает и отправляет сообщения по следующим темам:

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

  • Получает geometry_msgs/Twist сообщения команд velocity на/mobile_base/commands или /cmd_vel тема, на основе симулятора на базе АФК

Можно выбрать один из двух вариантов настройки симулятора на основе АФК.

Вариант A: Симулятор в MATLAB ®

Используйте простой симулятор на основе MATLAB для построения текущего местоположения робота в отдельном окне рисунка.

  • Войти rosinit в командной строке MATLAB. При этом создается локальный хозяин ROS с сетевым адресом (URI) http://localhost:11311.

  • Войти ExampleHelperSimulinkRobotROS для запуска имитатора робота:

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

Вариант B: Симулятор беседки

Используйте смоделированный TurtleBot ® в беседке .

  • Инструкции по настройке среды беседки см. в разделе Добавление, построение и удаление объектов в беседке. На рабочем столе Ubuntu ® в виртуальной машине щелкните значок «Gazebo Empty».

  • Обратите внимание на сетевой адрес (URI) ведущего устройства ROS. Это будет выглядеть, как http://192.168.84.128:11311, но с конкретным IP-адресом.

  • Убедитесь, что среда Gazebo правильно настроена, введя rostopic list в окне терминала Ubuntu. Вы должны увидеть список тем, в том числе /cmd_vel и /odom.

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

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

1. На вкладке «Моделирование» выберите «Панель инструментов ROS» > «Сеть ROS».

2. В разделе ROS Master (ROS 1) выберите Custom из раскрывающегося списка Сетевой адрес.

  • Опция A (MATLAB Simulator): Убедитесь, что для параметра Hostname/IP Address установлено значение localhost, и для параметра Port установлено значение 11311.

  • Опция B (Gazebo Simulator): Укажите IP-адрес и номер порта хозяина ROS в Gazebo. Например, если это http://192.168.60.165:11311, затем введите 192.168.60.165 в поле Hostname/IP address и 11311 в поле «Порт».

Отправка команд Velocity роботу

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

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

Настройка блока издателя

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

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

  3. Установите в поле Источник темы значение Выбрать из сети ROS. Выберите тему на основе симулятора, как показано ниже.

  • Вариант A (симулятор MATLAB): Нажмите кнопку «Выбрать» рядом с пунктом «Тема», выберите /mobile_base/commands/velocity, и нажмите OK. Обратите внимание, что тип сообщения (geometry_msgs/Twist) устанавливается автоматически.

  • Вариант B (симулятор беседки): Нажмите кнопку «Выбрать» рядом с пунктом «Тема», выберите /cmd_vel, и нажмите OK. Обратите внимание, что тип сообщения (geometry_msgs/Twist) устанавливается автоматически.

Конфигурирование блока сообщений

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

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

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

Настройка входов сообщений

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

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

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

  4. Дважды щелкните на блоке «Назначение шины». Выбрать ??? signal1 в правом списке и нажмите кнопку Удалить. В левом списке разверните Линейные (Linear) и Угловые (Angular) свойства. Выберите «Линейный» > «X» и «Угловой» > «Z» и нажмите «Выбрать». Нажмите «ОК», чтобы закрыть маску блока.

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

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

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

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

Конфигурирование блока подписчика

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

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

Считывание выходных данных сообщения

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

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

  3. Дважды щелкните на блоке выбора шины. Выбрать ??? signal1 и ??? signal2 в правом списке и нажмите кнопку Удалить. В левом списке раскройте узел Поза > Поза > Положение и выберите X и Y. Нажмите кнопку Выбрать и нажмите кнопку ОК.

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

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

  • Примечание.Блок Publisher в этой модели использует /mobile_base/commands/velocity раздел для использования с опцией симулятора MATLAB. Для параметра «Симулятор беседки» выберите /cmd_vel как показано выше.

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

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

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

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

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

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

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