在Carla中添加新的地图

参考链接:

https://carla.readthedocs.io/en/latest/tuto_A_add_map/

在Carla中添加新的地图

使用者可以创建自己的地图并且在carla中使用地图。地图的创建于carla是相当的独立,尽管如此,地图的导入过程是自动的。因此,新创建的地图可以在carla中直接应用。

• 介绍

• 利用RoadRunner(以下简称:RR)创建一个地图

• 将地图从RR中导出

• 地图导入carla的包中

• 从源代码中导入地图

• 修正/生成行人的导航

介绍

由于其简洁性,RR被推荐用作地图的创建。关于地图的创建,将在接下来的部分进行介绍,生成的地图应该由一个后缀为.fbx文件和一个后缀为.xodr的文件组成,分别包含网络和路网信息。

Roadrunner的安装见:
https://blog.csdn.net/weixin_45275937/article/details/109016432

对地图的导入过程进行了大大的简化,最大限度地减少了用户的干预。基于上述原因,一些步骤以及被自动化了。

• 打包.json文件和文件夹结构。
被导入的包中通常需要一个特定的文件夹和一个描述他们的.json文件,可是,对于地图的导入,上述文件在导入过程中自动创建,
• 交通标志和交通灯。
当运行时,模拟器将会自动生成交通灯,停止和上行标志,上述内容的创建是依据.xodr文件中所定义的信息。道路图中的其他地标不会实际出现在场景中,但是可以通过API对其进行查询。
• 行人的导航。
导入过程会产生一个描述行人运动的后缀为.bin文件夹,它是基于OpenDRIVE地图中的人行道和人行横道。这只能从源代码构建时进行修改。

重要:

如果地图包含了除.fbx和.xodr之外的额外元素,则必须手动准备包

地图的导入过程是不同的,这取决于包是被放入carla文件夹中,还是被放入编译后的文件夹中。

还有其他方法可以将地图导入到CARLA中,但现在已经不推荐了。它们要求用户手动设置地图。尽管如此,由于它们对于用户希望定制特定设置的特定情况可能非常有用,因此在本教程的最后一节中列出了它们。

• 利用RoadRunner(以下简称:RR)创建一个地图

RR是一款强大的、可获得的建模软件,从零向量到3D场景。在对应的网站是有试用版的软件和安装指南。过程是相当的直接,但也有一些事情需要被考虑在内。

将地图居中,坐标(0,0)
创建地图的定义,请参照官方教程。
检查地图验证。仔细观察所有的交叉口链接几何图形。

在这里插入图片描述当创建好地图后,点击OpenDRIVE Preview Tool来对opendrive的路网进行可视化,对路网的所有一切再次进行检查。地图被导出后是不能被再次修改的。

在这里插入图片描述注意:

预览工具使得测试地图的完整性有了保证。如果交叉口有错误的,点击Maneuver Tool和Rebuild Maneuver Roads。

• 将地图从RR中导出

  1. Export the scene using the CARLA option. File/Export/CARLA(.fbx+.xml+.xodr)
  2. Leave Export individual Tiles unchecked. This will generate only one .fbx with all the pieces. It makes easier to keep track of the map.
  3. Click Export.

This will generate a mapname.fbx and mapname.xodr files within others. There is more detailed information about how to export to CARLA in VectorZero’s documentation

警告:
确保.xodr文件和.fbx文件有相同的文件名。

• 地图导入carla的包中

