自动驾驶仿真:Carla的基本架构

自动驾驶仿真:Carla的基本架构

对于从事自动驾驶领域的小伙伴们来说,Carla这个软件一定不陌生。自动驾驶往往需要大量的数据训练与安全测试,而在实际场景中收集数据成本较高,另外有许多corner cases也非常难以在现实生活测试,于是Carla这款仿真软件便横空出世啦!

Carla是一款_开源_的_自动驾驶_仿真器,它基本可以用来帮助训练自动驾驶的所有模块,包括感知系统,Localization, 规划系统等等。许多自动驾驶公司在进行实际路跑前都要在这Carla上先溜一溜,所以可以说,用好CARLA可以让你如鱼得水,如虎添翼,如龙喷火,如饥似渴(好像越跑越偏)。

然而网上关于Carla的教程实在是少而散,不成系统,因此我在这里想补上这一块gap, 做一个史上最全的教程——从如何配置环境,到如何利用traffic manager规划复杂的交通车况来模拟现实世界,再到如何利用它进行大规模perception/planning 训练以及如何将carla与autoware耦合,我都会一一讲解。

那么今天就是这个系列课程的第一讲——Carla的基本架构!

附赠自动驾驶最全的学习资料和量产经验:链接

Client-Server的交互形式

如下图所示,Carla主要分为Server与Client两个模块,Server端用来建立这个仿真世界,而Client端则是由用户控制,用来调整、变化这个仿真世界。

  1. Server: Server端负责任何与仿真本身相关的事情:从3D渲染汽车、街道、建筑,传感器模型的构建,到物理计算等等。它就像一个造物主, 将整个世界建造出来,并且根据Client 的外来指令更新这个世界。它本身是基于UnrealEnigne做出的3D渲染(很多游戏都是使用这个强大的引擎做的哦)。

  2. Client: 如果server构造了整个世界,那么这个世界不同时刻到底该如何运转(比如天气是什么样,有多少辆车在跑,速度是多少)则是由Client端控制的。用户通过书写Python脚本(最新版本C++ 也可以)来向Server端输送指令指导世界的变化,Server根据用户的指令去执行。(可以理解为Client端耍耍嘴皮子下个指令,咱们的造物主亲力亲为去执行这些指令。) 另外,Client端也可以接受Server端的信息,譬如某个照相机拍到的路面图片。

image

Server(左图)与 Client(右图)

Carla核心模块

  1. Traffic Manager: 自动驾驶之所以难搞,很核心的一个原因就是现实世界车太多了!试想如果整个世界就你一辆车在大马路上跑,自动驾驶恐怕早实现了。因此,Carla专门构造了Traffic Manager这个模块来模拟类似现实世界负责的交通环境。通过这个模块,用户可以定义N多不同车型、不同行为模式、不同速度的车辆在路上愉快地与你的自动驾驶汽车(Ego-Vehicle)一起玩耍。这个模块后面会详细讲解。

  2. Sensors: Carla里面有各种各样模拟真实世界的传感器模型,包括相机、激光雷达、声波雷达、IMU、GNSS等等。为了让仿真更接近真实世界,它里面的相机拍出的照片甚至还有畸变和动态模糊效果。用户一般将这些Sensor attach到不同的车辆上来收集各种数据。

  3. Recorder: 俗话说的好,不能复现的仿真不是好仿真。这个模块就是用来记录仿真每一个时刻(Step)的状态,可以用来回顾、复现等等。

  4. ROS bridge: 这个模块可以让Carla与ROS还有Autoware交互,正是这个模块的存在使得在仿真里测试你的自动驾驶系统变得可能,十分重要,后面也会详细讲解。

  5. Open Assest:这个模块可以允许你为仿真世界添加customized的物体库,比如你可以在默认的汽车蓝图里再加一个真实世界不存在、外形酷炫的小飞汽车,用来给Client端调用

  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值