找回密码
 立即注册
查看: 571|回复: 0

RoadRunner Scenario+CARLA联合仿真

[复制链接]
发表于 2022-8-24 11:37 | 显示全部楼层 |阅读模式
2022-08-12,虽是个人账号,欢迎同行大咖投稿交流!
本文作者:MathWorks 王鸿钧
=====================================================
CARLA 是一个当前流行的开源自动驾驶仿真软件,它可以运行一系列自动驾驶的仿真任务,并且用户可以根据自己的需求进行定制。CARLA基于虚幻引擎(Unreal Engine)构建,使用 OpenDRIVE 标准(目前为 1.4)来定义道路和城市环境,可通过 Python 或 C++的 API 来控制仿真。
在CARLA文档中,推荐用户使用RoadRunner作为编辑器,用来设计大型地图,然后通过插件将地图导入CARLA中用于仿真。而MathWorks在RoadRunner R2022a中也推出了一个新的自动驾驶场景仿真工具RoadRunner Scenario,用户不但可以用RoadRunner编辑道路地图,导出为OpenDRIVE标准格式(目前支持1.4到1.6),还可以在RoadRunner Scenario中添加车辆,创建和仿真动态场景,并导出为OpenSCENARIO标准格式(目前支持1.x和2.0)。RoadRunner Scenario提供了一个场景仿真引擎(SSE)后台服务,用户可以借用MATLAB、Simulink或CARLA中已有的车辆行为模型,或者基于这些环境开发自定义的车辆行为,作为客户端添加到自动驾驶仿真中。使用RoadRunner Scenario与MATLAB、Simulink或CARLA联合仿真,可以扩展用于测试自动驾驶的地图和场景库,便于集成自动驾驶算法,大大提高自动驾驶的测试效率。



图:RoadRunner Scenario场景仿真引擎

接下来我们就通过一个简单的例子,讲解如何实现RoadRunner Scenario与CARLA的联合仿真。我们使用的软件包括CARLA 0.9.13,以及RoadRunner R2022a(文中的小版本更新到Update 4),开发环境为Windows 10。RoadRunner支持Linux,你同样可以在Ubuntu 18.04或20.04下实现RoadRunner Scenario与CARLA的联合仿真。
如果之前没有在电脑上安装过任何相关软件,考虑到下载速度和计算机性能影响,以下流程可能需要消耗6小时以上时间,在开始前请一定要合理安排好手头的工作。不计算依赖项,RoadRunner Scenario和CARLA相关文件约需占用200 GB硬盘空间。计算机硬件的最低配置要求建议以Unreal Engine为准:
https://docs.unrealengine.com/4.26/zh-CN/Basics/InstallingUnrealEngine/RecommendedSpecifications/





图:RoadRunner Scenario与CARLA的联合仿真


  • 从源代码编译CARLA
为了与RoadRunner Scenario联合仿真,需要在CARLA中添加一系列RoadRunner插件,因此推荐用户从源代码编译CARLA,而不是安装Release版本。从源代码编译CARLA的另一个好处是,后期可以很方便地打包发布含有RoadRunner地图的Package,不仅包含OpenDRIVE地图,还有完整的3D建模,可以在CARLA侧使用各种传感器模型,仿真感知算法。
CARLA文档中已经较为详细地介绍了从源代码编译的方法,可参考以下链接:
https://carla.readthedocs.io/en/0.9.13/build_windows/
这里不再重复介绍相关流程,只对几个比较容易出错的点进行说明:
a). 笔者使用的是Python 3.9,不要忘记安装相关依赖项,包括setuptools和wheel。
     pip3 install --upgrade pip
     pip3 install --user setuptools
     pip3 install --user wheel
b). CARLA工程的文件夹应尽量靠近磁盘根目录,如C:\CARLA;
c). 下载和编译Unreal Engine前,需要事先将GitHub账号关联到Unreal Engine账号,参考:https://www.unrealengine.com/zh-CN/ue-on-github
d). 从Git上Clone下来CARLA代码后,Update.bat运行时间会比较长,文件存放位置是Unreal\CarlaUE4\Content\Carla,如果没有安装7zip,下载完成后需要手动解压这些Content文件;
e). 编译CARLA必须在x64 Native Tools Command Prompt for VS 2019命令行窗口下进行,其中make PythonAPI过程中可能会出现下载zlib-1.2.11依赖项失败的错误,这是因为引用的链接失效,可以手动下载以下链接,解压后重新打包为zip,保存到Build目录中(重新运行make PythonAPI前需要清空文件夹中其他内容):
https://zlib.net/fossils/zlib-1.2.11.tar.gz
提示Python API编译完成后,不要忘记检查一下在PythonAPI\carla\dist目录中是否成功生成了.egg和.whl文件;




