admin管理员组

文章数量:1593159

Windows10下源码编译搭建Carla环境

文章目录

  • Windows10下源码编译搭建Carla环境
    • 相关软件安装
      • 需要的软件及版本
      • 安装CMake
      • 安装Git
      • 安装Make
      • 安装Python
      • 安装Visual Studio 2017
      • 安装Unreal Engine
    • 源码编译
      • Git克隆仓库
      • 下载场景资源
      • 开始编译
        • 编译服务端
          • 错误一
          • 错误二
          • 错误三
          • 错误四
          • 编译结束
        • 编译客户端
          • 错误一
          • 错误二
          • 错误三
          • 错误四
          • 编译结束
      • 相关资源分享

首先,本教程针对的是Carla 0.9.10版本,从0.9.11版本开始,Carla开始使用专属的虚幻引擎,也就是对原版的引擎进行了一些针对性的修改,因此不能直接用Epic商城下载的引擎来运行0.9.11及以上的Carla环境,相比之下0.9.10或往下的版本,依旧兼容Epic官方提供的虚幻引擎版本,因此下载安装更方便。此外本教程大部分内容是基于Carla官方文档编写的: Windows build - CARLA Simulator,大家也可以参考。

其次,对编译部分报错内容的描述和解决方法我自己也搜索了很多,再加上了自己的一些理解,但肯定有遗漏和不严谨的地方,欢迎大家给予纠正。

相关软件安装

需要的软件及版本

  • CMake–3.19.0
  • git–2.36.1
  • Make–3.81
  • Python–3.7.8
  • Visual Studio–2017
  • Unreal Engine–4.24.3
  • 留个100GB左右的磁盘空间来安装上述软件

安装CMake

  • 下载地址:Download | CMake

  • 具体安装教程可参考:Windows下CMake安装教程_好好学图算的博客

  • 最关键的是安装时勾选将CMake添加到环境变量中的选项,可在cmd命令行中输入cmake来验证是否安装成功。

安装Git

  • 下载地址:Git - Downloading Package
  • 找到Windows64位版本:
  • 具体安装教程可参考:Win10 安装 Git 详细教程 BugMiaowu2021的博客
  • 安装完成后,正常情况下git已经加入到环境变量中了,同样可以在cmd命令行中输入git来验证是否安装成功。

安装Make

  • 下载地址:Make for Windows
  • 对应版本如图所示,点击Setup下载安装程序:
  • 运行安装程序,选择一个目录进行安装:
  • 安装完成后,进入安装目录(以我的为例) D:\Make\GnuWin32\bin,并复制该路径,打开环境变量设置页面(打开方法),在系统环境变量Path中输入复制的路径。
  • 完成了上述三个软件的安装后,我们的环境变量Path中应该已经有了如下路径:

安装Python

  • 下载地址:Download Python

  • 选择版本,点击Download进入下载页面,选择 Windows x86-64 embeddable zip file进行下载:

  • 具体安装过程可参考:超详细的Python安装和环境搭建教程_Pymili的博客

  • 安装完成后要确保Python已加入到环境变量中。

  • 打开cmd分别输入下面两行代码,判断输出的两个python版本是否一致,不一致说明你电脑不止一种python环境,一定要让它们一致,不然后期编译过程中会出现问题。

     py -v
     python -v
    

安装Visual Studio 2017

由于本人此前已安装过VS2019,因此只需要在此基础上加装VS2017,如果是新安装,可参考Visual Studio 2017下载地址和安装教程,安装完成后,打开Visual Studio Installer:

根据Caral官方文档,我们的VS2017有几个组件是必须要安装的,在Installer页面选择并点击VS2017版本对应的“修改”按钮:

进入修改页面,在工作负荷中勾选C++桌面开发:

在单个组件页面搜索 Windows8.1 SDK并勾选:

选择完成后,点击下方的“修改”按钮,系统就开始为你下载安装(如果用代理服务器下载速度会更快一些):

安装Unreal Engine

安装Unreal Engine(虚幻引擎),需要先下载Epic游戏客户端,还没有下载的小伙伴,可以在这里进行下载安装。安装完成后打开客户端:

打开 Epic Games Launcher,先别看游戏了,点击“虚幻引擎”,然后在右侧点击“库”进入引擎版本管理界面:

点击“引擎版本”右侧的加号,选择4.24.3版本后点击安装(我这里已经安装过了):

为了在carla与虚幻引擎之间建立连接,我们还需要将虚幻引擎安装目录添加到系统环境变量当中,首先找到自己虚幻引擎安装的目录并复制路径,比如我的在这里:

打开系统环境变量,创建变量UE4_ROOT,值为刚复制的路径,添加后如下:

源码编译

Git克隆仓库

进入要安装Carla的目录,鼠标右键选择“Git Bash Here”,输入以下代码:

git clone https://github.com/carla-simulator/carla --branch 0.9.10

点击回车后,git就会开始拉取Carla代码仓库0.9.10分支中的代码,耐心等待:

注意!从Carla 0.9.12 开始,需要把Epic账户与github账户进行绑定才能进行git clone操作,因此克隆新版本时这里会多一个绑定的步骤。

