赞
踩
严正声明:本文系作者davidhopper原创,未经许可,不得转载。
说明:本文阐述了基于源代码构建CARLA 0.9.0
版的方法(本文写作时间2018年8月8日,此时最新版就是该版本) ,构建过程能够成功,但运行模拟器时,场景里面没有车辆和行人,需要使用Python
脚本自己添加,而之前的版本只要打开场景则自动添加车辆和行人。经我在发帖询问(见Issue #660)得知,最新的0.9.0
版虽然支持多个智能体的训练,但该版本仍然是一个非常不稳定的实验版本,如果不是有特殊需求,建议不要使用,而是改用稳定版0.8.2
。但本文阐述的构建方法仍然通用,只是需要替换相关源代码版本。
2019年3月15日更新:构建CARLA 0.9.4
版的方法相同,Unreal Engine
的版本为:4.21,CARLA
的版本为:0.9.4,在切换分支时注意换成对应版本号:4.21.2-release、0.9.4。
CARLA
是Intel主导开发的一个开源自动驾驶模拟器,基于虚幻引擎(Unreal Engine
)实现,是一个不错的仿真环境。CARLA
依赖于Ubuntu 16.04
或更高版本操作系统。本文介绍Ubuntu 16.04
系统中基于源代码构建CARLA 0.9.0
的方法。
注意:下载文中涉及的软件及源代码,需要设置代理及国内镜像服务器,可以分别参考我两篇博客:《Ubuntu 16.04系统中代理工具shadowsocks-qt5的使用方法》、《使用国内镜像服务器,解决apt-get、pip等安装工具下载依赖包速度慢的问题》。
使用如下命令安装依赖工具包:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install build-essential clang-5.0 lld-5.0 g++-7 ninja-build python python-pip python-dev tzdata sed curl wget unzip autoconf libtool
sudo pip install setuptools nose2
配置构建CARLA
环境的编译工具:
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/lib/llvm-5.0/bin/clang++ 101
sudo update-alternatives --install /usr/bin/clang clang /usr/lib/llvm-5.0/bin/clang 101
Unreal Engine
)Unreal Engine
账号,并将其连接至你的GitHub
账号虚幻引擎在GitHub上
的代码仓库是私有的,需要在网站上注册一个账户,并授权可以访问GitHub
网站代码。注册账号的过程就不讲了,大家去官网注册即可。账号注册完毕后,一定要进自己预留的E-mail邮箱,点击激活链接,否则注册无效。此后,再次进入虚幻引擎官网,进入个人账号主页,将Unreal Engine
账号连接到自己在GitHub
上的账号,连接后同样会有一份邮件发送到你的E-mail邮箱,点击邮件中的链接确认账号绑定,如下图所示:
账号绑定成功后,就可以在GitHub网站看到Unreal Engine的源代码了:
Unreal Engine 4.19.2
使用如下命令下载并安装Unreal Engine(注意:我们使用4.19.2版,因为下文构建CARLA0.9.0需要依赖该版本,如果使用其他更低级版本,我不知道是否会出错,感兴趣的话可以尝试。但我一开始没注意使用最新的4.20.1版,结果就报错了,具体描述见3.6节)
# 下载源代码 git clone git@github.com:EpicGames/UnrealEngine.git # 进入Unreal Engine源代码目录 cd UnrealEngine # 拉取更新远程分支列表 git remote update origin --prune # 查看标签列表 git tag --list # 签出标签4.19.2-release并在本地同步建立4.19.2-release分支 # -b后第一个参数表示分支名,第二个参数表示标签名 # 更新过程时间会比较长 git checkout -b 4.19.2-release 4.19.2-release # 查看本地分支,确认目前处于4.19.2-release分支,并与远程4.19.2-release标签对应 git branch -vv # 配置编译所需的环境,可能耗时较长,最终出现“SUCCESS”消息 # 配置过程中会弹出一个对话框,需要你确认。 ./Setup.sh # 生成Makefile ./GenerateProjectFiles.sh # 构建Unreal Engine,编译时间会比较长 make # 确认已经正确安装了Unreal Engine 4.19.2 ./Engine/Binaries/Linux/UE4Editor
在下载和构建过程中,需要获取很多文件,如果你的代理网速不理想,整个过程会耗时漫长(可能超过半天),甚至失败。
如果构建过程中出现编译错误,请参考该文档获取答案。
使用vi
编辑器打开配置文件~/.bashrc
,将如下内容加入到文件末尾:
# Unreal Engine
export UE4_ROOT=~/code/UnrealEngine
操作命令如下:
vi ~/.bashrc
source ~/.bashrc
CARLA
模拟器CARLA
源代码使用如下命令下载CARLA
源代码:
# 下载源代码
git clone git@github.com:carla-simulator/carla.git
# 进入CARLA源代码目录
cd carla
# 拉取更新远程分支列表
git remote update origin --prune
# 查看标签列表
git tag --list
# 签出最新的稳定版0.9.0并在本地同步建立0.9.0分支
# -b后第一个参数表示分支名,第二个参数表示标签名
git checkout -b 0.9.0 0.9.0
# 查看本地分支,确认目前处于0.9.0分支,并与远程0.9.0标签对应
git branch -vv
如果不是天朝伟大的墙,基于源代码安装CARLA
是一件很简单的事,使用命令./Update.sh
和make launch
即可,但由于脚本./Update.sh
需要从美国服务器下载一个2.9 GB的依赖文件:Content_0.9.0.tar.gz
,因此要想在命令行内下载,几乎是一个不可能完成的任务(见我发的一个问题帖:Issue #652)。于是我们另辟蹊径,使用下载工具uGet
手动下载安装,当然使用下载工具时,同样需要使用代理,如果没有代理,仍然不能顺利完成下载。
uGet
使用如下命令安装uGet:
sudo add-apt-repository ppa:plushuang-tw/uget-stable
sudo apt update
sudo apt install uget
在命令行内输入如下命令打开uGet
:
uget-gtk
或者在图形化界面中通过如下方法搜索并打开uGet
:
uGet
下载依赖文件:Content_0.9.0.tar.gz
打开uGet
,新建下载任务,下载链接根据源代码文件carla/Util/ContentVersions.txt
中的描述(如下所示)确定,记住我们要下载0.9.0
版对应的依赖文件:Content_0.9.0.tar.gz
。
**注意:**使用uGet
下载依赖文件时不能直接使用文档中的链接,而必须使用浏览器打开,等浏览器开始下载后的链接才是真正下载链接。因为该链接每天都发生变化,所以这里无法直接给出。
下载时,uGet
使用SOCK v5
代理,代理服务器为127.0.0.1
,端口为1080
。Max Connections
可根据实际情况适当增大到5~10
。因为该文件不支持断点续传,有可能要下载几次才能成功。
Here we keep a list of the Google Drive id's of the Content files. The last id in the list it's picked up by the Setup.sh script to download the last version of the contents. You can direct download with https://drive.google.com/open?id=PUT_FILE_ID_HERE 0.5.4: 0B2HFV-VuKn3PYUFFanlmZ2VMTW8 0.6.0: 1Gw8sw01hDEV4FtpHEZZwvS-6XN0jmaLT 0.7.0: 11PKC_lG7L80L1ZxiMlzV17utU45UcRnT 0.7.1: 1gf3YaFIjwr1EaK6qxq2V-a510Brt9Imq 0.8.0: 1tA-WwKA0RNhBoENYunqF3-F_wg11dL86 0.8.1: 1su5wQH7KJphAcirMA8VEDLndGigQ9tzq 0.8.2: 1llrBkZDvJmxXYh4r3jz0wuwz8Q8jRQeZ 0.8.3: 1z2XKOk9LoKI-EhxcrpI31W5TeYo2-jjn 0.8.4: 1mFNS-w5atQ45yegiTepRIeKBYVm8N8He 0.9.0: 1FtC00CrDb7Kz5StBAwb6vqOGbzZtpROx For example, the link to 0.9.0 would be https://drive.google.com/open?id=1FtC00CrDb7Kz5StBAwb6vqOGbzZtpROx
CMake
到3.9.0以上版本到CMake官网下载最新版cmake-3.12.0.tar.gz
,使用如下命令,升级安装CMake
:
# 进入下载目录 cd ~/Downloads/ # 解压文件cmake-3.12.0.tar.gz tar xzvf cmake-3.12.0.tar.gz # 进入cmake目录 cd cmake-3.12.0/ # 生成Makefile ./configure # 编译cmake make -j 8 # 安装cmake,默认安装目录为/usr/local/bin sudo make install # 建立到/usr/bin/cmake的符号链接 sudo ln -s /usr/local/bin/cmake /usr/bin/cmake # 检查cmake是否已升级到最新的3.12.0版 cmake --version
CARLA 0.9.0
使用如下命令构建CARLA 0.9.0
:
# 进入~/code/carla/Unreal/CarlaUE4/Content/Carla目录 cd ~/code/carla/Unreal/CarlaUE4/Content/Carla # 将Content_0.9.0.tar.gz解压到当前目录,~/Downloads是源文件存放目录 tar xzvf ~/Downloads/Content_0.9.0.tar.gz # 回CARLA源代码根目录 cd ~/code/carla # 清除上次编译信息 make clean # 更新配置信息,注意一定要加-s选项,不然会一直去下载依赖文件Content_0.9.0.tar.gz, # 而在国内又连不上网,等待很长一段时间后会报网络连接错误 ./Update.sh -s # 构建CARLA,并在UE4Editor中启动CARLA # 因为make程序又会从网上下载依赖包,而由于墙的原因,自然又无法下载。 # 我实在没办法了,只有借助proxychains在命令行中使用代理下载 # 关于proxychains的安装使用,请见我的博客: # https://blog.csdn.net/davidhopper/article/details/78883450 # 第六节内容 # 注意:在命令行中使用代理非常不稳定,不到万不得已,尽可能不用 # 如果下载数据出错,一是确认代理已开,二是多次重复执行下述命令 # 如果依赖文件已经下载完毕,就可以直接执行make launch proxychains make launch # 构建可单独运行的CARLA模拟器 make package
最后如果出现如下启动界面,表明CARLA 0.9.0
已经顺利构建完成:
CARLA 0.9.0
时可能出现的错误UnrealHeaderTool failed for target 'CarlaUE4Editor'
错误在构建过程中如果出现如下错误:
Error: UnrealHeaderTool failed for target 'CarlaUE4Editor' (platform: Linux, module info: /home/davidhopper/code/carla/Unreal/CarlaUE4/Intermediate/Build/Linux/B4D820EA/CarlaUE4Editor/Development/CarlaUE4Editor.uhtmanifest, exit code: OtherCompilationError (5)).
Makefile:620: recipe for target 'CarlaUE4Editor' failed
make[1]: *** [CarlaUE4Editor] Error 5
make[1]: Leaving directory '/home/davidhopper/code/carla/Unreal/CarlaUE4'
Util/BuildTools/Linux.mk:9: recipe for target 'launch' failed
make: *** [launch] Error 2
这是因为CARLA 0.9.0
不支持Unreal Engine 4.20
以上版本造成,使用如下命令可以查看UE4Editor
版本:
cd ~/code/UnrealEngine/Engine/Binaries/Linux
./UE4Editor
如上图所示,启动界面显示的UE4Editor
版本是4.20.1
,表明安装的Unreal Engine
版本过高,需重新安装。退出该程序,执行如下命令重新安装Unreal Engine
:
# 进入Unreal Engine目录 cd ~/code/UnrealEngine # 查看当前有几个分支,一般默认会有release分支 git branch # 切换到4.9.2-release分支以外的其他分支,我切换到release分支 git checkout release # 删除原有4.9.2-release分支 git branch -d 4.19.2-release # 签出标签4.19.2-release并在本地同步建立4.19.2-release分支 # 更新过程时间会比较长 git checkout -b 4.19.2-release 4.19.2-release # 配置编译所需的环境,耗时很长,最终出现“SUCCESS”消息 ./Setup.sh # 生成Makefile ./GenerateProjectFiles.sh # 清除原有编译 make ARGS=-clean # 构建Unreal Engine,编译时间会比较长 make # 确认已经正确安装了Unreal Engine 4.19.2 ./Engine/Binaries/Linux/UE4Editor
然后执行如下命令继续构建CARLA
:
cd ~/code/carla
make clean
make launch
libboost_python27.a
错误使用命令package
构建可单独运行的CARLA
模拟器时,出现如下错误:
x86_64-linux-gnu-gcc: error: /home/davidhopper/code/carla/PythonAPI/dependencies/lib/libboost_python27.a: No such file or directory
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
Util/BuildTools/Linux.mk:47: recipe for target 'PythonAPI' failed
make: *** [PythonAPI] Error 1
这是由于Python
版本不正确导致,CARLA
模拟器源代码默认提供的是基于Python 3.5
版的第三方库文件 libboost_python35.a
,而我当前使用了Python 2.7
。于是,需要修改系统当前使用的Python
版本,操作方法见我的博客《Ubuntu 16.04安装tensorflow_gpu 1.9.0的方法》第2.1节内容。为完整起见,下面也给出简单的操作过程:
python -V
sudo update-alternatives --config python
python -V
然后重新执行下述编译指令:
make clean
make package
CARLA
模拟器CARLA
模拟器基于源代码构建CARLA
模拟器后,启动方式比较奇葩,使用Ctrl+Alt+T
打开一个终端,执行如下命令:
cd ~/code/carla
make launch-only
如果不怕麻烦,也可以切换到UE4Editor
目录,执行如下命令打开:
cd ~/code/UnrealEngine/Engine/Binaries/Linux
./UE4Editor ~/code/carla/Unreal/CarlaUE4/CarlaUE4.uproject
键盘操作说明如下:
W : throttle 油门 S : brake 刹车 AD : steer 方向盘 Q : toggle reverse 切换倒档 Space : hand-brake 手刹 P : toggle autopilot 切换自动驾驶 Arrow keys : move camera 移动相机 PgUp PgDn : zoom in and out 放大与缩小 mouse wheel : zoom in and out 放大与缩小 Tab : toggle on-board camera 切换车载相机 R : restart level 重启级别 G : toggle HUD 切换抬头显示,即在前档玻璃上显示数字信息 C : change weather/lighting 改变天气/照明 Enter : jump 跳跃 F : use the force 使用暴力 F11 : toggle fullscreen 切换全屏 Alt+F4 : quit 退出
CARLA
模拟器使用的街景地图目前提供Town01
、Town01_BuiltData
、Town02
、testmaptruck
等四种街景地图,执行如下命令指定地图:
cd ~/code/UnrealEngine/Engine/Binaries/Linux
# 将Town01替换为Town01_BuiltData、Town02、testmaptruck可切换不同的街景地图
./UE4Editor ~/code/carla/Unreal/CarlaUE4/CarlaUE4.uproject /Game/Carla/Maps/Town01
CARLA
模拟器作为服务器运行可以将CARLA
模拟器作为服务器运行,这样就可以在客户端连接他,测试深度强化学习算法了。使用Ctrl+Alt+T
打开一个终端,执行如下命令:
cd ~/code/UnrealEngine/Engine/Binaries/Linux
# 使用800X600的小视窗,一方面节约资源,另一方面可观察游戏效果
./UE4Editor ~/code/carla/Unreal/CarlaUE4/CarlaUE4.uproject /Game/Carla/Maps/Town01 -carla-server -benchmark -fps=15 -windowed -ResX=800 -ResY=600
CARLA
模拟器默认是否以服务器模式运行使用vi编辑器打开配置文件Unreal/CarlaUE4/Config/CarlaSettings.ini
:
cd ~/code/carla
# 如果配置文件Unreal/CarlaUE4/Config/CarlaSettings.ini不存在,则先复制一个
cp Docs/Example.CarlaSettings.ini Unreal/CarlaUE4/Config/CarlaSettings.ini
# 修改配置文件Unreal/CarlaUE4/Config/CarlaSettings.ini
vi Unreal/CarlaUE4/Config/CarlaSettings.ini
修改如下配置项,true
表示以服务器模式运行,false
表示以单机形式运行。
[CARLA/Server]
UseNetworking=false
然后按照4.1节操作,重启CARLA
模拟器。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。