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
htop 和 neofetch,方便后面监控资源。尤其是多车仿真时,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
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__)"
如果输出版本号,恭喜你,环境搭好了。
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了。不过,如果你要做强化学习或者更复杂的控制,可能还需要装 gym 或 stable-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的Python API,写第一个多车控制的脚本。到时候你会发现,前面这些折腾都是值得的。