下载场景资源

包含小镇模型,还有各种车辆、人物模型,各种蓝图类等。

  • 下载地址: carla 0.9.10 场景资源 ,下载文件12GB左右,如果嫌下载速度慢可以用代理服务或者用我在文末分享的下载好的数据,如果需要下载其他版本的资源,可在 carla安装目录/Util/ContentVersions.txt 文件里寻找。
  • 下载完成后解压文件,文件内容大概这样:
  • 将解压后的内容复制到:Carla安装目录/Unreal/CaralaUE4/Content/Carla文件夹下,如果没有Carla文件夹,请新建一个,具体如下(图中carla就是我的安装目录,这里的安装目录指的是我们上一步git克隆仓库的目录):

开始编译

现在一切准备就绪,因为前期做了很多工作,也包括系统环境变量的更改,因此建议先重启一下电脑。重启以后,进入编译步骤,也是出错最多的步骤。

  • 首先介绍一下编译用到的命令行工具,叫“适用于VS2017的本机工具命令提示”,如下图所示,我们的make命令需要在这里输入。有时候我们需要以管理员身份启动该工具,这时鼠标右键点击“以管理员身份运行”即可。

    有时候我们还需要在某个目录下使用命令工具,这时先启动工具,再用cd方法更换工作目录:
编译服务端

这里的服务端其实就是UE的编辑器,但编辑器嵌入了Carla服务,当播放某个场景时,Carla服务就会随机启动,这时我们就可以通过代码给这个服务端口发送指令,Caral服务器接受指令后,就把处理结果展示在编辑器上。

  • 以管理员身份启动上一步介绍的命令行工具,进入Carla根目录(安装目录,下文我统一使用F:/carla作为根目录),输入以下命令
    make launch
    
  • 从这到编译结束可能会报各种各样的错误,下面我会给出我遇到的几个问题以及解决方法,若有其他问题可在评论区留言或自行搜索,如果可以的话,建议全程开启代理服务。
错误一
  • 描述

    CMake Error: The source directory “F:/carla/Build/zlib-source” does not appear to contain CMakeLists.txt.

  • 截图

  • 报错原因

    • zlib下载失败了,因为按理来说zlib下载完成后,carla/Build/zlib-source目录下有CMakeLists.txt才对,编译之前carla会下载编译过程中会用到的工具包并自动解压放在Build目录下,zlib就是其中一个工具。
  • 解决方法

    • 目前我的解决方法是直接人工下载对应数据包并放在相应位置,当然网上还有一种方法是修改 carla/Util/InstallersWin/install_zlib.bat文件内容,大家也可以研究一下,若成功了,可在评论区分享一下。
    • 首先在zlib官方下载zlib-1.2.11:Index of /fossils (zlib)
    • carla/Build下创建新文件夹:zlib-source,当然上一步报错之前应该创建好这个文件夹,只是没下载成功。
    • 解压下载的文件将文件夹zlib-1.2.11里的所有内容复制到zlib-source目录下。
    • 重新运行 make launch,这时编译应该能顺利运行一会儿。
错误二
  • 描述

    CMake Error: The source directory “F:/carla/Build/gtest-src” does not appear to contain CMakeLists.txt.

  • 截图

  • 报错原因

    • 这个错误类似于错误一,也是数据下载有问题,因为GoogleTest这个包需要从github下载,如果各位小伙伴无法连接github,那么就会报这个错误。
  • 解决方法

    • 我已经帮大家下载好了,放在文末分享里了。
    • 同样,将gtest-src文件夹放在Buid目录下:
  • 在此运行 cmake lauch,问题应该解决了,编译成功后会生成gtest-install,可以耐心等一会,大概率会迎来下一个错误。

错误三
  • 描述

    -[install_boost]: [BOOTSTRAP ERROR] An error ocurred while executing “bootstrap.bat”.

  • 截图

  • 报错原因

    • 在解压boost_1.72.0.zip文件时出错,因为Build目录下没这个文件,可以推测在下载的时候出错没下载成功。
  • 解决方法

    • 在官网下载boost_1.72.0.zip: Index of main/release/1.72.0/source。
    • 把压缩包直接放在Build目录下,不用解压。
    • 再次运行 make launch,如果显示以下内容,说明我们又成功解决了一个问题,接下来可能要运行一会儿,请耐心等待

错误四
  • 描述

    UnrealBuildTool: ERROR: Could not find NetFxSDK install dir; this will prevent SwarmInterface from installing. Install a version of .NET Framework SDK at 4.6.0 or higher.

  • 截图

  • 报错原因

    • 电脑没有安装 .NET Framework SDK。
  • 解决方法

    • 打开Visual Studio Installer,选择VS2017点击修改,添加4.6.0以上的版本即可:
编译结束

不出意外的话,经过了漫长的等待,编译应该成功结束:

系统会自动启动虚幻引擎编辑器:

如果你的编辑器在运行时帧率很低,可以在 /编辑器/编辑器偏好设置/性能 设置里勾选处于背景中时占用较少CPU

编译客户端

