Client-Server的交互形式
如下图所示,CARLA主要分为Server与Client两个模块,Server端用来建立这个仿真世界,而Client端则是由用户控制,用来调整、变化这个仿真世界。
1. Server。Server端负责任何与仿真本身相关的事情:从3D渲染汽车、街道、建筑,传感器模型的构建,到物理计算等等。它就像一个造物主, 将整个世界建造出来,并且根据Client 的外来指令更新这个世界。它本身是基于Unreal Enigne做出的3D渲染(很多游戏都是使用这个强大的引擎做的哦)。
2. Client。如果server构造了整个世界,那么这个世界不同时刻到底该如何运转(比如天气是什么样,有多少辆车在跑,速度是多少)则是由Client端控制的。用户通过书写Python脚本(最新版本C++ 也可以)来向Server端输送指令指导世界的变化,Server根据用户的指令去执行。(可以理解为Client端耍耍嘴皮子下个指令,咱们的造物主亲力亲为去执行这些指令。)另外,Client端也可以接受Server端的信息,譬如某个照相机拍到的路面图片。
CARLA核心模块
① Traffic Manager。自动驾驶之所以难搞,很核心的一个原因就是现实世界车太多了!试想如果整个世界就你一辆车在大马路上跑,自动驾驶恐怕早实现了。因此,CARLA专门构造了Traffic Manager这个模块来模拟类似现实世界负责的交通环境。通过这个模块,用户可以定义N多不同车型、不同行为模式、不同速度的车辆在路上愉快地与你的自动驾驶汽车(Ego-Vehicle)一起玩耍。这个模块后面会详细讲解。
②Sensors。CARLA里面有各种各样模拟真实世界的传感器模型,包括相机、激光雷达、声波雷达、IMU、GNSS等等。为了让仿真更接近真实世界,它里面的相机拍出的照片甚至还有畸变和动态模糊效果。用户一般将这些Sensor attach到不同的车辆上来收集各种数据。
③Recorder。俗话说的好,不能复现的仿真不是好仿真。这个模块就是用来记录仿真每一个时刻(Step)的状态,可以用来回顾、复现等等。
④ROS bridge。这个模块可以让CARLA与ROS还有Autoware交互,正是这个模块的存在使得在仿真里测试你的自动驾驶系统变得可能,十分重要,后面也会详细讲解。
⑤Open Assest。这个模块可以允许你为仿真世界添加customized的物体库,比如你可以在默认的汽车蓝图里再加一个真实世界不存在、外形酷炫的小飞汽车,用来给Client端调用。
CARLA安装
在开始之前有两点要说明:
1. 如果你使用的是Windows系统,那么我强烈建议换成Linux系统的电脑进行自动驾驶方向的研究。虽然CARLA也支持Windows Build, 但是后续要用到ROS和Autoware的时候还用Windows可能会出各种兼容问题。
2. CARLA可以使用Pre-comiled版本,但是在这里我是打算build from source。为什么呢?一个是方便未来自己修改CARLA内部代码,实现更customized的功能,另外build from source往往会给你更多的错误提示。
系统配置要求
- Ubuntu 14.04/16.04/18.04。Ubuntu 20.04也可以Build CARLA, 不过Autoware不支持,所以不建议使用该版本。
- Nvidia Drvier 提前安装好,并且电脑配置一个至少3G的GPU.
- Clang
- 网络连接良好
- 硬盘里至少预存100G空间
安装依赖包
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
Note: 如果你 sudo apt-get update时出现 404 之类的错误,建议参考以下两个链接。
https://askubuntu.com/questions/170076/update-manager-failed-to-download-repository-401-error
https://askubuntu.com/questions/863053/sudo-apt-get-update-error-404-on-16-04
如果你使用的是Ubuntu18.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
环境配置
我们要保证CARLA和它的引擎UNREAL ENGINE用的是一个版本的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
把你的Github和UnrealEngine连接到一起。因为UnrealEngine的repo是private的,如果你的github没有连接到一起,是无法下载引擎Repo的。
注册Github帐号请点击这里:https://github.com/
在你的 terminal安装git
sudo apt install git
注册一个UnrealEngine的帐号:
https://www.unrealengine.com/zh-CN/feed
将你的Github与UnrealEngine关联,具体如下:
1. 使用经过验证的Epic Games帐户登录www.unrealengine.com,单击网站标题栏中的用户名,然后选择个人选项。
2. 从菜单中选择连接的帐户。
3. 单击GitHub图标下方的连接按钮。
4. 查看《虚幻引擎最终用户许可协议》并选中对应复选框接受该协议,然后单击关联您的帐户按钮(如果已经接受了最新版本的《虚幻引擎最终用户许可协议》,则不会显示该提示)。
5. 登录现有GitHub帐户
6. 单击授权按钮,完成关联流程
在进行下一步之前,进入https://github.com/EpicGames - Connect to preview 来查看你是否能看到一个叫做UnrealEngine的repo,如果能,说明你关联成功了。
Github Repo Clone
安装Unreal引擎
git clone --depth=1 -b 4.24 https://github.com/EpicGames/UnrealEngine.git ~/UnrealEngine_4.24
cd ~/UnrealEngine_4.24
./Setup.sh && ./GenerateProjectFiles.sh && make
检查Unreal引擎是否工作
cd ~/UnrealEngine_4.24/Engine/Binaries/Linux && ./UE4Editor
Clone CARLA Github, 在这个教程里我将使用0.9.10版本。
cd ~
git clone https://github.com/carla-simulator/carla
cd ~/carla
git checkout tags/0.9.10 -b <branch_name>
./Update.sh
把UnrealEngine的路径加到bashrc里面
export UE4_ROOT=~/UnrealEngine_4.24
激动人心的安装与测试
Make CARLA Python API(实在不知道Make在这里该怎么翻译)
make PythonAPI
make launch.
make launch 第一次初始化会时间长一些,之后好很多。如果Make成功,一个GUI就会弹出来,就是我们的仿真界面啦!开始之前记得点Play!
不要刚才弹出的界面关掉,另开一个terminal, 输入以下指令。如果一切都顺利,你应该看到和下图比较类似的情形。
cd ~/carla/PythonAPI/examples
python3 automatic_control.py
OK,到这里我们的CARLA安装就彻底结束啦!
常见问题
1. 为什么找不到CARLAUE4.sh?
Answer: 因为只有precompiled版本才有,我们build from source是木有的。执行以下指令等同于直接使用CarlaUE4.sh:
$ cdUnreal/CarlaUE4
$~/UnrealEngine_4.XX/Engine/Binaries/Linux/UE4Editor"$PWD/CarlaUE4.uproject"
2. 为什么我运行 python3automatic_control.py 的时候会自己terminated?
Answer: make Launch或者执行~/UnrealEngine_4.XX/Engine/Binaries/Linux/UE4Editor"$PWD/CarlaUE4.uproject" 后,你没有点击图形界面上绿色三角“Play"按钮
3. 我的电脑明明很强大,为什么在玩automatic_control的时候server fps 只有 3 fps?
Answer: GOEditor->Preference->Performance->uncheck “use less cpu while inbackground”
本文作者叶小飞是UCLA自动驾驶在读博士,也是奔驰北美研究院高级深度学习工程师。感谢叶小飞分享!
本文暂时没有评论,来添加一个吧(●'◡'●)