Ubuntu20.04安装Carla全过程(记录)

m0_61772308 2024-07-14 11:37:01 阅读 85

前言

Carla的安装是我在研究生阶段解决的第一个问题,现记录一下我安装Carla的过程以及我在安装过程中遇到的一些问题。

一、安装前准备

1、硬件环境

carla是一款基于UE4开发的模拟仿真软件,本身对硬件的要求比较高。

我是windows与ubuntu双系统,由于在装系统之前就了解过carla的配置,所以在安装ubuntu系统的各个分区如下:

以500G内存为例,1、efi引导区为500M;

2、swap虚拟内存区为16G;

3、挂载点:/ 为70G;

4、挂载点:/usr为30G;

5、挂载点:/home为剩下的所有空间,因为carla就要安装在hmoe分区下,同时还需要安装很多环境,至少需要250G的空间才能完成安装。

 2、检查显卡的驱动是否安装成功

首次安装好ubuntu时,默认显卡驱动为X.Org X server -- Nouveau display driver。

应该切换NVIDIA的适合自己显卡的驱动,切换步骤为点击“软件和更新”,进入管理器,选择“附加驱动”选项卡; 

可以看到,有一些系统推荐的显卡驱动版本,我选择的是NVIDIA driver metapackage来自 nvidia-driver-525(专有),点击应用更改,等待的时间较久,即可完成显卡驱动的安装。

安装完重启ubuntu系统, 打开终端输入nvidia-smi可以看到显示和进程:

出现这样的结果就算更换显卡成功了。

二、 Ubuntu更换国内镜像源

1、为什么要更换软件源

Ubuntu 官方软件源中包含了 Ubuntu 系统中所用到的绝大部分的软件,它对应的源列表文件是 /etc/apt/sources.list。该文件记录Ubuntu 官方源的地址,但国内访问官方软件源速度会慢,为解决这样的问题,我们需要将 Ubuntu 官方软件源的网址替换成国内的 Ubuntu 软件源镜像网站的网址就可以。

2、如何更改镜像源

先备份源列表/etc/apt/sources.list

<code>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

1、安装python3

首先是需要安装好 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

2、更新pip3

然后这里我们需要更新 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的版本就是最新版本了

3、其他环境

python3 环境全部准备好之后,需要安装一些其他包

<code>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

4、UE4安装

(一)、关联账户

由于Carla是基于UE4引擎进行开发的,所以在安装Carla前最重要的一步就是要安装并编译UE4,由于本次我们安装的为carla0.9.13,与之对应的引擎版本为UnrealEngine4.26。

第一步将你的Github和UrealEngine连接到一起。因为UnrealEngine的repo是private的,如果你的github没有和UnrealEngine连接到一起,是无法下载引擎repo的

注册Ginhub账号请点击这里:

https://github.com/

在你的terminal中安装git,为了之后git clone做准备

sudo apt install git

接着注册一个UnrealEngine的账号 

 Feed - Unreal Engine

也可以直接用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,如果能,说明你关联成功了。

接着就可以开启下一步了。

(二)、Github Repo Clone

这步主要是将UnrealEngine4.26git clone到自己ubuntu的home目录下,大概要花费90G—100G左右空间。

安装Unreal引擎

<code>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: 连接超时错误

<code>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 的时候没有提示要登陆,就跳过这部分。设置方法参考:

https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token

其实这里的意思就是用 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命令时出现如下报错

<code>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

如果正在克隆的情况如下:

出现这种情况是在克隆了,耐心等待即可。

过程中如果出现网络波动,克隆过程可能会卡死,这时候会出现

基本可以确实是因为远程舱可中存在过大的文件,我们可以尝试扩大一下传输限制。

在网上找到的方法是在终端执行这两行代码:

<code>git config --global http.postBuffer 524288000

git init

亲测效果不大,我的解决方法是不断的重复git clone的过程,虽然这方法比较笼统,但是后面的速度会越来越快,只需要耐心等待就可以完成。

(三)、编译UE4

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中:

<code>sudo gedit ~/.bashrc

打开在最后一行添加:

UE4_ROOT=~/UnrealEngine_4.26

效果如下: 

接下来我们开始安装carla的部分。

 四、安装Carla0.9.13

安装Carla有两种方法安装,第一种是源码编译安装,第二种是去carla官网上喜爱在安装包进行解压安装,由于我之后可能还要在源码进行一些操作,所以我选择的是源码安装。

先安装一个命令加速模块:

<code>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目录 需要修改的文件:

<code>– 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的地址改为

<code>https://archive.apache.org/dist/xerces/c/3/sources/

如下:

 解决完这些问题再继续运行:

<code>./Update.sh

之后还会出现的应该只有网速问题了,时而快时而慢都是很正常的,如果失败了就再重新执行就可以了。

当出现这个界面的时候就表示成功:

然后就开始Make Carla Python API,编译pythonAPI,输入:

<code>make PythonAPI

//或者带上自己的python版本

make PythonAPI ARGS="--python-version=2.7, 3.6, 3.7, 3.8"code>

亲测两个代码都有用!

出现第一个问题:

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.

成功的截图 

进行最后一步:

<code>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

添加截图如下:

再执行如下命令:

 

<code>make setup

make LibCarla

make CarlaUE4Editor

make launch

make PythonAPI.3

make package

再进行make launch时:

 

 

只需要经过漫长的等待,就可以出现该画面了,代表着carla的安装已经成功。 

make launch 第一次初始化会时间长一些,之后好很多。如果Make成功,我们的仿真界面就会出现!开始之前记得点运行!

不要刚才弹出的界面关掉,另开一个terminal, 输入以下指令:

<code>cd ~/carla/PythonAPI/examples

python3 automatic_control.py

顺利的话,应该会出现和下图比较类似的情形。

 

到这里我们的Carla安装就结束啦!



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。