Carla Simulation 源码编译安装----踩坑记录

Carla Simulation 源码编译安装

参考文档:

  1. 官网参考文档:https://carla.readthedocs.io/en/latest/build_linux/
  2. Ubuntu 16.04系统中基于源代码构建自动驾驶模拟器CARLA 0.9.0的方法:https://blog.csdn.net/davidhopper/article/details/81485872
  3. 自动驾驶模拟工具CARLA的安装:https://blog.csdn.net/gzroy/article/details/103241515/

说明:本文阐述了基于源代码构建CARLA 0.9.4版的方法(本文写作时间2020年4月28日)。
Carla的仿真环境是通过Unreal Engine虚拟引擎建立。不同版本Carla对应的UE版本不同。CARLA0.9.4需编译UE4.21.2。建立anaconda python3.5虚拟环境进行编译.

1. 安装依赖工具包

1.1 建立python3.5的环境

conda create -n your_env_name python=X.X

1.2 安装依赖

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install build-essential clang-6.0 lld-6.0 g++-7 ninja-build python3-pip python3-dev tzdata sed curl wget unzip autoconf libtool
pip3 install setuptools nose2

配置构建CARLA环境的编译工具:

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

2. 安装虚幻引擎(Unreal Engine)

2.1 注册Unreal Engine账号,并将其连接至你的GitHub账号

虚幻引擎在GitHub上的代码仓库是私有的,需要在网站上注册一个账户,并授权可以访问GitHub网站代码。

  • Unreal Engine账号注册完毕后,一定要进自己预留的E-mail邮箱,点击激活链接,否则注册无效。此后,再次进入虚幻引擎官网,进入个人账号主页,将Unreal Engine账号连接到自己在GitHub上的账号,连接后同样会有一份邮件发送到你的E-mail邮箱,点击邮件中的链接确认账号绑定,如下图所示:

在这里插入图片描述

  • 接下来进入GITHUB中的UE4专栏https://github.com/EpicGames,此时网页顶端会有一个提示邀请你加入Epic games team,同意后刷新就会显示如下页面,否则只会显示ThirdParty和Signup两项内容。

在这里插入图片描述

  • 第一个UnrealEngine就是引擎源码,下载Unreal Engine 4.21.2-release

在这里插入图片描述

2.2 下载并安装Unreal Engine 4.21.2

链接:https://pan.baidu.com/s/16qrez2wzBDYHE6HdJ8BlEg 提取码: 7ya6

./Setup.sh
./GenerateProjectFiles.sh
make
#启动UE4Editor
./Engine/Binaries/Linux/UE4Editor

启动UE4Editor的时候可能会报错,由于opengl版本的问题,不支持,因此可以重新安装显卡驱动,安装过程中要带opengl-files,就可以安装最新的opengl版本。

2.3 设置环境变量

打开配置文件~/.bashrc,将如下内容加入到文件末尾:

# Unreal Engine  换成自己UE4对应的路径
export UE4_ROOT=~/<path to UnrealEngine>/UnrealEngine-4.21.2-release

3. 安装CARLA模拟器

3.1 下载CARLA源代码

基于源代码安装CARLA是一件很简单的事,使用命令./Update.sh和make launch即可,但由于脚本./Update.sh需要从美国服务器下载一个4GB的依赖文件:Content_0.9.4.tar.gz。由于“墙”的存在,下载有点困难,需要用VPN
在这里插入图片描述

下载链接根据源代码文件carla/Util/ContentVersions.txt中的描述(如下所示)确定,记住我们要下载0.9.4版对应的依赖文件:Content_0.9.4.tar.gz。

在这里插入图片描述

即对应的下载链接为:https://drive.google.com/open?id=10Tc0DMXpfH7W28zwagXsVTjpkhGx3KlzS

下面是我的下载网盘链接

carla 0.9.4:

链接: https://pan.baidu.com/s/1u7In-p3ogvfY6a9IehCizA 提取码: beue

Content 0.9.4:

链接: https://pan.baidu.com/s/1aR3wEUshayq2gQ8EurfrDQ 提取码: nn72

由于Content_0.9.4.tar.gz文件较大,其中Static文件夹过大,分别分为四个压缩文件。下载后解压如下:
在这里插入图片描述

在这里插入图片描述

3.2 升级CMake到3.9.0以上版本

到CMake官网下载最新版cmake-3.17.1.tar.gz,使用如下命令,升级安装CMake:

# 进入下载目录
cd ~/Downloads/
# 解压文件cmake-3.17.1.tar.gz
tar xzvf cmake-3.17.1.tar.gz
# 进入cmake目录
cd cmake-3.17.1/
# 生成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.17.1版
cmake --version

3.3 构建CARLA 0.9.4

如果没有墙,基于源代码安装CARLA是一件很简单的事,使用命令./Update.sh和make launch即可。

3.3.1 Content文件
  • content0.9.4文件夹说明:

文件包含以下内容:
在这里插入图片描述

Static文件内容:
在这里插入图片描述

  • carla文件解压后,不包括Content:

在这里插入图片描述
在这里插入图片描述

  • 运行./update.sh
  1. 在根目录下生成Content文件夹,不够好像没用。。后面直到编译完毕都是空的。

在这里插入图片描述
2. 会建立Unreal/CarlaUE4/Content/carla文件夹,具体看看一下setup.sh

在这里插入图片描述
由于翻墙的原因,content很难下下来,所有我们把已经从别的渠道下好的content0.9.4里面的几个文件拷到这个目录

