1. Carla概述与环境搭建
大家好,欢迎来到《Carla交通场景搭建与脚本控制》的第一章。
说实话,我第一次接触Carla的时候,也被它的安装流程折腾过。但别担心,我会把那些坑都指出来。这一章,咱们就把Carla跑起来。
1.1 Carla仿真器简介
Carla是什么?简单说,它是一个开源的自动驾驶仿真平台。专门用来测试感知、规划、控制算法。
我个人的理解是——它就像一个虚拟的驾驶考场。你可以在里面放车、放人、放红绿灯,甚至模拟下雨和夜晚。所有传感器数据,比如摄像头、激光雷达、GPS,它都能模拟出来。
为什么选Carla?因为它免费、开源,而且社区活跃。我见过不少团队用它做算法验证,效果不错。
1.2 应用场景
Carla能做什么?我列几个常见的:
- 算法验证:比如车道保持、避障、路径规划。在仿真里跑通了,再上车实测。
- 传感器仿真:测试不同传感器配置对感知效果的影响。
- 极端场景测试:比如突然冲出来的行人、大雾天气。这些在真实道路很难复现。
- 多车协同:模拟多辆自动驾驶车在交叉口的交互。
我记得有个项目,客户需要在雨天测试感知算法。真实道路测试成本太高,最后全在Carla里搞定了。嗯,这就是仿真的价值。
1.3 系统要求
跑Carla对硬件有要求。我直接给个表格,方便你对照:
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 10 / Ubuntu 18.04 | Windows 11 / Ubuntu 20.04 |
| CPU | Intel i5 4代 / AMD Ryzen 3 | Intel i7 8代 / AMD Ryzen 5 |
| GPU | NVIDIA GTX 960 (4GB) | NVIDIA RTX 2060 (6GB) |
| 内存 | 8GB | 16GB |
| 存储 | 20GB 空闲 | 50GB SSD |
注意:如果你用集成显卡,基本跑不动。Carla依赖CUDA,N卡是首选。我曾经试过用A卡,折腾了半天还是放弃了。
1.4 安装与配置
安装分Windows和Linux。我两种都装过,分别说说。
Windows安装
- 去Carla官网下载预编译包(.zip文件)。
- 解压到纯英文路径。切记,不要有中文!我见过有人放桌面,结果路径带中文名,启动报错。
- 安装Python 3.7或3.8。Carla对Python版本有要求,别用最新的3.11。
- 安装依赖库:
pip install numpy pygame
Linux安装
- 下载Linux版压缩包。
- 解压后,进入Carla文件夹。
- 运行
./CarlaUE4.sh启动。 - 如果报错缺少库,安装一下:
sudo apt install libomp5
小技巧:Linux下我习惯把Carla路径加到.bashrc里,方便随时启动。比如:
export CARLA_ROOT=/home/user/Carla
1.5 启动Carla服务器
Carla采用客户端-服务器架构。服务器负责渲染和物理模拟,客户端通过Python API控制。
启动服务器很简单:
- Windows:双击
CarlaUE4.exe - Linux:终端运行
./CarlaUE4.sh
你会看到一个3D城市窗口弹出来。嗯,这就说明服务器跑起来了。
常用启动参数:
# 窗口模式启动
./CarlaUE4.sh -windowed
# 指定分辨率
./CarlaUE4.sh -ResX=800 -ResY=600
# 无渲染模式(省资源)
./CarlaUE4.sh -RenderOffScreen
我个人建议,调试阶段用窗口模式。正式跑批量测试时,用无渲染模式,能省不少显存。
1.6 客户端连接测试
服务器启动后,我们来写个简单的客户端脚本,测试连接是否正常。
import carla
import random
# 连接Carla服务器
client = carla.Client('localhost', 2000)
client.set_timeout(10.0)
# 获取世界对象
world = client.get_world()
# 获取所有蓝图
blueprint_library = world.get_blueprint_library()
# 选择一辆车
vehicle_bp = blueprint_library.filter('model3')[0]
# 获取一个生成点
spawn_point = random.choice(world.get_map().get_spawn_points())
# 生成车辆
vehicle = world.spawn_actor(vehicle_bp, spawn_point)
print("车辆生成成功!")
print(f"车辆位置: {vehicle.get_location()}")
# 让车辆动起来
vehicle.set_autopilot(True)
# 等待5秒
import time
time.sleep(5)
# 清理
vehicle.destroy()
print("测试完成。")
运行这段代码,如果看到控制台打印出车辆位置,说明连接成功。
避坑指南:我曾经遇到过客户端连不上服务器的情况。排查步骤:
- 检查服务器是否真的启动了(看窗口有没有弹出来)。
- 检查端口号,默认是2000,别搞错。
- 检查防火墙,有时候会拦截Carla的通信。
1.7 本章小结
这一章我们做了几件事:
- 了解了Carla是什么、能干什么。
- 确认了你的电脑能不能跑。
- 完成了安装和配置。
- 启动了服务器,并写了一个客户端测试脚本。
说实话,环境搭建是最枯燥的部分。但这一步走稳了,后面学起来就顺畅了。下一章,我们会深入Carla的世界,学习如何控制车辆和传感器。
嗯,咱们下章见。