MATLAB+Unreal Engine自动驾驶联合仿真

   这里假设已经安装好了Unreal Engine(版本4.25)MATLAB2021b 以及Visual Studio® 2017or higher 。MATLAB官方文档给的匹配的UE4版本号是4.23,但是似乎有些插件不支持4.23的版本。

主要步骤简单来说就是 matlab自己做了一个ue4插件 ,你要把插件拷到ue4插件文件夹里 然后通过matlab的simulink打开ue4程序 ,步骤是很简单 但是matlab做的太绕了 坑坑洼洼还真不少。

下面直接开始做了

可以参考官方文档

https://www.mathworks.com/help/releases/R2020a/driving/ug/install-and-configure-support-package-for-customizing-scenes.htmlhttps://www.mathworks.com/help/releases/R2020a/driving/ug/install-and-configure-support-package-for-customizing-scenes.htmlicon-default.png?t=LA92https://www.mathworks.com/help/releases/R2020a/driving/ug/install-and-configure-support-package-for-customizing-scenes.html

亦可对照 

手把手超详细介绍MATLAB+RoadRunner+Unreal Engine自动驾驶联合仿真 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/335521741我按照这两篇文章做的时候碰到的问题以及解决方法也会在这里写出来

第一步 安装用于自定义场景的支持包

1,先下载matlab里面的支持包 

      打开MATLAB的Add On/附加功能--->获取附加功能。

   搜索 Automated Driving ToolboxInterface for Unreal Engine 4 Projects 并安装

 

 此插件的功能我就不做过多介绍了,可以看官方文档 这一步基本都没问题。

第二步 将matlab自带的ue4 文件和ue4插件包拷贝出来

1,指定包含项目的支持包文件夹的路径。如果以前下载了支持包,请仅指定最新的下载路径,如此处所示。还要指定要在其中复制项目的本地文件夹目标。此代码指定的本地文件夹为 :C:Loca

supportPackageFolder = fullfile( ...
    matlabshared.supportpkg.getSupportPackageRoot, ...
    "toolbox","shared","sim3dprojects","driving");
localFolder = "C:Local";

看代码和官方注释 这段代码作用是要就创建两个变量 一个变量是ue4插件包的路径 一个是ue4项目的路径

2,将项目从支持包文件夹复制到本地目标文件夹,项目名为 AutoVrtlEnv1

projectFolderName = "AutoVrtlEnv";
projectSupportPackageFolder = fullfile(supportPackageFolder,projectFolderName);
projectLocalFolder = fullfile(localFolder,projectFolderName);
if ~exist(projectLocalFolder,"dir")
    copyfile(projectSupportPackageFolder,projectLocalFolder);
end

运行完这段代码我们可以看到又多了几路径的变量

 并且会提示 找不到  "C:ProgramDataMATLABSupportPackagesR2021btoolboxsharedsim3dprojectsdrivingAutoVrtlEnv" 这个路径 

我顺着路径找  在driving 这个目录下 的确没有 AutoVrtlEnv 

再分析下这段代码 就是很简单的要将 AutoVrtlEnv这个matlab自带的UE4项目文件夹拷贝到C:Loca

R2021b下暴力查找 

最后在C:ProgramDataMATLABSupportPackagesR2021btoolboxsharedsim3dprojectsspkgproject

下找的了

 

 我们就可以把第二段代码改为:

projectFolderName = "AutoVrtlEnv";

projectSupportPackageFolder ="C:ProgramDataMATLABSupportPackagesR2021btoolboxsharedsim3dprojectsspkgproject";

projectLocalFolder = fullfile(localFolder,projectFolderName);

if ~exist(projectLocalFolder,"dir")

copyfile(projectSupportPackageFolder,projectLocalFolder);

end

(或者直接拷贝过去。。。。。)

3,将UE4插件复制到虚幻编辑器的安装路径里

指定包含虚幻引擎安装的本地文件夹。此代码显示编辑器在 Windows 计算机上的默认安装位置。