在这里插入图片描述

通过查看./Update.sh的代码可知,这一个下载依赖文件Content_0.9.4.tar.gz的脚本。如果在终端进行下载,多半不会成功,所以我们可以通过其他渠道进行下载。

./Update.sh的部分代码如下:

在这里插入图片描述

由此可知,先在carla-0.9.4目录下运行./update.sh建立SCRIPT_DIR/Unreal/CarlaUE4/Content/Carla路径的文件夹,将Content_0.9.4.tar.gz解压道该路径下。(注:ExportedMaps文件夹没有,那是在后面编译的时候会生成)

# 进入~/carla/carla-0.9.4/carla/Unreal/CarlaUE4/Content/Carla目录
cd ~/carla/carla-0.9.4/Unreal/CarlaUE4/Content/Carla
# 将Content_0.9.0.tar.gz解压到当前目录,~/Downloads是源文件存放目录
tar xzvf ~/Downloads/Content_0.9.0.tar.gz

如图所示:

在这里插入图片描述

3.3.2 python的问题

说明:自己在编译源码的过程中遇到很多问题,基本都是python版本不对导致的,有些还要对源码的一些编译脚本进行修改,才能成功,坑了很久。。。。

make launch 其中编译的内容包含主要三个

make setup
make LibCarla
make CarlaUE4Editor

因此可以分布编译以上三步,或直接编译make launch,但是分布编译可以看出错误。
编译过程中的错误:主要是python版本的问题,要修改版本3.5。

  • include "pyconfigh.h"找不到的问题
    环境创建完成后,还要再输入命令export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:path/to/your/Anaconda3/include/python3.5m,命令视自身路径而定。
  • 其中版本问题还会在后面的make PythonAPI出现,
    会报错找不到libboost_python35.a, libboost_system.a
    这些编译文件在make setup时会在carla-0.9.4/Build/boost-1.69.0-install生成,但是由于版本原因,系统python是2.7,需要指定python3.5的路径,否则只会生成2.7。
    /home/feng/carla/carla-0.9.4/Util/BuildTools路径中setup.sh文件中python3的部分内容修改:
    第130、140、141行进行修改。

  py3="/usr/bin/env python3"
  py3_root=`${py3} -c "import sys; print(sys.prefix)"`
  pyv=`$py3 -c "import sys;x='{v[0]}.{v[1]}'.format(v=list(sys.version_info[:2]));sys.stdout.write(x)";`
  ./bootstrap.sh \
      --with-toolset=clang \
      --prefix=../boost-install \
      --with-libraries=python, filesystem \  #####130行####
      --with-python=${py3} --with-python-root=${py3_root}

  if ${TRAVIS}
  then
    echo "using python : ${pyv} : ${py3_root}/bin/python3 ;" > ${HOME}/user-config.jam
  else
    echo "using python : ${pyv} : ${py3_root}/bin/python3 ;" > project-config.jam
  fi

  ./b2 toolset="${BOOST_TOOLSET}" cxxflags="${BOOST_CFLAGS}" --prefix="../${BOOST_BASENAME}-install" --with-python include="/home/feng/anaconda3/envs/carla_env/include/python3.5m/" -j ${CARLA_BUILD_CONCURRENCY} stage release      #140行#
  ./b2 toolset="${BOOST_TOOLSET}" cxxflags="${BOOST_CFLAGS}" --prefix="../${BOOST_BASENAME}-install" --with-python include="/home/feng/anaconda3/envs/carla_env/include/python3.5m/" -j ${CARLA_BUILD_CONCURRENCY} install      ####141行####

  popd >/dev/null

  rm -Rf ${BOOST_BASENAME}-source
  rm ${BOOST_BASENAME//[-.]/_}.tar.gz
3.3.3 编译代码

查看Makefile文件,可知编译的文件脚本可以根据Linux.mk查看,其中大量变量在Vars.mk文件中定义。
在这里插入图片描述

Linux.mk文件如下:

在这里插入图片描述

其中编译要注意的是make PythonAPI的时候,我们的环境是python3的所以 编译指令应该是make PythonAPI.3, 如下图所示:

在这里插入图片描述

执行一下命令:

make setup
make LibCarla
make CarlaUE4Editor
make launch
make PythonAPI.3
make package

具体的编译功能可参考官方文档:
在这里插入图片描述

  • 同样如果3.3.2中的python版本问题没有解决,make PythonAPI.3时,会报错找不到libboost_python35.a, libboost_system.a,并且在执行py代码时报错can not import carla
  • 一定要make package,才能生成可执行文件,否则通过make launch-only启动carla,是无法启动carla的服务端的。后面运行/home/feng/carla/carla-0.9.4/PythonAPI中的manual_control.py会报错链接超时—RuntimeError: time-out of 2000ms while waiting for the simulator, make sure the simulator is ready and connected to 127.0.0.1:2000
  • make package后,/home/feng/carla/carla-0.9.4/Unreal/CarlaUE4/Binaries路径下会有可执行文件。

在这里插入图片描述

  • make package报错—git的问题
    参考链接https://blog.csdn.net/daydayjump/article/details/80850390,上传本地代码即可。

4. 运行

cd carla/carla-0.9.4/Unreal/CarlaUE4/Binaries/Linux 
./CarlaUE4

再开一终端

cd carla/carla-0.9.4/PythonAPI/
python manual_control.py 

即可手动控制车辆
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值