环境准备:操作系统要求、硬件配置建议、Python环境与依赖安装
说实话,做自动驾驶仿真这么多年,我见过太多人一上来就急着跑CARLA,结果环境没配好,折腾一整天连个Demo都跑不起来。嗯,咱们今天就把这事一次性说清楚。
我个人习惯是,先把地基打牢。环境准备这事,说白了就是三块:操作系统选哪个、硬件够不够用、Python环境怎么搭。咱们一个一个来。
操作系统要求
CARLA官方支持的操作系统其实不多,我帮你整理了一下:
| 操作系统 | 支持版本 | 我的评价 |
|---|---|---|
| Ubuntu | 18.04 / 20.04 / 22.04 | 首选,稳定省心 |
| Windows | 10 / 11 (64位) | 能用,但坑多 |
| 其他Linux发行版 | 不官方支持 | 别折腾,真的 |
我个人强烈推荐 Ubuntu 20.04。为什么?我在项目中遇到过太多次,Ubuntu 22.04虽然新,但有些依赖包还没跟上,编译时容易报错。Ubuntu 18.04又太老了,很多Python库的新版本已经不支持了。20.04是那个「刚刚好」的版本。
硬件配置建议
做仿真嘛,硬件是硬门槛。你想想看,CARLA要同时跑虚幻引擎的渲染、物理引擎的计算、还有传感器数据的模拟,这可不是闹着玩的。
我按经验分了三个档次:
| 配置项 | 最低配置 | 推荐配置 | 舒适配置 |
|---|---|---|---|
| CPU | 4核8线程 | 6核12线程 | 8核16线程以上 |
| 内存 | 16GB | 32GB | 64GB |
| 显卡 | GTX 1060 | RTX 2070 | RTX 3080以上 |
| 显存 | 4GB | 8GB | 12GB+ |
| 硬盘 | SSD 256GB | SSD 512GB | NVMe 1TB |
这里有个坑我得提醒你——显存比内存更重要。CARLA渲染高精度的城市环境时,显存是第一个被吃光的资源。我自己的机器是RTX 3070,跑个中等规模的地图,显存占用就到6GB了。
Python环境与依赖安装
好了,操作系统和硬件都搞定了,接下来就是Python环境。这部分我踩过的坑最多,你仔细听。
Python版本选择
CARLA 0.9.x系列要求 Python 3.7 ~ 3.9。别用Python 3.10以上,我试过,有些依赖包直接报错。
我个人习惯用 Python 3.8,兼容性最好。
虚拟环境创建
千万别直接在系统Python里装东西!我刚开始做的时候就这么干过,结果把系统搞崩了,重装了三次系统...后来学乖了,用虚拟环境隔离。
# 安装Python 3.8(如果还没有)
sudo apt update
sudo apt install python3.8 python3.8-dev python3.8-venv
# 创建虚拟环境
python3.8 -m venv carla_env
# 激活虚拟环境
source carla_env/bin/activate
# 验证版本
python --version
# 应该输出:Python 3.8.x
核心依赖安装
CARLA的Python客户端依赖不多,但有几个关键库必须装对版本:
# 升级pip
pip install --upgrade pip
# 安装核心依赖
pip install numpy==1.23.5
pip install pygame==2.1.2
pip install opencv-python==4.7.0.68
pip install matplotlib==3.5.3
pip install scipy==1.9.3
pip install shapely==2.0.1
pip install networkx==2.8.8
CARLA Python API安装
这一步很多人会搞错。CARLA的Python API不是从PyPI安装的,而是从CARLA的安装包里拿:
# 假设你已经下载并解压了CARLA包
# 进入CARLA目录
cd CARLA_0.9.14
# 安装Python API
pip install PythonAPI/carla/dist/carla-0.9.14-cp38-cp38-linux_x86_64.whl
# 验证安装
python -c "import carla; print(carla.__version__)"
# 应该输出:0.9.14
嗯,这里要注意,whl文件名里的 cp38 表示Python 3.8版本。如果你用的是Python 3.7,就找 cp37 的文件。别搞混了。
验证环境是否正常
装完之后,我建议你跑一个最简单的测试脚本:
import carla
import numpy as np
# 尝试连接CARLA服务器
try:
client = carla.Client('localhost', 2000)
client.set_timeout(10.0)
world = client.get_world()
print(f"✅ 连接成功!当前地图:{world.get_map().name}")
except Exception as e:
print(f"❌ 连接失败:{e}")
print("请确保CARLA服务器正在运行")
如果输出「连接成功」,恭喜你,环境准备就完成了!
本章知识体系
为了让你更直观地理解整个环境准备流程,我画了一张图:
这张图把整个环境准备的流程串起来了。你按这个顺序来,基本不会出大问题。