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

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

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

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

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

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

open_system('robotROSConnectToRobotExample');

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

Средство моделирования робота

Запустите ОСНОВАННОЕ НА ROS средство моделирования для робота с дифференциальным приводом. Средство моделирования получает и отправляет сообщения по следующим темам:

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

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

Можно выбрать одну из двух опций для подготовки ОСНОВАННОГО НА ROS средства моделирования.

Опция A: средство моделирования в MATLAB®

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

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

  • Введите ExampleHelperSimulinkRobotROS запускать Средство моделирования Робота:

Опция B: средство моделирования Gazebo

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

  • Смотрите Добавляют, Сборка, и Удаляют Объекты в Gazebo для получения инструкций относительно подготовки среды Gazebo. В рабочем столе Ubuntu® в виртуальной машине нажмите значок "Gazebo Empty".

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

  • Проверьте, что среда Gazebo правильно настраивается путем ввода rostopic list в окне терминала Ubuntu. Необходимо видеть список тем, включая /mobile_base/commands/velocity и /odom.

Сконфигурируйте Simulink, чтобы соединиться с сетью ROS

1. От вкладки Simulation выберите ROS Toolbox> ROS Network.

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

  • Опция A (Средство моделирования MATLAB): Убедитесь, что ИМЯ УЗЛА/IP-АДРЕС установлено в localhost, и Порт установлен в 11311.

  • Опция B (Средство моделирования Gazebo): Задайте IP-адрес и номер порта ведущего устройства ROS в Gazebo. Например, если это - http://192.168.60.165:11311, затем введите 192.168.60.165 в поле ИМЕНИ УЗЛА/IP-АДРЕСА и 11311 в поле Port.

Отправьте скоростные команды в робота

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

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

Сконфигурируйте блок издателя

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

  2. От вкладки ROS Toolbox> ROS в Браузере Библиотеки перетащите блок Publish к модели. Дважды кликните блок.

  3. Установите исходное поле Темы на сеть Select From ROS. Нажмите Select next to Topic, выберите /mobile_base/commands/velocity, и нажмите ОК. Обратите внимание на то, что тип сообщения (geometry_msgs/Twist) установлен автоматически.

Сконфигурируйте блок сообщения

  1. От вкладки ROS Toolbox> ROS в Браузере Библиотеки пропустите блок Blank Message к модели. Дважды кликните блок.

  2. Нажмите Select next to Message type и выберите geometry_msgs/Twist.

  3. Установите Шаг расчета на 0.01 и нажмите ОК.

Сконфигурируйте входные параметры сообщения

  1. От вкладки Simulink> Signal Routing в Браузере Библиотеки перетащите блок Bus Assignment к модели.

  2. Соедините Msg выход блока Blank Message к Bus вход блока Bus Assignment и Bus выведите к Msg вход блока Publish.

  3. От вкладки Modeling нажмите Update Model, чтобы гарантировать, что информация о шине правильно распространена. Проигнорируйте ошибку, "Выбранный сигнал 'signal1' в блоке Bus Assignment 'неназванное Присвоение / Присвоение Шины' не может быть найден в сигнале входной шины", если это появляется. Следующий шаг разрешит эту ошибку.

  4. Дважды кликните блок Bus Assignment. Выберите ??? signal1 в правильном поле списка и нажимают Remove. В левом окне списка расширьте оба свойства Linear и Angular. Выберите Linear> X и Angular> Z и нажмите Select. Нажмите ОК, чтобы закрыть маску блока.

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

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

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

Создайте подписчика, чтобы получить сообщения, отправленные в /odom тема. Извлеките местоположение робота и графика, это - путь в XY-плоскости.

Сконфигурируйте блок Subscriber

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

  2. Установите источник Темы на сеть Select From ROS и нажмите Select рядом с полем Topic. Выберите "/odom" для темы и нажмите ОК. Обратите внимание на то, что тип сообщения nav_msgs/Odometry установлен автоматически.

Читайте передают Выход

  1. От вкладки Simulink> Signal Routing в Браузере Библиотеки перетащите блок Селектора Шины к модели.

  2. Соедините выходной порт блока Subscribe к входному порту блока Селектора Шины. Во вкладке Modeling нажмите Update Model, чтобы гарантировать, что информация о шине правильно распространена.

  3. Дважды кликните блок Селектора Шины. Выберите ??? signal1 и ??? signal2 в правильном поле списка и нажимают Remove. В левом поле списка расширьте Положение> Положение> Положение и выберите X and Y. Нажмите Select и затем OK.

  4. От вкладки Simulink> Sinks в Браузере Библиотеки перетащите блок XY Graph к модели. Соедините X и Y выходные порты Селектора Шины блокируются к входным портам блока XY Graph.

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

Сконфигурируйте и запустите модель

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

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

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

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

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

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