CARLA 笔记(01)— 基本架构、核心模块(Traffic Manager、Sensors、ROS bridge、Scenario runner)、高级功能、生态系统

CARLA 官网地址 http://carla.org/
CARLA 官网文档地址 https://carla.readthedocs.io/en/latest/
CARLA 中文官网 https://carla.org.cn/#/
Github: https://github.com/carla-simulator/carla

CARLA 是一个开源的自动驾驶仿真器。它从无到有,作为一个模块化和灵活的 API 来解决自动驾驶问题中涉及的一系列任务。CARLA 的主要目标之一是帮助实现自动驾驶研发的大众化,作为一种工具,用户可以很容易地访问和定制。为此,仿真器必须满足一般驾驶问题中不同用例的要求(例如,学习驾驶规则、训练感知算法等)。CARLA 以虚幻引擎为基础来运行模拟,并使用 OpenDRIVE 标准(目前是1.4)来定义道路和城市环境。对仿真的控制是通过 PythonC++ 处理的API 授予的,该 API 随着项目的进行而不断增长。

https://carla.readthedocs.io/en/0.9.13/start_introduction/

目前开源的自动驾驶仿真平台项目,包括 CarlaAirSimUdacity self-driving car simulatorApolloAutoware,从技术上讲,这些平台主要分为两类:

  • 第一类是基于合成的数据,对环境、感知及车辆进行模拟,这里的感知大多数是图像层面的感知,这类模拟器主要用于感知、规划算法的初步开发上,CarlaAirSimUdacity self-driving car simulator 就属于这类;
  • 第二类是基于真实数据的回放,这里的真实数据包括图像、lidarradar 等各种传感器的数据,这类模拟器主要用于测试无人驾驶中信息融合算法以及车辆不同部件的性能,ApolloAutoware 就属于这类。

CARLA (Car Learning to Act) 是一款开源的自动驾驶仿真器,它基本可以用来帮助训练自动驾驶的所有模块,包括感知系统,定位, 规划系统等等。

1. 基本架构

如下图所示,Carla 主要分为 ServerClient 两个模块,Server 端用来建立这个仿真世界(Simulator),而Client 端则是由用户控制,不仅可以读取到环境的数据,也可以向 Server 端发送指令来调整、改变这个仿真世界。

server

  • Server: Server 端负责任何与仿真本身相关的事情,从 3D 渲染、汽车、街道、建筑,传感器模型的构建,到物理计算等等。它就像一个造物主, 将整个世界建造出来,并且根据 Client 的外来指令更新这个世界。它本身是基于 UnrealEnigne 做出的 3D 渲染。
  • Client: 如果 Server 构造了整个世界,那么这个世界不同时刻到底该如何运转(比如天气是什么样,有多少辆车在跑,速度是多少)则是由 Client 端控制的。用户通过写 Python 脚本(或者 C++ 也可以)来向 Server 端输送指令指导世界的变化,Server 根据用户的指令去执行。 另外,Client 端也可以接受 Server 端的信息,譬如某个照相机拍到的路面图片。

server_client

也就是说,将服务器环境 Server(即仿真器 Simulator)启动,然后就不用理会它了,剩下的所有的代码和算法其实都是使用 Python 库来作为客户端通过调用 API 的方式跟这个仿真器交互。

2. 核心模块

2.1 Traffic Manager

一个内置的除了用于学习的车辆外,还可以控制车辆的系统。它作为 CARLA 提供的指挥者,以重现类似真实城市的环境。

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

2.2 Sensors

Carla 里面有各种各样模拟真实世界的传感器模型,包括相机(RGB、深度和语义分割)、碰撞检测器、惯性传感器、车道入侵检测器、障碍物探测器、激光雷达、声波雷达、IMUGNSS等等。为了让仿真更接近真实世界,它里面的相机拍出的照片甚至还有畸变和动态模糊效果。用户一般将这些 Sensor attach 到不同的车辆上来收集各种数据。

具体传感器类型有:

  • Cameras (RGB, depth and semantic segmentation) RGB相机(普通摄像头),深度相机,语义分割相机
  • Collision detector 碰撞检测
  • Gnss sensor 全球卫星定位
  • IMU sensor 惯性传感器
  • Lidar raycast 激光雷达
  • Lane invasion detector 压线检测
  • Obstacle detector 障碍物检测
  • Radar 毫米波雷达
  • RSS 责任敏感安全传感器
  • Recorder 俗话说的好,不能复现的仿真不是好仿真。这个模块就是用来记录仿真每一个时刻的状态,可以用来回顾、复现等等。

细节参考:传感器类型

2.3 ROS bridge and Autoware

这个模块可以让 CarlaROS 还有 Autoware 交互,正是这个模块的存在使得在仿真里测试你的自动驾驶系统变得可能,十分重要。

2.4 Open Assest

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

2.5 Recorder

这个功能是用来为记录 Carla 中的每一个角色。它可以访问 Carla 世界上任何地方的时间轴上的任何时刻,是一个记录跟踪工具。

2.6 Scenario runner

CARLA 提供了一系列描述不同情况的路线和场景描述,并且开放给每个人测试。

3. 高级功能

CARLA 提供了超出本模拟器介绍范围的广泛功能:

  • OpenDRIVE:独立模式。仅使用 OpenDRIVE 文件生成道路网格。允许将任何 OpenDRIVE 地图加载到 CARLA 中,而无需创建资产,不需要在 carla 中创建 assets 就可以加载 OpenDRIVE 地图。
  • PTV-VissimPTV-Vissim 是一款 traffic 仿真软件,在 CARLAPTV-Vissim 交通模拟器之间运行同步模拟。
  • recorder:保存模拟状态的快照以精确地重新进行模拟。
  • 渲染选项:图形质量设置、离屏渲染和无渲染模式。
  • RSS:为责任敏感安全集成 C++ 库以使用安全检查修改车辆的轨迹。
  • 模拟时间和同步:关于模拟时间,和服务器客户端通信的一切。
  • SUMO 联合仿真:在 CARLASUMO 交通模拟器之间运行同步仿真。
  • 交通管理器:该模块负责所有设置为自动驾驶模式的车辆。它模拟城市中的交通,使模拟看起来像真实的城市环境。

4. 生态系统

CARLA 仿真平台相关的开源库:

5. 其它资料

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值