f). 最后一步make launch成功后,第一次启动Unreal Editor的时间会比较长,在笔者的电脑上约需要40分钟,请耐心等待,进入Unreal Editor后还会对当前显示的场景进行编译shader,视计算机配置不同也会消耗大量时间。
2. 编译RoadRunner插件
a). 从MathWorks官网上下载RoadRunner用于Unreal Engine的插件包:
         https://www.mathworks.com/supportfiles/roadRunnerPlugins/RoadRunner_Plugins.zip
b). 将插件包解压后,复制Unreal\Plugins下的所有文件夹到CARLA的插件目录中,即Unreal\CarlaUE4\Plugins文件夹;


c). 关闭Unreal Editor,重新编译CARLA,打开x64 Native Tools Command Prompt for VS 2019命令行窗口,在carla目录下运行make launch;
d). 在Unreal Editor中点击Edit->Plugins,确认RoadRunner插件已被正确安装。


3. 导出RoadRunner地图到CARLA
a). 安装并激活RoadRunner R2022a(包含RoadRunner Scenario);
b). 启动RoadRunner,依次点击New Scene,New Project,新建一个RoadRunner工程,并选择Include Asset Library;
c). 我们打开一个RoadRunner自带的地图,选择file->open scene...并打开ScenarioBasic.rrscene;


d). 选择file->export...->CARLA (.fbx, .xodr, .rrdata.xml),在File path中填写导出地图的存储位置和文件名,依次点击Save,Export;




e). 在目标文件夹中可以看到对应的导出文件,其中.fbx是地图的3D建模,.xodr是OpenDRIVE文件,由于我们没有修改设置,默认是1.4版本。



4. 在CARLA中导入RoadRunner地图
a). 切换到CARLA编辑器,即make launch后启动的Unreal Editor,在下方Content目录中新建文件夹RoadRunner,以及两个子文件夹Maps和Static;


b). 右击Static,选择Add/Import Content->Import to /Game/RoadRunner/Static,打开刚才保存的文件ScenarioBasic.fbx;




c). 在弹出的MathWorks RoadRunner Import Options窗口中,点击Import,并如下图所示,在FBX Scene Import Options中修改几个关键选项,最重要的是在选项卡Scene中选择Create one Blueprint asset和Invert Normal Maps,以及在选项卡Static Meshes中选择Import Normals,然后点击Import;








d). 右击导入的FbxScene_ScenarioBasic,选择Edit...,在弹出对话框的左上角Components选中DefaultSceneRoot,在右侧Details的Transform选项卡中修改Mobility为Static,即设置为静态地图,然后点击上方的Compile并Save;




e). 从主菜单中选择File->Save Current As...,将地图文件ScenarioBasic.umap保存在Maps文件夹中。




5. 打包发布含RoadRunner地图的CARLA工程
a). 选择画面上方的Settings->Project Settings,对CARLA工程进行设置;


b). 在设置窗口左侧导航栏中,选择Project下的Packaging,右上角有一个眼睛形状的按钮,会隐藏一些选项,我们需要选中Show All Advanced Details;


c). 找到选项List of maps to include in a packaged build,将我们导入的地图/Game/RoadRunner/Maps/ScenarioBasic添加进去,在原始的CARLA工程中已经添加了很多其他地图,如果仿真中不需要,我们可以将其删除;


d). 回到编辑器主界面,从主菜单中选择File->Save All,然后关闭编辑器。
e). 回到x64 Native Tools Command Prompt for VS 2019命令行窗口,运行make package,这一步第一次运行耗时会比较长,可能需要数个小时;





f). 浏览编译完成后显示的Package发布目录,可以在WindowsNoEditor文件夹下找到生成的CarlaUE4.exe可执行文件,这就是可用于联合仿真的CARLA可执行文件。


6. 将OpenDRIVE地图文件复制到CARLA联合仿真目录
a). 从上一步编译生成的CARLA仿真工程出发,在
\CarlaUE4\Content\Carla\Maps\OpenDRIVE目录下找到ScenarioBasic.xodr,这是CARLA存放OpenDRIVE地图文件的默认位置;


b). 将这个地图文件复制到\CarlaUE4\Content\RoadRunner\Maps\OpenDRIVE目录下,若之前没有这个文件夹,需要手动新建一个,这是联合仿真工具搜索OpenDRIVE地图文件的目录。



7. 配置RoadRunner Scenario与CARLA的联合仿真环境
a). 设置环境变量CARLA_ROOT,将其定位到刚才发布的CARLA Package中含有CarlaUE4.exe可执行文件的目录;


b). 配置RoadRunner的仿真环境文件,位于(<username>需替换为你的用户名)
C:\Users<username>\AppData\Roaming\MathWorks\RoadRunner\R2022a\Scenario\Config\SimulationConfiguration.xml
找到标记<Platform name="CARLA">,将可执行文件的路径修改为刚才发布的Package中CarlaUE4.exe的位置,在笔者的开发环境中修改为
<ExecutablePath>C:\CARLA\carla\Build\UE4Carla\0.9.13-1-g8854804f4-dirty\WindowsNoEditor\CarlaUE4.exe</ExecutablePath>


