Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版

Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版

Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版

博主安装环境:Ubuntu18.04+ROS melody+Python3.8源码编译完整安装,花了将近一周时间来安装,记录下安装过程及踩到的坑。整个下载安装编译过程请保证科学上网

一.前期准备

carla0.9.9需要Ubuntu18.04系统,据说16.04也可以但尽量不要尝试,避免麻烦最好安装18.04,磁盘空间建议预留出150G剩余空间,实测UE4.24大小74个G,Carla0.9.9大小40个G。还需要4G的GPU。如果电脑配置不够建议安装简易版本carla。官网链接:
https://carla.readthedocs.io/en/latest/start_quickstart/

1.注册Epic账号,并且与自己的github账户绑定

Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第1张图片博主是用steam账户注册的,注册好epic账户后进入个人中心

Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第2张图片因为博主已经绑定过自己的github账户所以显示已经链接,链接具体操作过程比较简单,csdn或者百度搜索下即可。绑定后进入自己的个github账户就可以看到Epic发布的UE库源码了。github搜索UnrealEngin,fork一下就可以。(注:不绑定github与Epic账户是搜不到UnreaEngin源码的)

2. 依赖项安装

安装vulkan-sdk
Ubuntu 18 安装 vulkan-sdk

wget -qO - http://packages.lunarg.com/lunarg-signing-key-pub.asc | sudo apt-key add -
sudo wget -qO /etc/apt/sources.list.d/lunarg-vulkan-bionic.list http://packages.lunarg.com/vulkan/lunarg-vulkan-bionic.list
sudo apt update
sudo apt install vulkan-sdk

端口配置

iptables -I INPUT -p tcp --dport 2000 -j ACCEPT
iptables -I INPUT -p tcp --dport 2001 -j ACCEPT
iptables-save

依赖安装

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/$(lsb_release -c --short)/ llvm-toolchain-$(lsb_release -c --short)-8 main" &&
sudo apt-get update

Ubuntu 18.04 额外的依赖

sudo apt-get install build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 python python-pip python-dev python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev &&
pip2 install --user setuptools &&
pip3 install --user setuptools 

修改默认 clang 版本.

sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-8/bin/clang++ 180 &&
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-8/bin/clang 180

3.git clone下载ue源码

注:不要从github直接下载源码,安装过程中会报错,请一定使用git clone命令安装

#下面这条命令就是下载UE的,根据官网要求,0.9.9版的carla把UE升级为了4.24版本,之前安装过的需要先卸载
#再安装这个版本
#--depth=1表示获取最近一次更新
# -b 4.24表示分支为4.24
#~/UnrealEngine_4.24表示在系统更目录创建名为UnrealEngine_4.24的文件夹,源码保存在这个文件夹下面
#如果通过windows来直接下载的ZIP格式的文件,下面的命令行不需要执行,把下载的文件解压缩到根目录就可

git clone --depth=1 -b 4.24 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine_4.24

下载完毕后根据官网的命令来编译

cd ~/UnrealEngine_4.24

#这里需要下在一个文本格式的文件
wget https://carla-releases.s3.eu-west-3.amazonaws.com/Linux/UE_Patch/430667-13636743-patch.txt ~/430667-13636743-patch.txt
patch --strip=4 < ~/430667-13636743-patch.txt

#编译
./Setup.sh && ./GenerateProjectFiles.sh && make

#打开UE
cd ~/UnrealEngine_4.24/Engine/Binaries/Linux && ./UE4Editor

出现以下界面证明安装成功!

Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第3张图片可以看到版本号即为我们git clone时选择的4.24。第一次读条比较慢,耐心等待直至出现如下界面:
在这里插入图片描述出现后ctrl+c关闭终端即可,在bashrc中添加一下系统变量,将如下内容添加到文件末尾:

# Unreal Engine  换成自己UE4对应的路径
export UE4_ROOT=~/<你自己电脑路径>/UnrealEngine_4.24

二.Carla0.9.9源码编译安装

1.依赖项安装

sudo apt-get install build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 python python-pip python-dev python3-dev python3-pip libpng16-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev git &&
pip2 install --user setuptools &&
pip3 install --user -Iv setuptools==47.3.1 &&
pip2 install --user distro &&
pip3 install --user distro

2.git clone下载carla源码
输入以下命令:

