共计 2149 个字符,预计需要花费 6 分钟才能阅读完成。
1. CARLA 仿真平台简介
CARLA 是一个开源的自动驾驶仿真平台,基于 Unreal Engine 构建,提供高度可配置的传感器模拟和环境控制能力。它的核心特点包括:

- 高精度物理引擎:支持车辆动力学、传感器物理模拟
- 模块化设计:地图、车辆、传感器均可自由组合
- Python API:提供便捷的编程接口控制仿真
架构上分为服务端 (Server) 和客户端 (Client) 两部分:
graph LR
A[Client-PythonAPI] --> B[Server-UnrealEngine]
B --> C[传感器数据]
B --> D[物理仿真]
2. 环境搭建指南
系统要求
- Ubuntu 18.04/20.04 (推荐)或 Windows 10
- NVIDIA 显卡(建议 GTX 1080 以上)
- 至少 50GB 可用磁盘空间
安装步骤
- 安装依赖项:
sudo apt-get install -y \
python3-pip \
libomp5 \
libpng16-16
- 下载预编译包(以 0.9.13 版本为例):
wget https://carla-releases.s3.eu-west-3.amazonaws.com/Linux/CARLA_0.9.13.tar.gz
tar -xzf CARLA_0.9.13.tar.gz
- 安装 Python 依赖:
pip3 install --user pygame numpy
3. Python API 基础使用
基础代码框架
import carla
import random
# 连接服务器
client = carla.Client('localhost', 2000)
client.set_timeout(10.0) # 设置超时
# 加载地图
world = client.load_world('Town01')
# 生成车辆蓝图库
blueprint_library = world.get_blueprint_library()
car_bp = random.choice(blueprint_library.filter('vehicle.*'))
# 设置生成点
spawn_points = world.get_map().get_spawn_points()
spawn_point = random.choice(spawn_points)
# 生成车辆
vehicle = world.spawn_actor(car_bp, spawn_point)
print(f'Spawned {car_bp.id} at {spawn_point.location}')
添加传感器示例
# 添加 RGB 摄像头
camera_bp = blueprint_library.find('sensor.camera.rgb')
camera_bp.set_attribute('image_size_x', '800')
camera_bp.set_attribute('image_size_y', '600')
# 将摄像头安装在车辆上
camera_transform = carla.Transform(carla.Location(x=1.5, z=2.4))
camera = world.spawn_actor(camera_bp, camera_transform, attach_to=vehicle)
# 定义传感器回调函数
def camera_callback(image):
image.save_to_disk('output/%06d.png' % image.frame)
# 注册回调
camera.listen(camera_callback)
4. 常见问题解决
渲染问题
- 黑屏 / 花屏:尝试禁用集成显卡,确保使用 NVIDIA 显卡
- 低帧率:在 CarlaSettings.ini 中降低质量设置
连接失败
try:
client = carla.Client('localhost', 2000)
client.set_timeout(2.0)
world = client.get_world()
except RuntimeError:
print("请先启动 CARLA 服务端: ./CarlaUE4.sh")
5. 性能优化建议
- 使用
--quality-level=Low启动服务端 - 减少同时活跃的物理对象数量
- 对于 AI 车辆,设置适当的
traffic_manager.global_percentage_speed_difference
6. 创建自定义场景
尝试修改以下参数:
# 修改天气
weather = carla.WeatherParameters(
cloudiness=80.0,
precipitation=30.0,
sun_altitude_angle=70.0)
world.set_weather(weather)
# 生成行人
pedestrian_bp = random.choice(blueprint_library.filter('walker.*'))
pedestrian = world.spawn_actor(pedestrian_bp, random.choice(spawn_points))
进阶学习资源
通过本文的实践,你应该已经能够搭建基础仿真环境并运行简单场景。建议下一步尝试构建完整的感知 - 决策 - 控制闭环系统,或探索更复杂的地图场景。
正文完