c). 安装RoadRunner Scenario与CARLA联合仿真的Python依赖项,最好也升级一下protobuf库,避免protobuf版本过老导致联合仿真工具报错;
pip3 install --upgrade pip
pip3 install --user psutil
pip3 install --user --upgrade protobuf
d). 找到RoadRunner安装目录下的CARLA联合仿真示例目录,默认位置是
C:\Program Files\RoadRunner R2022a\bin\win64\Tools\CARLA\examples,
以管理员模式运行一次setup.bat,然后就可以在C:\Program Files\RoadRunner R2022a\bin\win64\Tools\CARLA\SimulationClient目录下看到一个自动生成的sse文件夹,RoadRunner Scenario与CARLA的联合仿真环境就配置好了。
8. 运行RoadRunner Scenario与CARLA的联合仿真
a). 在打开的RoadRunner编辑器窗口中,右上角从Scene Editing切换到Scenario Editing,进入场景编辑模式,可以向其中添加车辆并配置动态行为;


b). 在下方的Library Brower中,浏览到Assets->Vehicles文件夹,我们选中一辆CompactCar作为前车,然后用鼠标左键拖拽到交叉路口的左转车道上;


c). 选中车辆的状态下,在远处的道路上点击鼠标右键,就建立了当前车辆的一段跟随当前车道的匀速行驶轨迹,车辆会在路口根据当前车道自动转向;


d). 我们再添加一辆Sedan作为后车,期望通过由CARLA API定义的Python脚本实现同样的匀速车道跟随逻辑,跟随前车行驶;


e). 在下方的Library Brower中,浏览到Assets->Behaviors文件夹,选中CARLA行为模型,在右侧属性栏中输入模型地址..\examples\CarlaEgoVehicle1.py,这里采用了基于RoadRunner Scenario联合仿真工具的相对路径,当然你也可以使用绝对路径;


f). 选中后车,将CARLA行为模型拖拽到后车右侧属性栏的Behavior空格中,这样就完成了后车的行为模型指定,而前车的Behavior一栏是留空的,代表前车的行为完全由RoadRunner Scenario来指定;


g). 为了便于区分,我们还可以修改后车的Color,将其改为红色;


h). 在上方工具栏中,切换到Simulation Tool,即可点击右边的Play按钮开始与CARLA的联合仿真,自动运行Scenario Simulation Engine,开启CarlaUE4.exe并切换到一致的地图;然后RoadRunner Scenario中的前车和CARLA中的后车开始行驶,整个仿真过程拥有良好的同步性,直到后车碰撞停止的前车,仿真自动中止;通过调整窗口大小,可获得良好的可视化效果;






i). 用户可以配置联合仿真中RoadRunner Scenario所选车型对应的CARLA车辆3D模型,配置文件actors.json同样在CARLA联合仿真示例目录,默认位置即C:\Program Files\RoadRunner R2022a\bin\win64\Tools\CARLA\examples;以上示例RoadRunner Scenario中CompactCar对应的CARLA车型为Mini Cooper S,Sedan对应的CARLA车型为Lincoln MKZ 2020,你可以根据自己的需求进行修改,从CARLA的Blueprint库中找到想使用的车型名称vehicle.*.*,替换配置文件中的原有车型,CARLA 0.9.13提供的车型列表可从以下链接查找:
https://carla.readthedocs.io/en/0.9.13/bp_library/ (找到vehicle目录)




在RoadRunner Scenario与CARLA的联合仿真中,没有交通参与者的数量限制,只要计算机的性能允许,就可以添加任意数量的车辆。用户可以在RoadRunner Scenario中添加预先设计好的目标车辆行为,然后从CARLA添加独立的自动驾驶车辆进行仿真,测试自动驾驶功能,例如直接在以上示例的后车中添加AEB功能进行测试。在联合仿真的工作流程中,RoadRunner Scenario的易用性和CARLA的灵活性均可以得到极大的有效利用。
除了单独联合仿真,RoadRunner Scenario还可以同时与多个软件进行联合仿真,包括MATLAB、Simulink和CARLA。当然,建立RoadRunner Scenario与CARLA联合仿真的过程略显繁琐,相比之下RoadRunner Scenario与MATLAB或Simulink的联合仿真就非常简便了,感兴趣的读者不妨去MathWorks官网上探索一下。
相关链接:
RoadRunner:https://ww2.mathworks.cn/products/roadrunner.html
RoadRunner Scenario:https://ww2.mathworks.cn/products/roadrunner-scenario.html
CARLA:https://carla.org/

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-10 04:11 , Processed in 0.129391 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表