Можно использовать 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
.
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).
Откройте новую модель Simulink.
От вкладки ROS Toolbox> ROS в Браузере Библиотеки перетащите блок Publish к модели. Дважды кликните блок.
Установите исходное поле Темы на сеть Select From ROS. Нажмите Select next to Topic, выберите /mobile_base/commands/velocity
, и нажмите ОК. Обратите внимание на то, что тип сообщения (geometry_msgs/Twist
) установлен автоматически.
От вкладки ROS Toolbox> ROS в Браузере Библиотеки пропустите блок Blank Message к модели. Дважды кликните блок.
Нажмите Select next to Message type и выберите geometry_msgs/Twist
.
Установите Шаг расчета на 0.01
и нажмите ОК.
От вкладки Simulink> Signal Routing в Браузере Библиотеки перетащите блок Bus Assignment к модели.
Соедините Msg
выход блока Blank Message к Bus
вход блока Bus Assignment и Bus
выведите к Msg
вход блока Publish.
От вкладки Modeling нажмите Update Model, чтобы гарантировать, что информация о шине правильно распространена. Проигнорируйте ошибку, "Выбранный сигнал 'signal1' в блоке Bus Assignment 'неназванное Присвоение / Присвоение Шины' не может быть найден в сигнале входной шины", если это появляется. Следующий шаг разрешит эту ошибку.
Дважды кликните блок 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-плоскости.
От вкладки ROS Toolbox> ROS в Браузере Библиотеки перетащите блок Subscribe к модели. Дважды кликните блок.
Установите источник Темы на сеть Select From ROS и нажмите Select рядом с полем Topic. Выберите "/odom" для темы и нажмите ОК. Обратите внимание на то, что тип сообщения nav_msgs/Odometry
установлен автоматически.
От вкладки Simulink> Signal Routing в Браузере Библиотеки перетащите блок Селектора Шины к модели.
Соедините выходной порт блока Subscribe к входному порту блока Селектора Шины. Во вкладке Modeling нажмите Update Model, чтобы гарантировать, что информация о шине правильно распространена.
Дважды кликните блок Селектора Шины. Выберите ???
signal1
и ???
signal2
в правильном поле списка и нажимают Remove. В левом поле списка расширьте Положение> Положение> Положение и выберите X and Y. Нажмите Select и затем OK.
От вкладки Simulink> Sinks в Браузере Библиотеки перетащите блок XY Graph к модели. Соедините X
и Y
выходные порты Селектора Шины блокируются к входным портам блока XY Graph.
Этот рисунок показывает завершенную модель. Предварительно сконфигурированная модель включена для вашего удобства.
От вкладки Modeling нажмите Model Settings. В панели Решателя, Типе набора к размеру Фиксированного шага и Фиксированного шага к 0.01
.
Установите Время остановки симуляции на Inf
.
Нажмите Run, чтобы запустить симуляцию.
И в средстве моделирования и в графике XY, необходимо видеть, что робот перемещается в круг.
Во время симуляции измените значения блоков Усиления Ползунка, чтобы управлять роботом. Дважды кликните блок XY Graph и измените X
и Y
пределы по осям в случае необходимости. (Можно сделать это, в то время как симуляция запускается.)
Чтобы остановить симуляцию, нажмите Stop.