exponenta event banner

Выполнение совместного моделирования между Simulink и беседкой

В этом примере показано, как настроить синхронизированное моделирование между Simulink™ и Gazebo для отправки команд и получения данных из Gazebo.

Настройка среды моделирования беседки

В этом примере используйте собственную среду Linux с Gazebo или загрузите предоставленную виртуальную машину с ROS и Gazebo. В виртуальной машине (ВМ) требуемый плагин Gazebo расположен в /home/user/src/GazeboPlugin.

Требования к программному обеспечению (входящие в состав ВМ):

Операционная система: Ubuntu Xenial Xerus или Ubuntu Bionic Beaver

Зависимость от программного обеспечения: CMake 2.8, Gazebo 9 и libgazebo9-dev

При использовании собственной среды Linux выполните действия, описанные в разделе Установка подключаемого модуля Gazebo вручную. В противном случае перейдите в раздел Запуск среды моделирования беседки.

Установка подключаемого модуля беседки вручную

Получите исходный код плагина в виде zip-пакета. Эта функция создает папку с именем GazeboPlugin в текущей рабочей папке и сжимает ее как GazeboPlugin.zip.

packageGazeboPlugin

Копировать GazeboPlugin.zip на вашу машину Linux.

Распакуйте пакет на платформе Linux. В этом примере распакуйте файлы в /home/user/src/GazeboPlugin.

Выполните эти команды в терминале для компиляции подключаемого модуля.

cd /home/user/src/GazeboPlugin

Если build папка уже существует, удалите ее.

rm -r build

Установите подключаемый модуль.

mkdir build
cd build
cmake ..
make

Расположение плагина: /home/user/src/GazeboPlugin/export/lib/libGazeboCoSimPlugin.so.

Удалите созданный подключаемый модуль с хост-компьютера с помощью MATLAB ®.

if exist('GazeboPlugin', 'dir')
    rmdir('GazeboPlugin', 's');
end

if exist('GazeboPlugin.zip', 'file')
    delete('GazeboPlugin.zip');
end

Запуск среды моделирования беседки

Откройте терминал в виртуальной машине или собственной операционной системе Linux, выполните следующие команды для запуска симулятора Gazebo. Если симулятор Gazebo не открывается, может потребоваться переустановка плагина. См. раздел Установка подключаемого модуля беседки вручную.

cd /home/user/src/GazeboPlugin/export
export SVGA_VGPU10=0
gazebo ../world/multiSensorPluginTest.world --verbose

Эти команды запускают симулятор Gazebo со следующими элементами:

  • Два лазерных дальномера: hokuyo0 и hokuyo1

  • Две камеры RGB: camera0 и camera1

  • Две камеры глубины: depth_camera0 и depth_camera1

  • Два датчика IMU: imu0 и imu1

  • Модель единичной коробки: unit_box

multiSensorPluginTest.world находится в /home/user/src/GazeboPlugin/world папка. Этот мировой файл включает плагин Gazebo для совместного моделирования с Simulink, используя следующие строки в его.xml тело:

<plugin name="GazeboPlugin" filename="lib/libGazeboCoSimPlugin.so"><portNumber>14581</portNumber></plugin>

Поле имени файла должно указывать на расположение компилируемого плагина Gazebo. Этот путь может быть относительно местоположения, где запущена сама беседка, или вы можете добавить его в путь поиска плагина беседки, запустив:

export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:/home/user/src/GazeboPlugin/export

Настройка совместного моделирования беседки

Откройте окно performCoSimulationWithGazebo модель, которая демонстрирует, как получать данные от этих моделируемых датчиков и как активировать модель блока от Simulink.

open_system("performCoSimulationWithGazebo")

Перед моделированием модели настройте совместное моделирование беседки с помощью блока Gazebo Pacer:

hilite_system('performCoSimulationWithGazebo/Gazebo Pacer')

Откройте блок и щелкните ссылку «Настройка сети и параметров моделирования».

open_system('performCoSimulationWithGazebo/Gazebo Pacer')

В раскрывающемся списке Network Address выберите Custom. Введите IP-адрес компьютера Linux. Порт по умолчанию для беседки: 14581. Установите время ожидания ответа равным 10 секундам.

Нажмите кнопку Test, чтобы проверить подключение к работающему тренажеру «Беседка».

Получение данных датчика

Используйте блок «Чтение беседки» для получения данных по конкретным темам с трех датчиков:

  • IMU, /gazebo/default/imu0/link/imu/imu

  • Лидар Скан, /gazebo/default/hokuyo0/link/laser/scan

  • камера RGB, /gazebo/default/camera0/link/camera/image

Отображение показаний IMU и визуализация изображения Lidar Scan и RGB с помощью функциональных блоков MATLAB ®.

Активировать модель беседки

Для приложения постоянной силы в направлении Z к рамке единиц измерения, приводящей к ускорению на 1 м/с2, используется блок «Gazebo Apply Command». Создать пустое ApplyLinkWrench сообщение с использованием Gazebo Blank Message. Укажите элементы сообщения для применения силы к unit_box/link объект, использующий блок назначения шины. Используйте Беседку Чтение, чтобы вывести позу истинности поля. Смещение коробки за период в 1 секунду должно быть близко к 0,5 метра.

Выполнение совместного моделирования

Чтобы начать совместное моделирование, щелкните Выполнить (Run). Можно также выполнить моделирование с помощью команды Шаг вперед (Step Forward). Шаг назад не поддерживается во время совместного моделирования.

Во время выполнения моделирования обратите внимание, что синхронизируются симулятор «Беседка» и время «Симулинк».

Эта модель визуализирует данные датчика Gazebo с помощью функциональных блоков MATLAB и функций печати MATLAB. Ниже приведен снимок данных изображения, полученных с камеры Gazebo:

Ниже приведен снимок изображения сканирования лидара:

График положения блока единичной коробки в направлении Z можно просмотреть с помощью инспектора данных. Блок отслеживает параболическую форму из-за постоянного ускорения во времени.

Положение блока в конце моделирования - 1,001, что приводит к перемещению 0,5001, что несколько отличается от ожидаемого значения 0,5. Это связано с ошибкой двигателя физики «Беседки». Сделайте максимальный размер шага в физическом двигателе Gazebo меньше, чтобы уменьшить эту ошибку.

Синхронизация времени

Во время совместного моделирования можно приостановить работу Simulink и Gazebo Simulator в любое время с помощью Pause

Примечание: Беседка делает паузу на один шаг впереди симуляции.

Это связано со следующей временной последовательностью совместного моделирования:

Обмен данными датчика и командами включения осуществляется на правильном временном шаге. Исполнение выбирает сначала шаг Gazebo, затем Simulink. Выполнение моделирования по-прежнему выполняется на t + 1, Simulink просто остается на предыдущем шаге, пока вы не возобновите модель.

Следующие шаги