智能交通开发者专栏

carla-创建并导入新map

2020-04-13  本文已影响0人  wangafu

如何创建并导入新的地图

1.创建新的map

所需文件:

2.通过RoadRunner创建新的地图

RoadRunner是一个功能强大的从Vector Zero创建3D场景的软件,使用起来也很简单,在很少的步骤后你就可以创建令人印象深刻的场景,你可以在VectorZreo的网页上下载RoadRunner的教程。
查阅RoadRunner的文档进行安装并开始。
他们也提供了很有用的教程来帮你学习如何使用RoadRunner,最好学习一下!

注意:在地图中心(0,0)创建地图

2.1校验地图

2.2导出地图

在检查没有任何错误之后,是时候将地图导出至CARLA中了。
1.使用主菜单中的CARLA选项来导出场景:
File > Export > CARLA (.fbx + .xml + .xodr)
2.确保Export individual Tiles为没有选中,这样的话就会保证所有的块会足证一个fbx文件,可以方便追踪地图。


3.点击Export按钮。
这会在others文件中产生mapname.fbxmapname.xodr文件
如果想要更深入的了解相关的导出选项,请参考VectorZeros's的文档。

3.导入至Unreal

这一节分为两部分,第一部分展示如何从RoadRunner中导入,第二部分展示如何从其它可以生成.fbx.xodr文件的软件中导入。
注意.fbx.xodr文件必须有相同的文件名,i.e.mapname.fbxmapname.xodr
我们也创建了新的导入资源至Unreal中的方法,请参考这里

3.1从RoadRunner中导入

3.1.1 安装插件

RoadRunner提供了一些的插件来使导入变得简单。
1.将RoadRunner的插件放置在RoadRunner的安装文件夹下:
/usr/bin/VectorZero/Tools/Unreal/Plugins
2.将这些文件复制到CarleUE4的插件目录下:
/carla/Unreal/CarlaUE4/Plugins/
3.重新编译插件
在Windows中重新编译
1.创建项目文件

> UE4_ROOT/GenerateProjectFiles.sh -project="carla/Unreal/CarlaUE4/CarlaUE4.uproject" -game -engine

最后,重启Unreal引擎,并确保检查框中两个插件的开关都是开的Edit > Plugins

3.1.2导入
  1. 使用import按钮导入mapname.fbx文件至/Content/Carla/Maps目录下

    2.设置Scene > Hierarchy TypeCreate One Blueprint Asset状态(默认是这样的)。

3.设置Static Meshes > Normal Import MethodImport Normals状态。


4.点击Import
5.保存当前的层级File > Save Current As...> mapname.
新地图现在应该在Unreal Engine的内容浏览器的其它地图旁边了。

就这样,地图就准备好了,可以上菜了!

3.2从文件中导入

这是导入地图至Unreal中的通用方式。
1.在Ureal的Content/Carla/Maps下面的Add New > Level中创建新的层级。
2.从BaseMapContent/Carla/Maps/BaseMap中复制赵明文件夹及其内容,将其张贴至新的层级中,否则地图中没有光会是一片黑暗。

二进制文件(.fbx)

1.使用import按钮导入mapname.fbx至/Content/Carla/Maps下的新文件夹,确保以下选项是没有被选中的:

2.检查以下选项:

3.将他们全部拖曳至层级中。



4.当Unreal Engine结束加载后,使网格于点(0,0,0)位置处居中,你就获得了Unreal中的地图!可喜可贺!可喜可贺!



5.创建碰撞collision,这样的话车辆和行人才不会掉进深渊里。

6.最后,为了语义分割的地面真实性,将Content/Carla/Maps/mapfolder文件夹导入的静态网格移至Carla/Static之后的文件夹:

OpenDRIVE(.xodr)

1.复制Content/Carla/Maps/OpenDrive文件夹下的.xodr文件
2.打开unreal的层级,并将*Open Drive Actor *拖曳至此,它会读取层级的名称,搜索同名的Opendrive文件并读取之。


然后就是这样,路网信息就加载至了地图中。

4.设置交通行为

一旦所有的设定都加载至了层级中,是时候创建交通行为了。
1.点击* Open Drive Actor*
2.以下面的框处于同样的命令:

4.1交通灯和信号

为了规范交通,交通灯和信号必须被放置到地图中去。
1.拖曳traffic light / sign角色至层级中,并放置它们
2.调整每个交通信号/灯的trigger box直至它覆盖了其发挥效用的道路。
3.如果是交叉路口的交通灯,拖曳traffic light group角色至层级面板中,并绑定包含的所有信号灯。



后面的这些步骤可能需要一些错误和尝试,交通灯定时和激活框可能需要一些调整和测试才能完美的适合模拟的城市环境。
*Example: Traffic Signs, Traffic lights and based stop.*

5.添加行人导航区域

为了使行人网格能够导航,我们使用了Recast & Detour库。https://github.com/recastnavigation/recastnavigation.
1.克隆或下载
Recast & Detour
2.在编译RecastDemo之前,你需要在RecastDemo/Source/MeshLoaderObj.cppMeshLoaderObj contructor中改变m_scale变量,将其从1.0f更改为0.01f

rcMeshLoaderObj::rcMeshLoaderObj() :
    m_scale(0.01f),
    m_verts(0),
    m_tris(0),
    m_normals(0),
    m_vertCount(0),
    m_triCount(0)
{
}

然后编译RecastDemo,可以参考其指引
返回到unreal engine中
1.选择你所希望让“行人”产生和行走所处的网格。

2.将它们以mapname.obj文件导出并保存,File > Export Selected....
3.运行 RecastDemo./RecastDemo

4.先点击Build按钮,然后在编译完成后,点击Save按钮
5.改变RecastDemo/Bin中生成的binary文件的文件名为mapname.bin
6.将mapname.bin文件拖曳至Content/Carla/Maps路径下的Nav文件夹中。
现在“行人”就可以随机的生成,并可以在选择的网格上行走。

技巧

UE4操作

https://carla.readthedocs.io/en/latest/tuto_A_map_creation/#3-importing-into-unreal

上一篇 下一篇

猜你喜欢

热点阅读