这是将地图导入到CARLA包中的推荐方法。它将运行一个Docker映像的虚幻引擎导入文件,并导出作为一个独立的包。Docker映像需要4h和400GB来构建。然而,这只是第一次需要。

  1. 建立一个虚幻引擎的Docker图像(参照链接:https://github.com/carla-simulator/carla/tree/master/Util/Docker)

  2. 更改输入文件夹的权限。如果没有提供.json文件,Docker将尝试在输入文件夹中创建它。要成功,该文件夹必须为其他文件夹启用所有权限。

     #Go to the parent folder, where the input folder is contained
     chmod 777 input_folder
    

注意:

如果包是被手动准备的,这是非必要的,并且包含.json文件。

2.运行脚本生成/运行地图。
在~/carla/Util/Docker文件夹下,有个与之前创建的Docker图片连接的脚本,并自动进行文件的提取。它仅需要输入和输出文件的路径及要导入的包的名称。如果没有提供.json,名称必须是map_package。

python3 docker_tools.py --input ~/path_to_input_folder --output ~/path_to_output_folder --packages map_package

如果没提供–package <package_name>,Docker将会生成一个carla的包。

3.定位包。

Docker应该在输出路径中生成了一个名为map_package.tar.gz的包。这是资产的独立包。

4. 将包导入carla

•在Windows上解压包到WindowsNoEditor文件夹。
•在Linux上,将包移动到导入文件夹,并运行脚本导入它。

cd Util
./ImportAssets.sh

5.改变包的名称,

carla中那两包不允许有相同的名字,去Content文件夹下并找到那个包,如有必要,更改名称以使用标识它的名称。

• 从源代码中导入地图

如果使用CARLA的源版本,这是要使用的方法。将要导入的地图放在Import文件夹下。脚本将进行提取,但是行人导航必须在此之后生成。确保对于导入的每个映射,.xodr和.fbx文件的名称相同。否则,脚本将无法将它们认定为地图。

需要设定2个参数。
.包的命名
默认的情况下,默认情况下,脚本将map摄取到一个名为map_package的包中。这可能会在第二次摄取时导致错误,因为两个包不能有相同的名称。强烈建议更改包的名称。

ARGS="--package package_name"

使用carla的材料
默认情况下,导入的地图将使用CARLA材质,但这可以通过一个标志来改变。

ARGS="--no-carla-materials"

检查导入文件夹中的每个地图是否有.fbx和.xodr,然后进行提取。

make import ARGS="--package=package_name --no-carla-materials"

导入后,只生成行人导航。不过,在此之前可以执行一个可选步骤。

•创建新的生成点。

将它们放置在路面上,大约0.5/1m,这样轮子就不会与地面相撞。这些将在诸如spawn_npc.py这样的脚本中使用。

• 修正/生成行人的导航

行人导航是使用.bin管理的。但是,在生成它之前,需要做两件事。

添加人行横道网格。
在.xodr中定义的人行横道保留在地图的逻辑中,但不可见。创建一个平面网格,延伸到连接的人行道上。将其与地面重叠,禁用其物理效果和渲染效果。


要生成新的人行横道,请将网格名称更改为Road_Crosswalk。如果人行横道在.xodr上,避免这样做。否则,它将被复制。

在这里插入图片描述
•定制地图。
通常是在导入后修改地图。添加了树木、街灯或草地等道具,可能会干扰行人导航。确保在生成行人导航之前得到了预期的结果。否则,它将不得不再次生成。

现在地图的版本已经完成,现在是时候生成行人导航文件了。

  1. 选择Skybox对象并向其添加标签 NoExport。否则,地图将不会被导出,因为尺寸会太大。

在这里插入图片描述
2. 检查网格的名称。默认情况下,行人将能够在人行道、人行横道和草地上行走(对其余部分的影响较小)。

•	Sidewalk = Road_Sidewalk.
•	Crosswalk = Road_Crosswalk.
•	Grass = Road_Grass.

在这里插入图片描述3. Name these planes following the common format Road_Crosswalk_mapname.
4. Press G to deselect everything, and export the map. File > Export CARLA… A map_file.obj file will be created in Unreal/CarlaUE4/Saved.
5. Move the map_file.obj and the map_file.xodr to Util/DockerUtils/dist.
6. Run the following command to generate the navigation file.
• Windows

build.bat map_file # map_file has no extension

• Linux

./build.sh map_file # map_file has no extension
  1. Move the .bin into the Nav folder of the package that contains the map.
  • 1
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值