虽然我们的客户端现在已经能够正常启动了,但是我们还无法与它产生交互,也不能使用pythonAPI里的示例代码,因为这种交互需要借助carla的python包来建立用户指令与服务器间的桥梁,只当我们安装这个包并在代码文件中使用import carla导入时,才能使用carla提供的各种接口。下面的操作最终目的就是得到carla的python包:carla-0.9.10-py3.7-win-amd64.egg

  • 同样以管理员身份启动VS2017命令行工具,进入Carla根目录,执行以下代码:
    make PythonAPI
    
  • 这次编译相较于上一步出错率低一些,全程耐心等待即可,当然我也分享了自己遇到的几个问题以及解决方法,若有其他问题可在评论区留言和大家一起解决。
错误一
  • 描述

    无法打开包括文件: “png.h”: No such file or directory
    error: command ‘D:\Visual Studio\17\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe’ failed with exit code 2

  • 截图

  • 报错原因

    • 不存在png.h文件,应该是在编译客户端时出的错,只是当时我们并没发现,与编译客户端时报的其他错误类似,,下载libpng时出错没下载成功,导致编译所需的文件不在,大家可以去Build目录下的libpng-1.2.37-source文件夹里看看,里面的build文件夹应该是空的。
  • 解决方法

    • 人工下载libpng,把文件复制到相应的目录,下载地址:GnuWin /libpng/1.2.37,选择libpng-1.2.37-src.zip并下载。
    • 解压文件,将src里的libpng文件夹复制到 /carla/Build/libpng-1.2.37-source目录下,不存在可新建。并删除 /carla/Build/libpng-1.2.37-install文件夹,重新运行make launch。
    • 这时会在 /carla/Build/libpng-1.2.37-install/include目录下生成png.h文件。
    • 重新运行 make PythonAPI,该问题已解决,即将迎来下一个问题。
错误二
  • 描述

    无法打开包括文件: “OSM2ODR.h”: No such file or directory
    error: command ‘D:\Visual Studio\17\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe’ failed with exit code 2

  • 截图

  • 报错原因

    • 最后报的错并不是程序出错真正原因,大家可以翻阅编译记录,可以发现其实中途就报了一个错误:
    • 下载XercesC失败,同样也是在编译客户端时出的错,应该当时也没被发现,这个包的下载任务对应的是carla/Util/InstallersWin/install_xercesc.bat文件,由于文件中指定的3.2.3版本目前官网已不提供下载了。
  • 解决方法

    • 可以用记事本打开bat文件,把其中的版本换成3.2.4:

      set XERCESC_VERSION=3.2.4
      
    • 运行bat文件,会在当前目录下载xerces-c-3.2.4-installxerces-c-3.2.4-source两文件夹,把这两个复制到Build目录下,并重命名为xerces-c-3.2.3-installxerces-c-3.2.3-source,把之前改的bat文件也改回原来的样子,重新运行 make lauch。

错误三
  • 描述

    build\lib.win-amd64-3.9\carla\libcarla.cp39-win_amd64.pyd : fatal error LNK1120
    error: command ‘D:\Visual Studio\17\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\link.exe’ failed with exit code 1120

  • 截图

  • 报错原因

    • 暂时没搞清楚这个问题的原因,遇到该问题的小伙伴可以试试重装VS2017、删除其他VS版本残留的信息、检查电脑是否装有多个Python环境(检查方法在安装Python时讲过)等方法,或者直接make rebuild重新从服务端开始编译。
错误四
  • 描述

    无法打开包括文件: “OSM2ODR.h”: No such file or directory
    error: command ‘D:\Visual Studio\IDE 2017\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64\cl.exe’ failed with exit code 2

  • 截图

  • 报错原因

    • 报错内容与二相同,但原因应该不同,根据报错提示,我们去查看f:\carla\pythonapi\carla\source\libcarla\OSM2ODR.cpp文件会发现其中有一行include <OSM2ODR.h>的代码,出错原因就是虽然包含了头文件,但并没找到该文件。
  • 解决方法

  • 重新编译一下osm2dor,在carla根目录输入:

    make osm2odr
    
  • 编译完成后,再次运行 make PythonAPI,按理来说最终能成功生成我们要安装的Python包:

    • 可以看到在对应的目录里,已经有carla的egg包了:
  • 安装egg包

    • 先安装easy_install:

      pip install easy_install
      
    • 在egg文件所在目录打开cmd,运行以下代码:

      easy_install carla-0.9.10-py3.7-win-amd64.egg
      
  • 若看到以下字符,说明安装成功:

编译结束

至此,第二部分的编译也成功结束,如果卡在这部分的小伙伴上述方法都不管用的话,可以直接安装我在文末提供的carla-0.9.10-py3.7-win-amd64.egg但要确保环境与我的一致,如python3.7.8,carla 0.9.10等,否则会不兼容。

相关资源分享

这里分享了我下载好的Carla场景资源包以及编译过程中可能用到的数据包:

  • 场景资源:网盘链接 提取码:fjhp

  • Build目录该安装的包清单:网盘链接 提取码:yjga

  • Carla python包:网盘链接 提取码:4fjx

本文标签: 源码环境CARLA