Можно настроить связь с Нереальным Engine® при помощи блоков Simulation 3D Message Set и Simulation 3D Message Get:
Simulation 3D Message Get получает данные из Нереальной среды Engine.
Simulation 3D Message Set отправляет данные в Нереальную среду Engine.
Чтобы использовать блоки и связаться с Нереальным Engine, убедитесь, что вы устанавливаете Интерфейс Vehicle Dynamics Blockset™ для Нереального Engine 4 пакета поддержки Проектов. Для получения дополнительной информации смотрите Пакет Поддержки Установки и Сконфигурируйте Среду.
Затем выполните эти шаги рабочего процесса, чтобы настроить модель Simulink® и Нереальную среду Engine и запустить симуляцию.
Рабочий процесс | Описание | |
---|---|---|
Настройте модель Simulink, чтобы отправить и получить данные | Сконфигурируйте Simulation 3D Message Get и блоки Simulation 3D Message Set в Simulink, чтобы отправить и получить коническое местоположение от Редактора Unreal®. Шаги обеспечивают общий рабочий процесс для связи с редактором. Simulation 3D Message Get и блоки Simulation 3D Message Set могут отправить и получить эти типы данных: | |
Настройте нереальный Engine, чтобы отправить и получить данные | Рабочий процесс C++: настройте нереальный Engine, чтобы отправить и получить данные | Определенный Нереальный рабочий процесс C++, чтобы отправить и получить данные о местоположении конуса Simulink.
Чтобы следовать за этим рабочим процессом, необходимо быть удобным кодированием с C++ в Нереальном Engine 4.23. Убедитесь, что у вас есть Визуальный Studio® 2017 или более новый установленный на вашем компьютере. |
Рабочий процесс проекта: настройте нереальный Engine, чтобы отправить и получить данные | Обобщенный Нереальный Редактор копирует рабочий процесс, чтобы отправить и получить данные Simulink. | |
Запустите симуляцию | После того, как вы настраиваете модель Simulink и Нереальную среду Редактора, запускаете симуляцию. |
Если вы уже загрузили и установили Нереальную Версию 4.23 Engine и Интерфейс Vehicle Dynamics Blockset для Нереального Engine 4 пакета поддержки Проектов, перейдите к следующему шагу.
Чтобы установить и сконфигурировать пакет поддержки, смотрите Пакет Поддержки Установки и Сконфигурируйте Среду.
Откройте новую модель Simulink. Соедините блоки как показано.
Используйте эти настройки блока, чтобы сконфигурировать блоки, чтобы отправить и получить конические данные из Нереального Редактора.
Блок | Установки параметров |
---|---|
Constant |
|
Data Type Conversion |
|
Simulation 3D Scene Configuration |
|
Simulation 3D Message Get |
|
Simulation 3D Message Set |
|
В Нереальном Редакторе, на вкладке Edit, выбирают Plugins. Убедитесь что MathWorks Interface
плагин включен. При появлении соответствующего запроса перезапустите Нереальный Редактор.
Создайте Нереальный Engine проект C++. Назовите его TestSim3dGetSet
. Для шагов о том, как создать проект C++, см. Нереальную документацию Engine 4.
В Нереальном Редакторе кликните по вкладке Edit в левом верхнем угле. Выберите Plugins и убедитесь что MathWorks Interface
плагин включен. Если MathWorks Interface
плагин отключен, включите его и перезапустите Нереальный Редактор, если запрошено.
Закройте нереальное.
Если Visual Studio не открыта, откройте ее.
Добавьте зависимость MathWorksSimulation в TestSim3dGetSet
файл типа "build" проекта.
Файл типа "build" проекта, TestSim3dGetSet.Build.cs
, расположен в этой папке: ...\TestSim3dGetSet\Source\TestSim3dGetSet
.
В файле типа "build", TestSim3dGetSet.Build.cs
, отредактируйте линию 11, чтобы добавить зависимость “MathWorksSimulation”:
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "MathWorksSimulation"});
Сохраните изменение. В Visual Studio восстановите TestSim3dGetSet
проект. Закройте Visual Studio.
Совет
Прежде, чем восстановить проект в Visual Studio, убедитесь, что Нереальный не открыто.
Запустите MATLAB®. Измените текущую папку в местоположение Нереального Engine TestSim3dGetSet
проект.
В MATLAB, открытом проект:
editor = sim3d.Editor('TestSim3dGetSet.uproject'); editor.open();
В Нереальном Редакторе, из директории классов C++ MathWorksSimulation, выбирают Sim3dActor.
Щелкните правой кнопкой и выберите Create C++ class derived from Sim3dActor.
Назовите новый Sim3dActor SetGetActorLocation
. Выберите Public. Нажмите Create Class.
Закройте нереальный редактор.
SetGetActorLocation.h
Visual Studio открывается новыми файлами C++ в папке проекта:
SetGetActorLocation.h
SetGetActorLocation.cpp
Убедитесь, что вы закрываете Нереальный Редактор.
В Visual Studio создайте решение TestSim3dGetSet
:
В Проводнике Решения щелкните правой кнопкой по Solution 'TestSim3dGetSet' (2 projects).
Выберите Build Solution.
После сборок решения откройте SetGetActorLocation.h
. Отредактируйте файл как показано.
SetGetActorLocation.cpp
Открытый SetGetActorLocation.cpp
и замените блок кода.
Заменяющий код: установите указатель на параметр
Заменяющий код: доступ к имени тега агента
Дополнительный код: читайте и запись данных в течение времени выполнения
Нажмите F5 на клавиатуре, чтобы запустить решение для Visual Studio TestSim3dGetSet
. Нереальный Редактор открывается.
Примечание
В Нереальном Редакторе сохраните текущий уровень путем нажатия на Save Current (расположенный в левом верхнем) и назовите его TestMap
. Добавьте этот уровень как значение по умолчанию к Настройкам Проекта путем нажатия на Edit> Project Settings> Maps&Modes. Затем выберите TestMap
как значение по умолчанию для Карты Значения по умолчанию Карты и Игры редактора Стартупа. Закройте Настройки Проекта, чтобы сохранить значения по умолчанию.
На вкладке World Outliner проверяйте что новый инстанцированный агент, SetGetActorLocation1
, перечислен.
Нажмите на агента, которого вы создали на Шаге 9: Проверяйте Агента.
В панели Details нажмите на Add Component, чтобы добавить mesh в агента SetConeLocation1
. Выберите Cone
как mesh по умолчанию.
Найдите теги свойства для агента SetConeLocation1
. Добавьте тег путем нажатия на знак "плюс" рядом с 0 Элементами массива. Назовите его ConeLoc
.
На вкладке Details нажмите Cone. Установите конус на X = 0.0
, Y = 0.0
, и Z = 0.0
. Также установите свойство Mobility агента на Подвижный.
Установите родительский класс.
Под Blueprints нажмите Open Level Blueprint и выберите Class Settings.
В Class Options, набор Parent Class к Sim3dLevelScriptActor
.
Сохраните Нереальную сцену Редактора.
Запустите симуляцию. Пойдите, чтобы Запустить Симуляцию.
Вызовите эти функции C++ от Sim3dSetup
, Sim3dStep
, и Sim3dRelease
отправить и получить данные Simulink.
К | Функции C++ |
---|---|
Получите данные | StartSimulation3DMessageReader |
ReadSimulation3DMessage | |
StopSimulation3DMessageReader | |
Отправьте данные | StartSimulation3DMessageWriter |
WriteSimulation3DMessage | |
StopSimulation3DMessageWriter |
Чтобы использовать блок Simulation 3D Message Set, необходимо сконфигурировать сцены в Нереальной среде Engine, чтобы получить данные из модели Simulink:
В Нереальном Редакторе инстанцируйте Sim3DGet
агент, который соответствует типу данных, который вы хотите получить от модели Simulink. Этот пример показывает Нереальному Редактору Sim3DGet
типы данных.
Задайте имя тега агента, которое совпадает с блоком Simulation 3D Message Set параметр Signal name.
Перейдите к проекту уровня.
Найдите метод проекта для Sim3DGet
класс агента на основе типа данных и размера, который вы хотите получить от модели Simulink.
Например, в Нереальном Редакторе, эта схема показывает тот Read Scalar Integer
метод для Sim3DGetInteger
класс агента, чтобы получить int32
тип данных скаляра размера.
Скомпилируйте и сохраните сцену.
Сконфигурировать сцены в Нереальной среде Engine, чтобы отправить данные в модель Simulink:
В Нереальном Редакторе инстанцируйте Sim3DSet
агент, который соответствует типу данных, который вы хотите отправить в модель Simulink. Этот пример показывает Нереальному Редактору Sim3DSet
типы данных.
Задайте имя тега агента, которое совпадает с блоком Simulation 3D Message Get параметр Signal name.
Перейдите к проекту уровня.
Найдите метод проекта для Sim3DSet
класс агента на основе типа данных и размера, заданного блоком Simulation 3D Message Get Data type и параметры Message size.
В данном примере размер массивов равняется 3. Нереальная схема Редактора показывает тот Write Array Float
метод для Sim3DSetFloat3
класс агента, который отправляет тип данных float размера массивов 3.
Скомпилируйте и сохраните сцену.
Примечание
Опционально, для лучшей эффективности, устанавливает Read Array Float Max Num Elements на Num El
в проекте агента.
В Нереальном Редакторе создайте проект уровня, соединяющий Получать и Настроенных актеров.
Установите значения тега агента.
Sim3dGetFloat1
— блок Simulation 3D Message Set значение параметров Signal name, SigName, например, ConeLocSet
Sim3dSetFloat1
— блок Simulation 3D Message Get значение параметров Signal name, SigName, например, ConeLocGet
Установите родительский класс.
Под Blueprints нажмите Open Level Blueprint и выберите Class Settings.
В Class Options, набор Parent Class к Sim3dLevelScriptActor
.
В проекте уровня установите связи, например:
Запустите симуляцию. Пойдите, чтобы Запустить Симуляцию.
После того, как вы сконфигурируете модель Simulink и Нереальную среду Редактора, можно запустить симуляцию.
Примечание
В событии BeginPlay Simulink не получает данные из Нереального Редактора. Simulink получает данные в событиях Tick.
Запустите симуляцию.
В модели Simulink нажмите Run.
Поскольку источник сцен является проектом, открытым в Нереальном Редакторе, симуляция не запускается.
Проверьте, что окно Diagnostic Viewer в Simulink отображает это сообщение:
In the Simulation 3D Scene Configuration block, you set the scene source to 'Unreal Editor'. In Unreal Editor, select 'Play' to view the scene.
Это сообщение подтверждает, что Simulink инстанцировал транспортных средств и других активов в Нереальном Engine 3D среда.
В Нереальном Редакторе нажмите Play. Запуски симуляции в сцене в настоящее время открываются в Нереальном Редакторе.
Можно отправить и получить эти типы данных: double
единственный
int8
uint8
int16
uint16
int32
uint32
, boolean
. Код на Шаге 7: Откройтесь SetGetActorLocation.cpp читает одно значения типа данных (или значения плавающие) от Simulink.
ASim3dActor
| Sim3dRelease
| Sim3dSetup
| Sim3dStep
| Simulation 3D Message Get | Simulation 3D Message Set | Simulation 3D Scene Configuration