#下面这条命令就是下载Carla的,根据官网要求,0.9.9版的carla把UE升级为了4.24版本,之前安装过的需要先卸载
#再安装这个版本
#--depth=1表示获取最近一次更新
# -b 0.9.9表示分支为0.9.9
#~/Carla_0.9.9表示在系统更目录创建名为Carla_0.9.9的文件夹,源码保存在这个文件夹下面
git clone --depth=1 -b 0.9.9 https://github.com/carla-simulator/carla ~/Carla_0.9.9

注:一定使用git clone安装carla,github源码下载的carla在编译过程中会出现与git相关的报错:

wh@wh-System-Product-Name:~/carla$ make launch
Setup.sh: llvm-8.0 already installed.
Setup.sh: boost-1.72.0-c8 already installed.
Setup.sh: rpclib-v2.2.1_c2-c8 already installed.
Setup.sh: gtest-1.8.1-c8 already installed.
Setup.sh: recast-cdce4e-c8 already installed.
fatal: bad revision 'HEAD'
Util/BuildTools/Linux.mk:135: recipe for target 'setup' failed
make: *** [setup] Error 128

fatal: bad revision 'HEAD’这个问题是与git相关的,用download可能会出现这个问题。

上述命令-b 0.9.9可根据自己需求选择想要的Carla版本例如想下载最新的carla0.9.12的话命令行改为-b 0.9.12即可。不过请慎用,一定选择与博主相同的环境即UE4.24+Carla0.9.9。截至21年9月份Carla已经更新至0.9.12版本,不过官网文档说明0.9.12版本的carla需要对应UE4.26,所以按照本教程安装好的UE4.24是无法为carla0.9.12提供开发环境的,carla编译过程中会报错的。carla与ue版本的对应也是安装过程中的一大坑,一定根据官网文档一一对应carla与ue的版本,也不建议基于最新发布的版本进行开发。

3.源码编译

#这个命令是可以优化下载效果的的,不然可能下载出错后就必须重新下载,最好还是装一个这个
sudo apt-get install aria2

#去相关目录下运行下载脚本,下载相关内容content,大约11个G
#建议铁子们在夜深人静的时候关掉大片(大人看的片,嘿嘿嘿)科研使我快乐
#因为白天下载网速实在感人,可能就我实验室的慢也不一定,看情况而定
cd ~/carla_0.9.9
./Update.sh

#./Update.sh后为了防止后续build过程中出现问题,最好先备份一份update之后的文件夹内容10G左右
cp ~/carla_0.9.9 ~/carla_0.9.9_backup

make launch
#make launch其实包含三条命令
#make setup
#make LibCarla
#make CarlaUE4Editor
#分开执行也可以,方便看具体报错。若编译过程中报错,修改错误之后继续编译请输入make rebuild或者先输入
#make clean 然后 make launch。

#编译PythonAPI
make PythonAPI.3
#carla ue开发环境主要依赖python3,建议安装python3.5以上版本

make package
#生成可执行文件,运行即可打开Carla,否则需要输入命令make launch-only开启carla

全部success之后执行
make launch-only,出现如下界面则安装成功:
Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第4张图片Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第5张图片
4.测试例程

cd ~/Carla_0.9.9/PythonAPI
python3 manual_control.py
#执行上述命令可能会报一些缺少例如pygame numpy等Python依赖库,自行安装一下即可。
#需求的依赖库说明在PythonAPI/examplex/requirements.txt中有

若报如下错误RuntimeError:

INFO: listening to server 127.0.0.1:2000
Example of automatic vehicle control from client side.
Traceback (most recent call last):
  File "automatic_control.py", line 846, in 
    main()
  File "automatic_control.py", line 839, in main
    game_loop(args)
  File "automatic_control.py", line 687, in game_loop
    world = World(client.get_world(), hud, args)
RuntimeError: time-out of 4000ms while waiting for the simulator, make sure the simulator is ready and connected to 127.0.0.1:20

打开3.源码编译小节第二幅图所示的编辑页面,点击播放,然后再运行Python脚本即可。
Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第6张图片出现如下界面,恭喜你安装成功!
操作跟GTA大致差不多,wasd 空格

三.踩坑总结

小坑1:博主最开始安装UE+carla的时候东看一个教程,西看一个教程,导致UE与Carla版本不匹配,carla源码编译总是报一些莫名其妙网上还搜不到的错误。Carla版本一定要与UE一一对应。Carla0.9.9对应UE4.24、Carla0.9.12对应UE4.26等,具体对应关系请看官方文档或者gitHub Carla里的说明