ueInstallFolder = "C:Program FilesEpic GamesUE_4.23";

将插件从支持包复制到Plugins文件夹中

supportPackageFolder = fullfile( ...
    matlabshared.supportpkg.getSupportPackageRoot, ...
    "toolbox","shared","sim3dprojects","driving");

mwPluginName = "MathWorksSimulation.uplugin";
mwPluginFolder = fullfile(supportPackageFolder,"PluginResources","UE423");
uePluginFolder = fullfile(ueInstallFolder,"Engine","Plugins");
uePluginDestination = fullfile(uePluginFolder,"Marketplace","MathWorks");

cd(uePluginFolder)
foundPlugins = dir("**/" + mwPluginName);

if ~isempty(foundPlugins)
    numPlugins = size(foundPlugins,1);
    msg2 = cell(1,numPlugins);
    pluginCell = struct2cell(foundPlugins);

    msg1 = "Plugin(s) already exist here:" + newline + newline;
    for n = 1:numPlugins
        msg2{n} = "    " + pluginCell{2,n} + newline;
    end
    msg3 = newline + "Please remove plugin folder(s) and try again.";
    msg  = msg1 + msg2 + msg3;
    warning(msg);
else
    copyfile(mwPluginFolder, uePluginDestination);
    disp("Successfully copied MathWorksSimulation plugin to UE4 engine plugins!")
end

这段代码意思就是我前文提到的 :将matlab写的一个插件拷到UE4编辑器的插件文件夹下

但是还是老问题 文件夹根本找不到

看看代码

第一段

ueInstallFolder = "C:Program FilesEpic GamesUE_4.23";

创建一个变量 路径是UE4.23 编辑器的路径(我之前是UE4.23但是运行的时候提示插件版本号不匹配就安装了4.25)

那就改成

ueInstallFolder = "C:Program FilesEpic GamesUE_4.25";

第二段

supportPackageFolder = fullfile( ... matlabshared.supportpkg.getSupportPackageRoot, ... "toolbox","shared","sim3dprojects","driving");

mwPluginName = "MathWorksSimulation.uplugin";

mwPluginFolder = fullfile(supportPackageFolder,"PluginResources","UE423");

uePluginFolder = fullfile(ueInstallFolder,"Engine","Plugins");

uePluginDestination = fullfile(uePluginFolder,"Marketplace","MathWorks");

cd(uePluginFolder) foundPlugins = dir("**/" + mwPluginName);

意思是将 MathWorksSimulation.uplugin这个插件拷贝到 UE4编辑器的Plugins 文件夹下 (用了一大堆字符串拼接)

MathWorksSimulation.uplugin 在C:ProgramDataMATLABSupportPackagesR2021btoolboxsharedsim3dprojectsspkgpluginsmw_simulation

所以此段代码改为

supportPackageFolder = "C:ProgramDataMATLABSupportPackagesR2021btoolboxsharedsim3dprojectsspkgpluginsmw_simulation";

mwPluginName = "MathWorksSimulation.uplugin";

uePluginFolder = fullfile(ueInstallFolder,"Engine","Plugins");

uePluginDestination = fullfile(uePluginFolder,"Marketplace","MathWorks");

cd(uePluginFolder) foundPlugins = dir("**/" + mwPluginName);

后面代码就是报错提醒和文件拷贝 就不做解释了

运行完后会在

 C:Program FilesEpic GamesUE_4.25EnginePluginsMarketplaceMathWorks

看到这个MathWorksSimulation插件文件夹

在C:Local 

看到Matlab自带的UE4工程 AutoVrtlEnv

 到这一步基本就是大功告成了 

接下来只要用Simulink打开ue4项目就行

参考文档

使用 Simulink 和 Unreal Editor 自定义场景 - MATLAB & Simulink (mathworks.com)https://www.mathworks.com/help/releases/R2020a/driving/ug/customize-scenes-using-simulink-and-unreal-editor.html

最后效果

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>