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

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

Введение

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

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

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

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

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

open_system('robotROSConnectToRobotExample');

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

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

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

  • Это отправляет информацию об одометрии, как сообщения типа "nav_msgs/Odometry", к "/odom" теме

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

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

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

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

  • Введите ExampleHelperSimulinkRobotROS, чтобы запустить Средство моделирования Робота. Это создаст окно фигуры:

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

Эта опция использует моделируемый TurtleBot® в Gazebo.

  • См. Запуск с Gazebo и Моделируемым TurtleBot для получения инструкций относительно подготовки среды Gazebo. В рабочем столе Ubuntu® в виртуальной машине нажмите на "Gazebo Пустой" значок.

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

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

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

1. Из образцового меню выберите Tools> Robot Operating System> Configure Network Addresses.

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

  • Если вы выбрали Option (MATLAB Simulator), гарантируйте, что ИМЯ УЗЛА/IP-АДРЕС установлено в "localhost", и Порт установлен в "11 311".

  • Если вы выбрали Option B (Gazebo Simulator), задайте IP-адрес и номер порта ведущего устройства ROS в Gazebo. Например, если это - http://192.168.60.165:11311, затем введите 192.168.60.165 в поле "Hostname/IP address" и 11311 в поле Port Number.

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

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

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

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

  • От вкладки Robotics System Toolbox в Браузере Библиотеки перетащите мышью блок Publish к модели. Дважды кликните на блоке.

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

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

  • Нажмите на Select... рядом с полем Типа сообщения и выберите "geometry_msgs/Twist".

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

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

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

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

\

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

  • Установите пределы и текущее значение каждого блока Slider Gain как показано в изображении ниже.

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

В этой задаче вы создадите подписчика, чтобы получить сообщения, отправленные в "/odom" тему. Вы также извлечете (x, y) местоположение робота и построите путь в XY-плоскости.

  • От вкладки Robotics System Toolbox в Браузере Библиотеки перетащите мышью блок Subscribe к модели. Дважды кликните на блоке.

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

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

  • Соедините выходной порт блока Subscribe к входному порту блока Селектора Шины. Нажмите на Simulation> Update Diagram, чтобы гарантировать, что информация о шине правильно распространена.

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

  • От вкладки Simulink> Sinks в Браузере Библиотеки перетащите мышью блок XY Graph к модели. Соедините выходные порты блока Селектора Шины к входным портам блока XY Graph.

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

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

В этой задаче вы сконфигурируете и запустите свою модель.

  • Нажмите на Simulation> Model Configuration Parameters. В панели Решателя, Типе набора к размеру Фиксированного шага и Фиксированного шага к 0.01.

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

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

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

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

Сводные данные

Этот пример показал вам, как связаться с внешним средством моделирования путем подписки и публикации на существующие темы в сети ROS. Пример также показал вам, как извлечь информацию от подписанных тем.