1、CARLA入门:CARLA是什么、为什么选择CARLA、安装与启动、基本架构概览

1.1 CARLA到底是什么?

说实话,我第一次接触CARLA的时候,心里想的是:「又一个仿真器?」

但用了一段时间后,我改变了看法。CARLA(Car Learning to Act)是一个开源的自动驾驶仿真平台。它由巴塞罗那计算机视觉中心(CVI)和丰田研究院联合开发。说白了,它就是一个专门为自动驾驶算法测试而生的虚拟世界。

在这个世界里,你可以控制车辆、行人、交通信号灯,甚至天气和时间。我习惯把它比作「自动驾驶的《侠盗猎车手》」——只不过,我们是在认真做研究。

核心定位:CARLA 不是游戏引擎,而是一个面向自动驾驶算法开发、训练和验证的专业仿真平台。

1.2 为什么选择CARLA?

市面上仿真器不少,比如AirSim、LGSVL、SUMO。为什么我推荐CARLA?

原因有三:

  • 开源且活跃:代码完全公开,社区非常活跃。我在项目中遇到过一个传感器同步的bug,提交issue后两天就有人回复了解决方案。这在商业软件里几乎不可能。
  • 传感器模型丰富:内置了摄像头、激光雷达、毫米波雷达、GPS、IMU等。你想想看,要自己从头写一个激光雷达点云生成器,那得花多少时间?
  • 灵活的接口:支持Python和C++ API。我个人习惯用Python快速原型,C++做性能优化,CARLA两者都支持。

我的经验:如果你做的是感知算法,CARLA的传感器仿真精度足够用。但如果你做的是控制算法,建议结合Simulink做联合仿真,因为CARLA的车辆动力学模型相对简化。

1.3 安装与启动

嗯,这里要注意。CARLA的安装方式有两种:预编译包和源码编译。

我建议新手直接用预编译包。源码编译太折腾了,我第一次编译花了整整一个下午,还遇到了各种依赖冲突。

1.3.1 预编译包安装(推荐)

  1. 访问CARLA官网的Releases页面,下载对应操作系统的最新版本(目前是0.9.15)。
  2. 解压到本地目录,比如 C:\CARLA 或 /home/user/CARLA。
  3. 安装Python依赖:pip install carla

1.3.2 启动CARLA

启动方式很简单,直接运行CARLA的可执行文件:

# Linux/Mac
./CarlaUE4.sh

# Windows
CarlaUE4.exe

启动后你会看到一个3D窗口,里面有一条街道和几辆车。这就是CARLA的默认场景。

避坑指南:我曾经遇到过启动后黑屏的问题。后来发现是显卡驱动版本太低。CARLA基于Unreal Engine 4,对显卡有一定要求。建议NVIDIA显卡驱动更新到最新版本。

1.3.3 验证安装

启动CARLA后,打开另一个终端,运行以下Python脚本:

import carla
client = carla.Client('localhost', 2000)
client.set_timeout(10.0)
world = client.get_world()
print("CARLA连接成功!")
print(f"当前地图: {world.get_map().name}")

如果打印出地图名称,说明安装成功。

1.4 基本架构概览

CARLA的架构其实不复杂。我画了一张图帮你理解:

CARLA 基本架构 客户端层 (Client) Python API / C++ API 控制车辆、传感器、交通流、地图加载 服务器层 (Server) CarlaUE4 进程 物理引擎、渲染、传感器仿真、交通管理器 核心模块 地图与场景 传感器套件 交通管理器 车辆动力学

从上图可以看出,CARLA采用经典的客户端-服务器架构:

  • 服务器(Server):就是那个CarlaUE4进程。它负责渲染画面、模拟物理、运行传感器。服务器可以运行在带GPU的机器上,也可以运行在远程服务器上。
  • 客户端(Client):通过Python或C++ API连接服务器。你写的所有控制代码都在客户端运行。客户端可以控制车辆、读取传感器数据、修改天气等。

这种架构的好处是什么?我举个例子:你可以在一台高性能服务器上跑CARLA,然后用你的笔记本远程连接。这样笔记本只需要发送指令和接收数据,渲染工作全交给服务器。

1.5 核心模块速览

模块 功能 我的使用建议
地图与场景 提供Town01~Town07等地图,支持自定义地图导入 新手先用Town03,路况适中,场景丰富
传感器套件 摄像头、激光雷达、毫米波雷达、IMU、GPS等 做感知算法时,记得调整传感器位置和参数
交通管理器 控制NPC车辆和行人的行为 生成自定义交通流的核心工具,后面会详细讲
车辆动力学 模拟车辆加速、刹车、转向等物理特性 精度够用,但做控制算法建议结合Simulink

小技巧:启动CARLA时加上 -quality-level=Low 参数可以降低画质,提高运行帧率。我在调试阶段经常这么干,等调试好了再切回高画质。

好了,这一章的内容就是这些。CARLA的入门其实不难,关键是动手去试。启动起来,跑一跑示例脚本,你很快就能上手。

可可精品资料库