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字符串复制...
- 二年级上册语文必考句子仿写,家长打印,孩子照着练
-
二年级上册语文必考句子仿写,家长打印,孩子照着练。具体如下:...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- wireshark怎么抓包 (75)
- qt sleep (64)
- cs1.6指令代码大全 (55)
- factory-method (60)
- sqlite3_bind_blob (52)
- hibernate update (63)
- c++ base64 (70)
- nc 命令 (52)
- wm_close (51)
- epollin (51)
- sqlca.sqlcode (57)
- lua ipairs (60)
- tv_usec (64)
- 命令行进入文件夹 (53)
- postgresql array (57)
- statfs函数 (57)
- .project文件 (54)
- lua require (56)
- for_each (67)
- c#工厂模式 (57)
- wxsqlite3 (66)
- dmesg -c (58)
- fopen参数 (53)
- tar -zxvf -c (55)
- 速递查询 (52)