小坑2:博主在安装过程中尝试安装了一次UE4.22,编译UE的过程中报错具体忘记了,大致内容是本机装的clang版本过高(8.0),编译4.22的UE需要clang6.0或7.0

小坑3:Ubuntu自带的Python是2.7,CARLA最好是需要Python 3.5及以上版本。

小坑4:编译PythonAPI的时候报错显示setup.py的第36还是37行module ‘platform’ has no attribute ‘linux_distribution’
解决方案:

if os.name == "posix":
        # @todo Replace deprecated method.
        linux_distro = platform.dist()[0]  # pylint: disable=W1505
#添加一个头文件且改为下面这样:
import distro
if os.name == "posix":
        # @todo Replace deprecated method.
        linux_distro = distro.linux_distribution()[0]  # pylint: disable=W1505
#修改之前最好备份以下setup.py,毕竟要在源码基础上更改。

报错原因:python3.7以后platform.linux_distribution()被移除了。博主为Python3.8环境,可能3.6或者3.5的python就不会报这个错。
具体参考链接:报错原因
小坑5:运行examples中的python脚本时可能会提示缺少依赖项例如pygame,numpy等,博主是pygame2.0版本

小坑6:编译PythonAPI报错ModuleNotFoundError: No module named ‘distro‘
Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第7张图片解决参考链接:解决

小坑7:安装编译完成后运行PythonAPI中example的例程,python maunal_control.py手动控制车辆时会发现FPS较低特别卡顿,解决方法:选择Carla编辑界面左上角编辑,然后选择编辑器偏好设置
Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第8张图片在左侧一排选择性能,勾选掉处于背景中时占用较少CPU即可。

大坑1:千万不要直接download carla源码,一定要用git clone来下载!,因为不这样的话下载的版本可能就会出现与git相关的问题

Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第9张图片fatal: bad revision 'HEAD’这个问题是与git相关的,用download可能会出现这个问题

**博主安装过程中主要参考了以下链接:**转给需要的同学
1.https://blog.csdn.net/feng0217/article/details/107186071?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163065732216780264067774%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163065732216780264067774&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-5-107186071.pc_search_result_cache&utm_term=carla+%E7%BC%96%E8%AF%91%E6%8A%A5%E9%94%99&spm=1018.2226.3001.4187

2.https://blog.csdn.net/feng0217/article/details/107186071?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163065732216780264067774%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163065732216780264067774&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-5-107186071.pc_search_result_cache&utm_term=carla+%E7%BC%96%E8%AF%91%E6%8A%A5%E9%94%99&spm=1018.2226.3001.4187

3.https://blog.csdn.net/maitianpt/article/details/108984885?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_utm_term~default-0.essearch_pc_relevant&spm=1001.2101.3001.4242

4.https://blog.csdn.net/DoHer/article/details/107121127?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163031518716780274180998%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163031518716780274180998&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v29_ecpm-3-107121127.first_rank_v2_pc_rank_v29&utm_term=Util%2FBuildTools%2FLinux.mk%3A83%3A+recipe+for+target+%27CarlaUE4Editor%27+failed&spm=1018.2226.3001.4187

5.https://zhuanlan.zhihu.com/p/44851915

6.https://www.jianshu.com/p/46e487fbf76c

7.https://blog.csdn.net/qq_17759721/article/details/106723581

8.https://blog.csdn.net/davidhopper/article/details/81485872?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163031518716780274180998%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163031518716780274180998&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v29_ecpm-2-81485872.first_rank_v2_pc_rank_v29&utm_term=Util%2FBuildTools%2FLinux.mk%3A83%3A+recipe+for+target+%27CarlaUE4Editor%27+failed&spm=1018.2226.3001.4187

9.https://blog.csdn.net/weixin_39880458/article/details/106874566?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163031518716780274180998%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=163031518716780274180998&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v29_ecpm-1-106874566.first_rank_v2_pc_rank_v29&utm_term=Util%2FBuildTools%2FLinux.mk%3A83%3A+recipe+for+target+%27CarlaUE4Editor%27+failed&spm=1018.2226.3001.4187

10.https://blog.csdn.net/maitianpt/article/details/108984885?utm_medium=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaidudefault-4.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2defaultBlogCommendFromBaidudefault-4.essearch_pc_relevant

