百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

CARLA的基本架构和安装指南 carlad

liebian365 2024-10-23 13:54 18 浏览 0 评论



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自动驾驶在读博士,也是奔驰北美研究院高级深度学习工程师。感谢叶小飞分享!

相关推荐

4万多吨豪华游轮遇险 竟是因为这个原因……

(观察者网讯)4.7万吨豪华游轮搁浅,竟是因为油量太低?据观察者网此前报道,挪威游轮“维京天空”号上周六(23日)在挪威近海发生引擎故障搁浅。船上载有1300多人,其中28人受伤住院。经过数天的调...

“菜鸟黑客”必用兵器之“渗透测试篇二”

"菜鸟黑客"必用兵器之"渗透测试篇二"上篇文章主要针对伙伴们对"渗透测试"应该如何学习?"渗透测试"的基本流程?本篇文章继续上次的分享,接着介绍一下黑客们常用的渗透测试工具有哪些?以及用实验环境让大家...

科幻春晚丨《震动羽翼说“Hello”》两万年星间飞行,探测器对地球的最终告白

作者|藤井太洋译者|祝力新【编者按】2021年科幻春晚的最后一篇小说,来自大家喜爱的日本科幻作家藤井太洋。小说将视角放在一颗太空探测器上,延续了他一贯的浪漫风格。...

麦子陪你做作业(二):KEGG通路数据库的正确打开姿势

作者:麦子KEGG是通路数据库中最庞大的,涵盖基因组网络信息,主要注释基因的功能和调控关系。当我们选到了合适的候选分子,单变量研究也已做完,接着研究机制的时便可使用到它。你需要了解你的分子目前已有哪些...

知存科技王绍迪:突破存储墙瓶颈,详解存算一体架构优势

智东西(公众号:zhidxcom)编辑|韦世玮智东西6月5日消息,近日,在落幕不久的GTIC2021嵌入式AI创新峰会上,知存科技CEO王绍迪博士以《存算一体AI芯片:AIoT设备的算力新选择》...

每日新闻播报(September 14)_每日新闻播报英文

AnOscarstatuestandscoveredwithplasticduringpreparationsleadinguptothe87thAcademyAward...

香港新巴城巴开放实时到站数据 供科技界研发使用

中新网3月22日电据香港《明报》报道,香港特区政府致力推动智慧城市,鼓励公私营机构开放数据,以便科技界研发使用。香港运输署21日与新巴及城巴(两巴)公司签署谅解备忘录,两巴将于2019年第3季度,开...

5款不容错过的APP: Red Bull Alert,Flipagram,WifiMapper

本周有不少非常出色的app推出,鸵鸟电台做了一个小合集。亮相本周榜单的有WifiMapper's安卓版的app,其中包含了RedBull的一款新型闹钟,还有一款可爱的怪物主题益智游戏。一起来看看我...

Qt动画效果展示_qt显示图片

今天在这篇博文中,主要实践Qt动画,做一个实例来讲解Qt动画使用,其界面如下图所示(由于没有录制为gif动画图片,所以请各位下载查看效果):该程序使用应用程序单窗口,主窗口继承于QMainWindow...

如何从0到1设计实现一门自己的脚本语言

作者:dong...

三年级语文上册 仿写句子 需要的直接下载打印吧

描写秋天的好句好段1.秋天来了,山野变成了美丽的图画。苹果露出红红的脸庞,梨树挂起金黄的灯笼,高粱举起了燃烧的火把。大雁在天空一会儿写“人”字,一会儿写“一”字。2.花园里,菊花争奇斗艳,红的似火,粉...

C++|那些一看就很简洁、优雅、经典的小代码段

目录0等概率随机洗牌:1大小写转换2字符串复制...

二年级上册语文必考句子仿写,家长打印,孩子照着练

二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...

一年级语文上 句子专项练习(可打印)

...

亲自上阵!C++ 大佬深度“剧透”:C++26 将如何在代码生成上对抗 Rust?

...

取消回复欢迎 发表评论: