4、Carla与ROS2联合仿真系统搭建:Carla 0.9.14 模拟器安装与启动

好,我们正式开始搭建环境。

这一章,咱们先把Carla模拟器本身跑起来。你想想看,后面所有的联合仿真、传感器数据、控制算法,都得依赖这个底层平台。如果Carla没装对,后面全是白搭。

我个人习惯,先把基础环境搞干净,再动手。别急着敲命令,先看看你的硬件够不够格。

4.1 硬件与系统要求

Carla 0.9.14 对硬件有一定要求。我在项目里遇到过,有人拿个集成显卡的笔记本就想跑,结果卡成PPT,根本没法用。

组件 最低要求 推荐配置
GPU NVIDIA GTX 1060 (6GB) NVIDIA RTX 2070 或更高
CPU Intel i5 四代 / AMD Ryzen 3 Intel i7 八代 / AMD Ryzen 5
内存 16 GB 32 GB
硬盘 50 GB 空闲 SSD 100 GB
操作系统 Ubuntu 20.04 Ubuntu 20.04 / 22.04
⚠️ 注意: 如果你用的是Ubuntu 22.04,需要额外处理一些依赖。我建议新手直接上20.04,省心很多。

4.2 下载Carla 0.9.14 预编译包

官方提供了两种方式:源码编译和预编译包。我个人强烈推荐用预编译包。

为什么?源码编译一次,少说要等半小时到一小时,中间还可能报错。预编译包解压即用,省下的时间多跑几个场景不香吗?

下载命令很简单:

# 进入你的工作目录
cd ~/workspace

# 下载 Carla 0.9.14 预编译包
wget https://carla-releases.s3.eu-west-3.amazonaws.com/Linux/CARLA_0.9.14.tar.gz

# 解压
mkdir carla_0.9.14
tar -xzvf CARLA_0.9.14.tar.gz -C carla_0.9.14
💡 小技巧: 下载速度慢的话,可以用国内镜像源。我曾经在GitHub上找过第三方镜像,速度能快3-4倍。

4.3 安装依赖与Python环境

Carla依赖一些系统库和Python包。嗯,这里要注意,Python版本最好用3.8,太高或太低都可能出问题。

# 安装系统依赖
sudo apt-get update
sudo apt-get install -y libomp5 libpng16-16 libtiff5 libjpeg8

# 安装Python依赖
pip3 install --user pygame numpy

# 安装Carla Python API
cd ~/workspace/carla_0.9.14/PythonAPI/carla
pip3 install -e .

安装完成后,验证一下:

python3 -c "import carla; print(carla.__version__)"

如果输出了 0.9.14,说明Python API装好了。

🔑 关键点: 每次启动Carla前,记得把PythonAPI路径加到环境变量里,不然import会报错。

export PYTHONPATH=$PYTHONPATH:~/workspace/carla_0.9.14/PythonAPI/carla

4.4 启动Carla模拟器

终于到了启动环节。说实话,我第一次启动Carla时还挺激动的,结果发现界面就是个黑窗口加命令行输出。

cd ~/workspace/carla_0.9.14
./CarlaUE4.sh

启动后,你会看到类似这样的输出:

LogCarla: Display: Carla server is running!
LogCarla: Display: Listening on port 2000

这说明Carla服务器已经跑起来了,默认监听2000端口。

如果你想调整画质或窗口模式,可以加参数:

# 窗口模式运行
./CarlaUE4.sh -windowed

# 低画质模式(适合配置低的机器)
./CarlaUE4.sh -quality-level=Low

# 指定分辨率
./CarlaUE4.sh -ResX=800 -ResY=600
⚠️ 注意: 启动后不要关闭终端窗口。一旦关闭,Carla进程就结束了。我建议用 screentmux 来管理后台进程。

4.5 验证安装是否成功

启动Carla后,我们写个简单的Python脚本来验证一下。

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(f"车辆已生成: {vehicle.type_id}")
print("Carla 0.9.14 安装成功!")

运行这个脚本,如果看到车辆生成成功的消息,恭喜你,Carla已经可以正常工作了。

💡 小技巧: 如果连接失败,先检查Carla服务器是否在运行。可以用 netstat -tulpn | grep 2000 查看端口是否被占用。

4.6 常见问题与避坑指南

安装过程中,我遇到过不少坑。这里列几个最常见的:

  • 启动后黑屏:多半是显卡驱动问题。检查一下NVIDIA驱动版本,建议用470或更高版本。
  • Python API报错:路径没加对。我曾经折腾了半小时,才发现是PYTHONPATH写错了。
  • 端口被占用:如果2000端口被其他程序占用,可以用 ./CarlaUE4.sh -carla-rpc-port=2001 指定其他端口。
  • 内存不足:Carla启动时占用内存较大,建议关闭其他应用。如果还是不行,加个swap分区。

嗯,基本上到这里,Carla 0.9.14 的安装和启动就完成了。下一章,我们会把ROS2和Carla连接起来,实现真正的联合仿真。

记住,环境搭建是基础中的基础。别着急,慢慢来,每一步都验证通过再往下走。