源码编译安装卸载方法:
卸载源代码编译的的软件:
cd 源代码目录
make clean
./configure
(make)
make uninstall
rm -rf 目录

清理系统:
sudo apt-get autoclean
sudo apt-get clean
sudo apt-get autoremove

博主重新安装过程中又发现了许多新的坑,记录一下
1.make PythonAPI的时候报了下面的错误,网上查了一下,有可能是python版本的问题,缺少wheel包,安装完再升级一下即可。python环境为3.6.9。解决方法如下:
在这里插入图片描述pip3 install wheel
pip3 install --upgrade wheel
pip3 install setuptools
pip3 install --upgrade setuptools
但是用 命令make PythonAPI ARGS="–python-version=2.7"采用系统自带的python27环境编译python接口时就不会报上面的问题。总之不管用那种python环境编译pythonapi,最终都会在//PythonAPI/carla/dist路径下生成对应python版本的.whl和.egg文件,最后还要.egg文件配置到bashrc的环境变量里,如果环境变量配置的是27版本的.egg,那么在运行pythonapi脚本时用python xxxxx.py命令;如果环境变量配置的是36版本的.egg,如下图所示。那么在运行pythonapi脚本时用python3 xxxxx.py命令。
Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第10张图片

2.如果不make package的话每次启动carla就要在ue4编辑器下启动,及其麻烦和缓慢,因此执行make package生成可执行文件CarlaUE4.sh直接运行比较方便,在整个过程非常顺利没有报错,可是并没有生成CarlaUE4.sh,根据make package成功后的提示,package编译出来的内容在//Dist下的CARLA_0.9.12-dirty.tar.gz。直接命令解压即可生成CarlaUE4.sh脚本,下次直接./CarlaUE4.sh执行即可

3.在运行Co_simulation/sumo下的sumo carla联合仿真脚本的时候报了下面的错误

Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第11张图片大致意思是/co_simulation/sumo/sumo_integration/sumo_simulation.py这个脚本中304行,显示traci没有sumolib这个属性。这里说一下博主的sumo环境是1.11.0版本的源码编译版本,traci接口和sumolib是用pip3 install traci pip3 install sumolib安装的,安装完成后终端提示是安装的1.13.0版本的sumolib,博主猜测是因为sumolib traci 跟sumo的版本不匹配导致的原因,解决方法找到上面的.py脚本:
Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第12张图片
找到第304行,将代码原有的traci.删除即可,如上图所示解决!

4.在git clone下载好carla源码后,按照步骤首先进行./Update.sh脚本,但由于是国外的域名,用非会员的科学上网工具下载速度异常慢,解决方法更换下载镜像源,采用南方科技大学镜像源,先打开Update.sh脚本更改方法如下:
在这里插入图片描述修改第50行如上图所示,下载速度直接起飞!

2022年10月18日重新装机更新bug:
Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第13张图片
报错404 Not Found
原因:http://ftp.cixug.es/apache//xerces/c/3/sources/xerces-c-3.2.3.tar.gz链接下没有这个xerces-c-3.2.3.tar.gz文件了,点进这个连接http://ftp.cixug.es/apache//xerces/c/3/sources会发现只有3.2.4版本的tar.gz文件了

解决方案:
打开/Carla_0.9.12/Util/BuildTools/Setup.sh脚本,更改第428行XERCESC_VERSION=3.2.4如下图:
Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第14张图片
更改完这个脚本还不算完,后续在make PythonAPI的过程中还会报错recipe for target ‘osm2odr’ failed,具体报错当时没有截图

原因:刚才装的xerces库为3.2.4版本,只在setup.sh脚本中更改了相关的版本代号代码,下载之后的xerces库在下图位置
Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第15张图片
而编译osm2odr库的脚本内容中需要调用这个库,而脚本中的版本代号仍然为xerces-c-3.2.3…,由于我们更改setup.sh后安装的是xerces-c-3.2.4,所以文件路径不匹配,找不到xerces-c-3.2.3。

解决方案:
打开编译osm2odr库的编译脚本,BuildOSM2ODR.sh,路径为/Carla_0.9.12/Util/BuildTools/BuildOSM2ODR.sh
更改第100 101行如下:

Ubuntu18.04安装carla0.9.9 & UE4.24踩坑版_第16张图片
将3.2.3改称3.2.4即可

你可能感兴趣的:(python,自动驾驶,ue4)