2. 环境搭建与配置:Ubuntu系统配置、Carla安装、Python API环境配置、依赖库安装

好,咱们正式开始动手。环境搭建这块,说实话,是整门课里最磨人的一步。我见过太多人卡在这一步,还没开始跑车就先放弃了。别急,跟着我的节奏来,一步步踩实了。

2.1 Ubuntu系统配置——打好地基

Carla官方推荐的是Ubuntu 18.04或20.04。我个人习惯用20.04,稳定,坑少。你问18.04行不行?也行,但有些新版本的依赖库在18上编译会报错,我踩过这个坑。

第一步:更新系统包

拿到一台新装的Ubuntu,第一件事就是更新。别偷懒,直接跑:

sudo apt update
sudo apt upgrade -y
sudo apt autoremove -y

第二步:安装基础依赖

Carla对显卡驱动有要求。我建议直接用NVIDIA官方驱动,别用Ubuntu自带的nouveau。怎么装?

sudo apt install nvidia-driver-470  # 或者更新的版本
sudo reboot

重启后跑 nvidia-smi 看看,能看到显卡信息就对了。

第三步:安装编译工具链

嗯,这里要注意。Carla的Python API需要一些C++编译环境。我一般这么装:

sudo apt install build-essential
sudo apt install cmake
sudo apt install libboost-all-dev
sudo apt install libeigen3-dev
我的小技巧: 装完这些后,顺手装个 htopneofetch,方便后面监控资源。尤其是多车仿真时,CPU和内存占用你得心里有数。

2.2 Carla安装——两种方式,你选哪个?

Carla的安装方式有两种:预编译包和源码编译。我直接说结论:新手用预编译包,老手可以试试源码编译

方式一:预编译包(推荐)

去Carla的GitHub Release页面下载对应Ubuntu版本的包。比如Carla 0.9.14:

wget https://carla-releases.s3.eu-west-3.amazonaws.com/Linux/CARLA_0.9.14.tar.gz
tar -xzf CARLA_0.9.14.tar.gz
cd CARLA_0.9.14

解压完直接跑 ./CarlaUE4.sh 就能看到模拟器窗口了。我第一次看到那个窗口弹出来时,还挺激动的。

方式二:源码编译(如果你需要改底层)

源码编译大概需要2-3小时,取决于你的机器。我当年编译过一次,中途报了个莫名其妙的OpenGL错误,折腾了一下午。后来发现是显卡驱动版本不对。

git clone https://github.com/carla-simulator/carla
cd carla
./Update.sh
make launch
警告: 源码编译前,务必确认你的内存大于16GB,硬盘剩余空间大于50GB。我曾经在8GB内存的笔记本上试过,编译到一半直接卡死。

2.3 Python API环境配置——让Carla听你的话

Carla的Python API其实就是一个egg文件,藏在安装目录的 PythonAPI/carla/dist/ 下。你需要把它装到你的Python环境里。

第一步:创建虚拟环境

我强烈建议用虚拟环境,别直接装到系统Python里。为什么?因为不同项目可能依赖不同版本的Carla API,混在一起会出问题。

python3 -m venv carla_env
source carla_env/bin/activate

第二步:安装Carla Python API

cd /path/to/CARLA_0.9.14/PythonAPI/carla/dist
pip install carla-0.9.14-cp38-cp38-linux_x86_64.whl

注意,这里的 cp38 表示Python 3.8版本。如果你的Python版本不同,文件名会不一样。我建议统一用Python 3.8,兼容性最好。

第三步:验证安装

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

如果输出版本号,恭喜你,环境搭好了。

避坑指南: 我曾经遇到过一个问题——明明装了carla包,但import时提示找不到。后来发现是虚拟环境的Python版本和egg文件不匹配。解决办法:检查 python --version 和egg文件名中的cp版本是否一致。

2.4 依赖库安装——一个都不能少

多车协同仿真需要一些额外的库。我列个清单,你照着装就行。

库名 用途 安装命令
numpy 数值计算 pip install numpy
opencv-python 图像处理 pip install opencv-python
matplotlib 数据可视化 pip install matplotlib
shapely 几何计算(碰撞检测) pip install shapely
pygame 键盘控制/窗口显示 pip install pygame
networkx 路网拓扑分析 pip install networkx

装完这些,你基本就能跑通大部分多车协同的demo了。不过,如果你要做强化学习或者更复杂的控制,可能还需要装 gymstable-baselines3。这个我们后面章节再细说。

我的经验:shapely 时,如果报错说缺少GEOS库,跑 sudo apt install libgeos-dev 就能解决。这个坑我踩过两次,第一次还傻乎乎地去编译源码...

2.5 验证整个环境——跑个Hello World

环境搭完,总得试试能不能跑。我写了个最简单的脚本,用来验证Carla是否正常工作:

import carla
import time

# 连接Carla服务器
client = carla.Client('localhost', 2000)
client.set_timeout(10.0)

# 获取世界对象
world = client.get_world()

# 打印当前地图名称
print(f"当前地图: {world.get_map().name}")

# 生成一辆车
blueprint_library = world.get_blueprint_library()
vehicle_bp = blueprint_library.filter('model3')[0]
spawn_point = world.get_map().get_spawn_points()[0]
vehicle = world.spawn_actor(vehicle_bp, spawn_point)

print("车辆生成成功!")
time.sleep(5)

# 清理
vehicle.destroy()
print("环境验证通过!")

跑这个脚本前,记得先启动Carla模拟器:./CarlaUE4.sh。如果一切顺利,你会看到模拟器里出现一辆特斯拉Model 3,5秒后消失。

常见问题: 如果连接不上,检查一下Carla是否在运行,以及端口2000是否被占用。我遇到过有人开了VPN导致端口被占用的,关掉VPN就好了。

好了,环境搭建这块就到这。说实话,这部分内容看起来琐碎,但确实是后面所有实验的基础。你想想看,如果环境没配好,后面跑多车协同的时候报个错,你都不知道是代码问题还是环境问题,那才叫头疼。

下一章,我们开始真正接触Carla的Python API,写第一个多车控制的脚本。到时候你会发现,前面这些折腾都是值得的。