
0. 说明如果要将自定义的地图导入到Carla中可用先使用工具 RoadRunner 绘制地图导出相关文件(.fbx.xodr)然后使用 Carla 中的虚幻引擎(Unreal Engine)生成对应的地图。参照Carla官方文档使用Carla中的虚幻引擎生成对应地图有两种方式如果使用包安装的Carla (package version)需要使用 Docker 映像中的虚幻引擎生成地图这种方式只支持 Ubuntu 版本的Carla如果采用源码编译的Carla (source build)参照该文档 Ingesting Maps in CARLA Built From Source这篇文档主要记录使用源码编译的Carla进行地图导入的过程。Carla 版本为0.9.15相关配置为Win11 UE4.26 VS20191.Carla 源码编译注意下面的编译过程是在 Windows 平台下进行编译的主要参考 Carla 文档 Windows build1.1 前置准备1.1.0 配置终端代理由于下面很多 软件 或 库 在墙内访问比较困难经常下载失败因此需要使用代理来访问下载。首先要配置终端的代理可以在cmd终端中通过setx命令永久设置代理。setx http_proxy http://代理地址:端口 /M setx https_proxy http://代理地址:端口 /M/M参数表示修改系统环境变量需要管理员权限。如果不加/M则仅修改当前用户的环境变量。验证打开一个新的终端窗口输入以下命令echo %http_proxy% echo %https_proxy%1.1.1 安装 CMake检查本机是否有CMake打开cmd输入cmake--version如果有安装会输出类似版本信息cmake--version 3.x.x如果没有安装可以在CMake官网下载最好下载 3.15 版本以上的1.1.2 安装 Git在 git官网 下载对应平台的主要用于拉取源码1.1.3 安装 Make检查本机是否有 Make: 打开cmd输入make --version如果有安装会输出版本信息如果没有安装可以在 GNU Project Make 下载对应3.81版本的 注意Make 需要 3.81 版本的1.1.4 安装 7Zip在 7Zip官网 下载对应平台的用于脚本中解压文件1.1.5 Python3 x64最好选择 Python 3.8python 3.8.1 for windows在安装过程中需要确保后续的x64 Native Tools Command Prompt for VS 2019使用的是该版本的 Python因此最好将该版本的 Python 的路径在系统环境变量 Path 中置顶。例如下图后续编译 Carla PythonAPI 需要以下依赖pip3 install --user setuptools pip3 install --user wheel1.1.6 安装 Visual Studio 2019最好能安装 Visual Studio 2019理论上Visual Studio 2022也可以编译但需要手动修改很多脚本中的和版本相关的内容会遇到很多报错。主要的问题在于使用的 toolset不一样VS2019使用msvc-14.2而VS2022使用msvc-14.3。为了避免这些兼容性问题最好安装 Visual Studio 2019 进行编译。VS2019 Official Release Dates and Build numbers 选择最新版本的 Professional 版本安装即可。Q: How do I install a previous version of Visual Studio 2019 Community?A: Here is the official source for all previous versions of all 3 product lines: https://learn.microsoft.com/en-us/visualstudio/releases/2019/history#release-dates-and-build-numbers原回复在安装器中在Installation details中勾选最新的Windows 10 SDK和Windows 11 SDK在Workloads中选择Desktop development with C勾选x64 Visual C Toolset在Workloads中选择.NET desktop development勾选.NET Framework 4.6.2 development tools1.1.7 编译 Unreal Engine首先需要将你的 Github 账号和 Epic 进行关联否则无法拉取 UE 的源码(关联教程)然后获取 UE 的源码在想要存放 UE 的地方(前面的路径尽量短一点因为如果路径太长之后的编译会报错)运行一下命令git clone --depth 1 -b carla https://github.com/CarlaUnreal/UnrealEngine.git下载源码完成后进入Unreal Engine的根目录然后运行以下指令安装依赖.\Setup.bat .\GenerateProjectFiles.bat然后在根目录中使用 Visual Studio 2019 打开UE4.sln项目在左上角 build bar 选择 ‘Development Editor’, ‘Win64’ 和 ‘UnrealBuildTool’然后在右侧资源管理器栏中右键点击UE4选择 生成(Build)然后就开始编译了编译会耗时比较久编译完成后会生成一个UE_ROOT\Engine\Binaries\Win64\UE4Editor.exe可以双击该可执行文件启动。如果打开项目后发现不能项目崩溃点击确定按钮后会自动复制错误报告在记事本或其他文本编辑器中粘贴后报错为ue4editor assertion failed: xxxxxx可以参考Ue4 editor crash in carla 0.9.14 branch可以尝试在终端启动可执行文件在后面加上参数-dx12即.\UE4Editor.exe -dx12在检查UE可用后需要添加环境变量把UE4_ROOT加入用户和系统环境变量中值为安装UE的根目录路径例如下图1.2 编译 Carla1.2.1 获取 Carla 源码使用以下指令获取 0.9.15 版本的Carla的源码注意由于版本更新的缘故官方教程中的指令不一定指向的是你期望版本的代码因此在获取源码的时候最好指定期望版本的分支git clone https://github.com/carla-simulator/carla.git-b 0.9.15 carla-0.9.15下载源码完成后在Carla根目录运行以下命令获取额外的 assets 文件包括地图等。.\Update.bat如果下载失败可能是Carla 存放资源的地址修改了可以修改 Update.bat 的 22 行将set CONTENT_LINKhttp://carla-assets.s3.amazonaws.com/%CONTENT_ID%.tar.gz改为set CONTENT_LINKhttps://carla-assets.s3.us-east-005.backblazeb2.com/%CONTENT_ID%.tar.gz如果还是失败可以在CARLA_ROOT\Util\ContentVersions.txt中找到对应版本的 assets 并下载。1.2.2 编译 PythonAPI client这一步会最后会生成一个.egg文件和.whl文件这些文件可以让你作为客户端(Client)去使用 Python 与 Carla的服务端(Server) 进行交互实际上当你在 Python 脚本中import Carla时系统就会去找这些文件。在进行编译前需要检查一下环境变量UE4_ROOT是否正确设置。**注意**由于一些库的存放位置发生了变化因此需要先在.bat文件中修改对应的地址在编写此文档时 2025.01.07 有效zlib将CARLA_ROOT\Util\InstallersWin\install_zlib.bat第57行修改为set ZLIB_REPOhttps://github.com/madler/zlib/archive/refs/tags/v%ZLIB_VERSION%.zipboost将CARLA_ROOT\Util\InstallersWin\install_boost.bat第57行修改为set BOOST_REPOhttps://sourceforge.net/projects/boost/files/boost/1.80.0/boost_1_80_0.zip/download打开x64 Native Tools Command Prompt for VS 2019终端需要注意之后的编译都需要在该终端窗口中进行在终端中进入 Carla 根目录运行指令make PythonAPI这个过程中会下载各种库文件并对这些库文件进行编译。这些库文件的源码和编译后的文件都存放在CARLA_ROOT\Build\目录下。在过程中可能会遇到下载失败的情况在下载失败导致 make 中断后需要手动删除安装失败的包的源码目录package-src其实里面是空的但如果此时重新 make程序检测到了有该目录就不会重新下载源码build失败后最好把失败的包的package-install目录给删除掉。然后再在 Carla 根目录下重新编译运行make PythonAPI1.2.2.1 在编译中可能会遇到的问题Make PythonAPI fatal error C1083: Cannot open include file OSM2ODR.h No such file or directory:可以参考 Make PythonAPI fatal error C1083: Cannot open include file ‘OSM2ODR.h’ No such file or directory: #3320去掉CARLA_ROOT\Util\BuildTools\BuildOSM2ODR.bat第119行中%OSM2ODR_SOURCE_PATH%两边的引号thibaud-siamercommented on Jan 22, 2024Hello, Removing quotes around %OSM2ODR_SOURCE_PATH% in carla\Util\BuildTools\BuildOSM2ODR.bat line 119 seems to work.原回复1.2.2.2 编译结果PythonAPI 完成编译后会在CARLA_ROOT\PythonAPI\carla\dist目录下生成carla-0.9.15-cp38-cp38-win_amd64.whl和carla-0.9.15-py3.8-win-amd64.egg两个文件1.2.3 编译 Carla Server这一步会联合 Unreal Engine 进行 Carla Server 的编译最终会生成一个 CarlaUE4.uproject可以在 UE4Editor 中打开。在进行编译前最好先安装 RenderDoc这是一个图形调试器之后在打开Carla的UE项目时可能会有弹窗提示选择 RenderDoc 可执行文件。进入RenderDoc官网下载对应版本的 zip 文件 或 安装器。如果下载的是 zip 文件放到想要存放的位置解压即可如果下载的是安装器则根据安装器的引导进行安装主要需要的可执行文件是qrenderdoc.exe和renderdocui.exe然后进行 Carla Server 的编译打开x64 Native Tools Command Prompt for VS 2019终端运行指令make CarlaUE4Editor这句指令会生成一个 CarlaUE4.uproject1.2.3.1 在编译中可能出现的问题第一次打开项目时可能会提示选择RenderDoc执行文件进入之前安装好的RenderDoc目录选择qrenderdoc.exe或renderdocui.exe作为RenderDoc执行文件qrenderdoc.exe是 RenderDoc 的现代用户界面基于 Qt 框架开发它可以在 Windows、Linux 和 macOS 上使用。renderdocui.exe是 RenderDoc 的旧版用户界面基于原生 Windows 界面Win32 API智能在Windows 上运行。打开项目后发现不能项目崩溃点击确定按钮后会自动复制错误报告在记事本或其他文本编辑器中粘贴后报错为ue4editor assertion failed: xxxxxx可以参考Ue4 editor crash in carla 0.9.14 branch在执行.\UE4Editor.exe后加入参数-dx12即使用 D3D12对应编译脚本中的位置在CARLA_ROOT\Util\BuildTools\BuildCarlaUE4.bat中的第210行修改为%UE4_PROJECT_FOLDER%CarlaUE4.uproject %EDITOR_FLAGS% -dx12prabanjanKANcommented on Feb 14, 2024Launching the UE4Editor.exe file with -dx12 argument (like: UnrealEngine\Engine\Binaries\Win64 .\UE4Editor.exe -dx12) resolved this error for me in windows 11.If -dx12 argument doesn’t work, try -dx11 or -vulkan or -opengl.原回答2.Carla 自定义地图导入2.1 使用RoadRunner绘制地图【参考资料】手把手教你使用 RoadRunner 为自动驾驶模拟设计 3D 场景RoadRunner 官方教程文档Create Parking Garage2.2 导入Carla生成自定义地图主要参考 Carla 文档 Ingesting Maps in CARLA Built From Source将 RoadRunner 生成的mapName.xodr和mapName.fbx放进 carla 根目录下的Import目录下然后在 carla 根目录下使用x64 Native Tools Command Prompt for VS 2019打开终端运行命令make import ARGS--packagepackage_name。过程中可能会让选择Python解释器最好选择在编译Carla时使用的Python解释器最终会在CARLA_ROOT\Unreal\CarlaUE4\Content\(CARLA_ROOT是carla根目录)目录下生成map_package文件夹其中包含了对应地图相关的文件2.3 将自定义地图导出为包 (Distribution package)主要参考 Carla 文档 Create distribution packages for assets为了让 使用包安装的Carla (Build from package) 也能使用自定义地图需要将自定义地图导出为包在 carla 根目录下使用x64 Native Tools Command Prompt for VS 2019打开终端运行命令make package ARGS--packagesmap_package这会生成CARLA_ROOT\Build\UE4Carla\目录并把对应的包的压缩文件存放在该目录下2.4 将自定义地图导入到包安装版本的Carla主要参考 Carla 文档 Ingesting Maps in a CARLA package在 windows 下将包的压缩文件解压提取到Carla根目录在 ubuntu 下将包的压缩文件(需要是tar.gz格式)放入 Carla 根目录下的Import目录然后在根目录下运行命令./ImportAssets.sh。 这个指令会解压包的压缩文件并将其中的内容放入对应的目录下2.5 查看可使用的地图并切换地图首先启动 Carla然后可以使用如下的脚本查看可使用的地图并切换地图importcarla clientcarla.Client(localhost,2000)client.set_timeout(10.0)# 列出可用地图available_mapsclient.get_available_maps()print(Available maps:,available_maps)# 上面会打印出可用的地图的路径将想要切换的地图的路径作为下方 client.load_world()的参数# 以 /Game/map_package/Maps/round_parking_lot/round_parking_lot 为例client.load_world(/Game/map_package/Maps/round_parking_lot/round_parking_lot)