赞
踩
Carla的安装是我在研究生阶段解决的第一个问题,现记录一下我安装Carla的过程以及我在安装过程中遇到的一些问题。
carla是一款基于UE4开发的模拟仿真软件,本身对硬件的要求比较高。
我是windows与ubuntu双系统,由于在装系统之前就了解过carla的配置,所以在安装ubuntu系统的各个分区如下:
以500G内存为例,1、efi引导区为500M;
2、swap虚拟内存区为16G;
3、挂载点:/ 为70G;
4、挂载点:/usr为30G;
5、挂载点:/home为剩下的所有空间,因为carla就要安装在hmoe分区下,同时还需要安装很多环境,至少需要250G的空间才能完成安装。
首次安装好ubuntu时,默认显卡驱动为X.Org X server -- Nouveau display driver。
应该切换NVIDIA的适合自己显卡的驱动,切换步骤为点击“软件和更新”,进入管理器,选择“附加驱动”选项卡;
可以看到,有一些系统推荐的显卡驱动版本,我选择的是NVIDIA driver metapackage来自 nvidia-driver-525(专有),点击应用更改,等待的时间较久,即可完成显卡驱动的安装。
安装完重启ubuntu系统, 打开终端输入nvidia-smi可以看到显示和进程:
出现这样的结果就算更换显卡成功了。
Ubuntu 官方软件源中包含了 Ubuntu 系统中所用到的绝大部分的软件,它对应的源列表文件是 /etc/apt/sources.list。该文件记录Ubuntu 官方源的地址,但国内访问官方软件源速度会慢,为解决这样的问题,我们需要将 Ubuntu 官方软件源的网址替换成国内的 Ubuntu 软件源镜像网站的网址就可以。
先备份源列表/etc/apt/sources.list
sudo cp /etc/apt/souces.list /etc/apt/sources.list_backup
再打开sources.list文件修改(可以用gedit、vi、vim等来修改)
sudo gedit /etc/apt/souces.list
往里面添加目标源的配置文件(这里我使用的是Ubuntu20.04的清华源),最后保存即可。
清华源的链接ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
- deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
- # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
- deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
- # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
- deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
- # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
-
- # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
- # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
-
- deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
- # deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
-
- # 预发布软件源,不建议启用
- # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
- # # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
然后执行命令:
- sudo apt-get update
- sudo apt-get upgrade
我们是在Ubuntu20.04的环境下安装Carla,所以我们需要安装好所有环境即依赖。
这里是参考CSDN博主「ppqppl」的原创文章,原文链接:https://blog.csdn.net/m0_59161987/article/details/128928855
首先是需要安装好 python3,这里的 python3 的版本目前是最好使用 3.8 的最新版本,这里提供在线安装的命令:
- sudo apt update
- sudo apt install software-properties-common
- sudo add-apt-repository ppa:deadsnakes/ppa
- sudo apt install python3.8
- python3.8 --version
然后这里我们需要更新 pip3 到最新版本(这里的最低 pip3 版本要求是 20.3),这里由于我们使用的系统是 ubuntu 20.04,默认的 pip3 版本是 20.0.2,直接使用命令升级 pip3 是没有效果的,这里我们需要按照如下方法进行更新:
- #首先直接升级 pip3,这里虽然升级后查询版本没有改变,但在后续操作会解决
- sudo pip3 install --upgrade pip
- #修改 .bashrc 文件
- sudo gedit ~/.bashrc
- #在文件末尾添加如下字段
- export PATH=/home/cxx/.local/bin/:$PATH
- #保存后执行刷新调用
- source ~/.bashrc
这样我们再次查看pip3的版本就是最新版本了
python3 环境全部准备好之后,需要安装一些其他包
- pip3 install --user pygame numpy
- pip install --user setuptools &&
- pip3 install --user -Iv setuptools==47.3.1 &&
- pip install --user distro &&
- pip3 install --user distro &&
- pip install --user wheel &&
- pip3 install --user wheel auditwheel
如果在执行安装 setuptools 时报错如下:
- ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
- launchpadlib 1.10.13 requires testresources, which is not installed.
这里说明我们要更新 numpy 版本,然后按照提示安装 launchpadlib 后再安装:
- pip3 install --upgrade numpy
- pip3 install launchpadlib
这里由于我们是使用 python 语言进行开发,所以这里最重要的就是安装 python3 ,其他环境安装如下:
- sudo apt-get update &&
- sudo apt-get install wget software-properties-common &&
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test &&
- wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key|sudo apt-key add - &&
- sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-8 main" &&
- sudo apt-get update
这里不同系统版本对应不同的安装指令,可以去官网进行查看:How to build Carla on Ubuntu ,这里使用的是 Ubuntu 20.04 版本,我们要保证Carla和它的引擎UnrealEngine用的是一个版本的Clang,命令如下:
- sudo apt-add-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main"
- sudo apt-get install build-essential clang-10 lld-10 g++-7 cmake ninja-build libvulkan1 python python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git
- sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-10/bin/clang++ 180 &&
- sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-10/bin/clang 18
由于Carla是基于UE4引擎进行开发的,所以在安装Carla前最重要的一步就是要安装并编译UE4,由于本次我们安装的为carla0.9.13,与之对应的引擎版本为UnrealEngine4.26。
第一步将你的Github和UrealEngine连接到一起。因为UnrealEngine的repo是private的,如果你的github没有和UnrealEngine连接到一起,是无法下载引擎repo的
注册Ginhub账号请点击这里:
在你的terminal中安装git,为了之后git clone做准备
sudo apt install git
接着注册一个UnrealEngine的账号
也可以直接用epic的账号登陆UE,接下来要完成Github和UnrealEngine的关联,具体如下:
连接方法可以参考该链接Unreal Engine on GitHub,或者可以根据下面的方法
1、使用经过验证的Epic Games帐户登录www.unrealengine.com,单击右上角网站标题栏中的用户名,然后选择personal选项。
2、从菜单中选择连接的账户(APPS AND ACCOUNTS),单击Github图标下方的连接(connect)。
3、查看《虚幻引擎最终用户许可协议》并选中对应复选框接受该协议,然后单击关联您的账户按钮(如果已经接受了最新版本的《虚幻引擎最终用户许可协议》,则不会显示该提示)。
4、登录现有GitHub帐户。
5、单击授权按钮,之后你会收到Gibhub发的一封EpicTeamAdmin邀请您加入确认的邮件,单击join @EpicGames完成关联流程。
在进行下一步之前,请先进入https://github.com/EpicGames - Connect to preview
在这个界面里需要点击Follow:
如果这里没有点击,就不显示UE4源码仓库,无法git clone下载,然后向下滑动来查看你是否能看到如下一个叫做UnrealEngine的repo,如果能,说明你关联成功了。
接着就可以开启下一步了。
这步主要是将UnrealEngine4.26git clone到自己ubuntu的home目录下,大概要花费90G—100G左右空间。
安装Unreal引擎
git clone --depth 1 -b carla https://github.com/CarlaUnreal/UnrealEngine.git ~/UnrealEngine_4.26
UE4下载速度根据网络会有较大波动,请耐心等待
正在安装过程中,在执行上述代码时会先让你登陆你github的账户,记住,是你刚刚关联UE
的账户。
如图账户显示密码不显示,而在git clone过程中会出现以下几个问题:
1、 如果出现这种Failed to connect to github.com port 443: 连接超时错误
fatal: 无法访问 'https://github.com/CarlaUnreal/UnrealEngine.git/':Failed to connect to github.com port 443: 连接超时
网上的几个办法亲测都没有什么效果,可能是因为网络波动的原因,我是参考了这个博主的方法git提交或克隆报错fatal: unable to access ‘https://github.com/tata20191003/autowrite.git/‘: Failed to connec_good_good_xiu的博客-CSDN博客其中最好的办法是科学上网
2、如果出现如下鉴权失败的错误
- remote: Support for password authentication was removed on August 13, 2021.
- remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
- fatal: 'https://github.com/CarlaUnreal/UnrealEngine.git/' 鉴权失败
出现这个问题是因为github从2021年开始就不支持这种登入方式,需要设置个人密钥,将登入的密码替换成token。
github 的个人密钥设置有两种: fine-grained token 和 classic token,有些在使用 git clone 的时候没有提示要登陆,就跳过这部分。设置方法参考:
其实这里的意思就是用 token 代替密码使用,参考如下博客配置 token:
https://blog.csdn.net/qq_41646249/article/details/119777084
一些提示:
(1)、点击Settings/Developer Settings/Personal access tokens/Tokens(classic)
(2)设置token的有效期,访问权限
要使用token从命令行访问仓库,请选择repo(这步一定要勾选,不然还是会失败)。
当你生成好新的token时,直接复制在password里,就可以开始git clone了
3、如果执行git clone命令时出现如下报错
fatal: 无法访问 'https://github.com/CarlaUnreal/UnrealEngine.git/':GnuTLS recv error (-110): The TLS connection was non-properly terminated.
需要执行如下操作来关掉SSL:
- sudo apt-get install gnutls-bin
- git config --global http.sslVerify false
- git config --global http.postBuffer 1048576000
如果正在克隆的情况如下:
出现这种情况是在克隆了,耐心等待即可。
过程中如果出现网络波动,克隆过程可能会卡死,这时候会出现
基本可以确实是因为远程舱可中存在过大的文件,我们可以尝试扩大一下传输限制。
在网上找到的方法是在终端执行这两行代码:
- git config --global http.postBuffer 524288000
- git init
亲测效果不大,我的解决方法是不断的重复git clone的过程,虽然这方法比较笼统,但是后面的速度会越来越快,只需要耐心等待就可以完成。
- cd ~/UnrealEngine_4.26
- ./Setup.sh && ./GenerateProjectFiles.sh && make
这一步当时真的是等到我麻木了,但是好在只是网速原因,如果是科学上网可能会快一点。
编译的时间较长,需要耐心等待,如果在编译的过程中出现register ubreal engine file types的窗口,直接关掉即可。我当时make了6个小时,是晚上开始的,等第二天早上过来的时候发现成功了,显示total time有300多seconds,还好不是白天做到,不然我得等好久好久。
编译结束时,可以运行一下UE4,如果出现UE4的初始界面,就表示UE的部分安装完成。
cd ~/UnrealEngine_4.26/Engine/Binaries/Linux && ./UE4Editor
安装完,要把UnrealEngine的路径添加到~/.bashrc中:
sudo gedit ~/.bashrc
打开在最后一行添加:
UE4_ROOT=~/UnrealEngine_4.26
效果如下:
接下来我们开始安装carla的部分。
安装Carla有两种方法安装,第一种是源码编译安装,第二种是去carla官网上喜爱在安装包进行解压安装,由于我之后可能还要在源码进行一些操作,所以我选择的是源码安装。
先安装一个命令加速模块:
sudo apt-get install aria2
然后就开始0.9.13版本的安装。
git clone -b 0.9.13 https://github.com/carla-simulator/carla.git
这一步git clone大致内容跟上一步安装UE4的情况一样,如果出现了上一步所出现的问题,按照相对应的解决方法操作即可。
等git clone完成之后,就是最核心的一步了:
- cd ~/carla
- ./Update.sh
出现第一个问题了,按照文档来说,如果要在ubuntu20.04上编译,需要安装clang-10.但是下载的carla的源码中的安装脚本,确都是按照clang-8来进行编译的。
报错界面如下:
所以需要修改安装脚本中clang的版本。 安装脚本的目录是home/carla/Util/BuildTools目录 需要修改的文件:
- – Setup.sh
- – BuildOSM20DR.sh
- – BuildPythonAPI.sh
在这三个文件夹中搜索“clang”关键词,将8改成10就可以了,如果只有clang没有数字的话不用改。
打开上面的Setup.sh文件的第432行
这里显示的是下载3.2.3版本的xerces,但你打开这个网站:
Servidor de réplicas do Consorcio CIXUG
你就会发现,3.2.3版本被移除了,所以解决方法是需要修改Setup.sh文件中xerces的下载地址,把432行XERCES_REPO的地址改为
https://archive.apache.org/dist/xerces/c/3/sources/
如下:
解决完这些问题再继续运行:
./Update.sh
之后还会出现的应该只有网速问题了,时而快时而慢都是很正常的,如果失败了就再重新执行就可以了。
当出现这个界面的时候就表示成功:
然后就开始Make Carla Python API,编译pythonAPI,输入:
- make PythonAPI
- //或者带上自己的python版本
- make PythonAPI ARGS="--python-version=2.7, 3.6, 3.7, 3.8"
亲测两个代码都有用!
出现第一个问题:
- Building CXX object LibCarla...ource/test/common/test_streaming.cpp.o
- FAILED: ...
- LibCarla/cmake/test/CMakeFiles/libcarla_test_client_release.dir/__/__/source/test/common/test_streaming.cpp.o -c ../../LibCarla/source/test/common/test_streaming.cpp
- ../../LibCarla/source/test/common/test_streaming.cpp:58:3: error: reference to 'Server' is ambiguous
- ...
- ../../LibCarla/source/test/common/test_streaming.cpp:63:3: error: reference to 'Client' is ambiguous
- ...
- ../../LibCarla/source/test/common/test_streaming.cpp:93:3: error: reference to 'Server' is ambiguous
- ...
- ../../LibCarla/source/test/common/test_streaming.cpp:96:3: error: reference to 'Client' is ambiguous
这时候我们观察报错信息,大概是这个错误出现的主要的原因是test_streaming.cpp 文件中出现多个层级的Server 定义和Client 定义。
解决方法是打开目标文件carla/LibCarla/source/test/common/test_streaming.cpp,分别将58、63\93和96行的Server 和Client分别改成carla::streaming::low_level::Server 和 carla::streaming::low_level::Client,重新编译即可。
经过一段时间的等待,成功!
记录一下需要的第三方库:
- Setup.sh: llvm-8.0 already installed.
- Setup.sh: boost-1.72.0-c8 already installed.
- Setup.sh: rpclib-v2.2.1_c5-c8 already installed.
- Setup.sh: gtest-1.8.1-c8 already installed.
- Setup.sh: recast-0b13b0-c8 already installed.
- Setup.sh: Libpng already installed.
- Setup.sh: Xerces-c already installed.
- Setup.sh: Sqlite already installed.
- Setup.sh: PROJ already installed.
- Setup.sh: Patchelf already installed.
- Setup.sh: CARLA version 0.9.13-dirty.
- Setup.sh: Generating CMake configuration files.
- Setup.sh: Success!
- BuildLibCarla.sh: Building LibCarla "Client.Release" configuration.
- BuildLibCarla.sh: Success!
- BuildOSM2ODR.sh: Building OSM2ODR.
- BuildOSM2ODR.sh: Success!
- BuildPythonAPI.sh: Building Python API for Python 3.
成功的截图
进行最后一步:
make launch
make launch其中编译的内容主要三个:
- make setup
- make LibCarla
- make CarlaUE4Editor
因此可以分布编译以上三步,或直接编译make launch,但是分布编译可以看出错误。
我是在执行第二步编译时出了问题:
- BuildCarlaUE4.sh: ERROR: UE4_ROOT is not defined, or points to a non-existant directory, please set this environment variable.
- Util/BuildTools/Linux.mk:7: recipe for target ‘launch’ failed
解决方法,修改Carla/Util/BuildTools/BuildCarlaUE4.sh文件,直接打开这个文件或者利用终端打开修改:
sudo gedit ~/Carla/Util/BuildTools/BuildCarlaUE4.sh
在里面添加:
UE4_ROOT=~/UnrealEngine_4.26
添加截图如下:
再执行如下命令:
- make setup
- make LibCarla
- make CarlaUE4Editor
- make launch
- make PythonAPI.3
- make package
再进行make launch时:
只需要经过漫长的等待,就可以出现该画面了,代表着carla的安装已经成功。
make launch 第一次初始化会时间长一些,之后好很多。如果Make成功,我们的仿真界面就会出现!开始之前记得点运行!
不要刚才弹出的界面关掉,另开一个terminal, 输入以下指令:
- cd ~/carla/PythonAPI/examples
- python3 automatic_control.py
顺利的话,应该会出现和下图比较类似的情形。
到这里我们的Carla安装就结束啦!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。