ubuntu18.04 源码编译Carla0.9.13
一、简介
虽然今天已经是2022年8月25日,Ubuntu已经发布到了22.04。但是为了减少不必要的麻烦,我们还是使用官网推荐的Ubuntu18.04系统来编译Carla源码。
首先,请先查看官网教程https://carla.readthedocs.io/en/0.9.13/build_linux/,再来使用本教程安装Carla。
注意:如果将操作系统安装在移动硬盘中,不要使用机械硬盘,会非常慢。可以选一个固态硬盘,根据自己的选择,插上电脑雷电口,最快读写速度可以达到1000+MB/s。
二、安装Ubuntu18.04
默认已经安装好,不做介绍
三、安装NVIDIA驱动
默认已经安装好
没安装的,见如下链接
https://www.cnblogs.com/chenjian688/p/16202512.html
四、安装基础系统工具
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
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 git
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
# For Python 3
pip3 install --upgrade pip
# For Python 2
pip install --upgrade pip
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
五、安装UE4引擎
1、首先注册UE账号
2、然后注册GitHub账号
3、在UE4个人中心中关联GitHub账号
如下网址是关联的教程图
https://www.unrealengine.com/en-US/ue-on-github
4、在GitHub中加入UE4工程团队
https://github.com/EpicGames,点击网址,登录GitHub后,网页顶端会有一个要求提示,同意即可。
5、下载并编译UE4
#1. Clone the content for CARLA's fork of Unreal Engine 4.26 to your local computer:
git clone --depth 1 -b carla https://github.com/CarlaUnreal/UnrealEngine.git ~/UnrealEngine_4.26
#这个语句执行后会让你输github的账号密码,但是这个密码不是你登陆的密码,是需要生成token!
具体方法参考如下链接
https://blog.csdn.net/m0_51693209/article/details/124664968
#最后会生成一长串数字,这个就是你需要输入的密码。
#2. Navigate into the directory where you cloned the repository:
cd ~/UnrealEngine_4.26
#3. Make the build. This may take an hour or two depending on your system.
./Setup.sh && ./GenerateProjectFiles.sh && make
#4. Open the Editor to check that Unreal Engine has been installed properly.
cd ~/UnrealEngine_4.26/Engine/Binaries/Linux && ./UE4Editor
注意:UE4的Carla分支git下来大约1.7g,但是编译中会继续下载依赖,./Setup.sh大约会下载11-12G资源
等命令行不再刷新,界面不再变化,就是UE4编译完成,可以关闭界面,进行下一步了。
六、安装Carla
1.安装工具
sudo apt-get install aria2
sudo apt install vulkan-utils
2.克隆源码
因为目master分支就是0.9.13,所以直接克隆主分支,如果以后有更新,记得克隆指定分支
git clone https://github.com/carla-simulator/carla
3.、进入根目录,进行更新资源和编译操作
cd ~/carla/
4、更改下载资源的脚本
第一次安装:
将~/carla/Update.sh中的rm Content.tar.gz屏蔽,保留下来,用于以后使用
第二次安装:
将之前下载的Content.tar.gz复制到Carla工程根目录,然后屏蔽wget -c ${CONTENT_LINK} -O Content.tar.gz
./Update.sh
5、设置虚幻引擎安装位置的环境变量
echo "export UE4_ROOT=~/UnrealEngine_4.26" >> ~/.bashrc
source ~/.bashrc
6、编译PythonAPI和服务器
#在carla根目录运行命令,中途下载的库都在Build目录下,默认会删除下载的库文件,只保留编译后的头文件和.so
make PythonAPI
#make PythonAPI ARGS="--python-version=2.7, 3.6, 3.7, 3.8" 官方输出指定Python API命令可能有问题
#make PythonAPI ARGS="python-version=2.7, 3.6, 3.7, 3.8"
make launch
七、发布二进制版本的Carla
make package
在Carla根目录运行上述命令,会在~/carla/Dist中生成和github上一样的预编译版本的压缩包。如果没有生成可能是没有成功,多运行几次。
八、将roadrunner导出的.xodr和.fbx文件导入Carla
按照如下官方教程,在指定位置放好文件然后在carla根目运行make import即可。
https://carla.readthedocs.io/en/0.9.13/tuto_M_manual_map_package/
九、make package导出二进制版本的Carla时,怎么将自建地图也打包?
通过查询github上的提问,可以通过以下方法打包。
注意:上述添加的包路径,最底层目录不要加/,软件选择的目录可能生成pakcage01/Maps/taizihu/Opendrive/,将最后的斜杠删除,不然编译报错
十、和sumo联合仿真
安装及运行教程链接
https://blog.csdn.net/weixin_52944278/article/details/124402873
可能遇到的问题:
1、no model carla
python中对carla的api引用可以直接使用egg文件。
try:
sys.path.append(glob.glob('../carla/dist/carla-*%d.%d-%s.egg' % (
sys.version_info.major,
sys.version_info.minor,
'win-amd64' if os.name == 'nt' else 'linux-x86_64'))[0])
except IndexError:
pass
如果你的Python版本是3以上,使用Python3以上的egg就可以的。自己的Python是3.8,官方默认输出的是3.7,会造成找不到carla的问题。
将sys.version_info.minor改为7即可
2、运行python run_synchronization.py examples/Town04.sumocfg --sumo-gui这个指令的时候出现了 sumo_net = traci.sumolib.net.readNet(net_file)
AttributeError: module 'traci' has no attribute 'sumolib'这个错误
这是因为sumolib是独立的包,不在traci里面,你需要把carla/Co-Simulation/Sumo/sumo_integration/sumo_simulation.py的304行的这一句代码改成sumo_net = sumolib.net.readNet(net_file)