该页面介绍了CARLA的主要功能和模块。 有关不同主题的详细说明,请参见其相应页面。
为了了解 API 中的不同类和方法,请查看 Python API reference 参考。 此外,Code recipes 参考包含一些常见的代码块,在这些第一步中特别有用。
注意: 这份文件指的是
CARLA 0.9. x
。
与以前的版本(0.8.X)相比,API 发生了很大变化。
1. “世界”和客户端 (World and client)
客户端 (client) 是用户运行以请求仿真中的信息或更改的模块。 客户端使用IP和特定端口运行。 它通过终端与服务器进行通信。 可以有多个客户端同时运行。 高级多客户端管理需要对CARLA和synchrony有透彻的了解。
"世界"(world) 是一个表示仿真的对象。它作为一个抽象层,包含了产生角色、改变天气、获取当前世界状态等主要方法。每个仿真只有一个“世界”。当地图改变时,它将被销毁并替换为新的。
2. 执行器和蓝图 (Actors and blueprints)
“执行器 是在仿真中起作用的任何对象,例如:
- 汽车
- 行人
- 传感器
- 查看视角(The spectator)
- 交通标志和交通灯
蓝图是产生“角色”所必需的已经制作好的“角色”布局。主要是带有动画和属性的模型。 这些属其中一些属性可以由用户定制,而另一些则不可以。Blueprint library 是一个包含所有可用的蓝图及其相关信息的蓝图库。
3. 地图和导航
地图是代表仿真世界的对象,主要是城镇。CARLA中有八张地图可供选择。 它们都使用OpenDRIVE 1.4标准来描述道路。
道路,车道和路口由Python API 管理,可通过客户端访问。 它们与航路点类(waypoint class) 一起使用,为车辆提供导航路径。
交通标志和交通灯可以作为Carla.Landmark 对象访问,这些对象包含有关其OpenDRIVE定义的信息。 此外,仿真器在运行时使用OpenDRIVE文件上的信息自动生成停车、让行和红绿灯对象。这些都有放置在路上的包围盒(bounding boxes) 。 一旦进入包围盒,车辆就会感知到它们。
4. 传感器和数据
传感器在某个特定事件发生后从仿真中收集数据。 它们需要定义如何管理数据的函数。 根据具体情况,传感器检索不同类型的传感器数据(sensor data)。
传感器是连接到所属车辆上的“角色”。 它跟随车辆,收集周围环境的信息。 可用的传感器由Blueprint library中的蓝图定义,包括以下常用的传感器:
- 相机(RGB、深度和语义分割)
- 碰撞检测器
- 全球导航卫星系统传感器(Gnss)
- 惯性测量单元传感器(IMU)
- 激光雷达
- 车道入侵探测器
- 障碍物探测器
- 雷达
- RSS
高级功能
Carla提供了许多功能,这些功能超出了我们绍范围。 下面列出了一些例子。
- OpenDRIVE独立模式 (OpenDRIVE standalone mode) : 仅使用OpenDRIVE文件生成道路网格。 允许将任何OpenDRIVE地图加载到CALA中,而无需创建资源(assets)。
- PTV-Vissim 协同仿真 (PTV-Vissim co-simulation): 在CARLA和PTV-VISSIM交通模拟器之间运行同步仿真。
- 记录器:保存模拟状态的“快照”,以精确地重新启动仿真。
- 渲染选项: 图形质量设置, 屏幕外渲染和无渲染模式。
- RSS传感器:这个传感器与其他传感器有很大的不同。 它集成了责任敏感安全C++库( C++ Library for Responsibility Sensitive Safety),并使用安全检查修改车辆的轨迹。
- 仿真时间和同步性。 关于仿真时间和服务器-客户端通信的所有内容。
- SUMO协同仿真:在CARLA和SUMO交通模拟器之间运行同步仿真。
- 交通管理器: 该模块负责设置为自动驾驶模式的每辆车。 它模拟城市中的交通,使仿真看起来像真实的城市环境。
这就是CARLA核心知识的综述。 下一步将更仔细地介绍世界和连接到它的客户端。