3. 环境搭建与配置:CARLA安装与配置、Python API环境搭建、依赖库安装
说实话,做自动驾驶仿真验证,环境搭建这一步最容易被轻视。我见过不少同学,算法写得飞起,结果卡在环境配置上折腾了两三天。嗯,咱们今天就把这事一次性搞定。
我个人习惯把环境搭建分成三个层次:仿真器层(CARLA)、API接口层(Python客户端)、算法依赖层(NumPy、OpenCV、PyTorch)。一层一层来,思路清晰,出了问题也好排查。
3.1 CARLA安装与配置
CARLA的安装,说白了就两条路:预编译包和源码编译。我强烈建议你走预编译包这条路。为什么?我自己第一次编译源码花了整整一个下午,中间还因为UE4版本不匹配翻车了。
推荐配置:
- 操作系统:Ubuntu 20.04 LTS(Windows也行,但我个人在Linux下更稳)
- CARLA版本:0.9.14(目前最稳定,我项目里一直在用)
- 显卡驱动:NVIDIA 470+,CUDA 11.3+
- 内存:至少16GB,建议32GB
安装步骤其实就三步:
- 下载预编译包:去CARLA官方GitHub Release页面,找到0.9.14版本,下载
CARLA_0.9.14.tar.gz。大概3个多G,喝杯咖啡的功夫。 - 解压到目标目录:
tar -xzf CARLA_0.9.14.tar.gz -C ~/carla - 启动测试:进入目录,运行
./CarlaUE4.sh。如果看到一扇蓝色的大门缓缓打开,恭喜你,成了。
我曾经踩过的坑:
第一次启动时黑屏?别慌。八成是显卡驱动问题。运行 nvidia-smi 看看驱动是否正常。如果用的是笔记本双显卡,记得切到独立显卡运行。我当初在笔记本上折腾了两小时才发现是这个问题。
3.2 Python API环境搭建
CARLA跑起来了,接下来要让它听我们使唤。Python API就是那个「遥控器」。
CARLA的Python API以.egg文件的形式提供,就在你解压后的 PythonAPI/carla/dist/ 目录下。不同Python版本对应不同的.egg文件。
我个人习惯用conda管理环境,干净利落:
# 创建虚拟环境
conda create -n carla_env python=3.8
conda activate carla_env
# 安装CARLA Python API
cd ~/carla/PythonAPI/carla/dist/
pip install carla-0.9.14-cp38-cp38-linux_x86_64.whl
# 验证安装
python -c "import carla; print(carla.__version__)"
你想想看,如果直接pip install carla,装的是社区维护的版本,跟官方API可能对不上。所以一定要用官方提供的.egg文件。嗯,这里要注意版本号必须匹配。
小技巧:
如果你需要在多个项目里用CARLA,可以把.egg路径加到 PYTHONPATH 环境变量里:
export PYTHONPATH=$PYTHONPATH:~/carla/PythonAPI/carla/dist/carla-0.9.14-cp38-cp38-linux_x86_64.whl
这样每次激活环境就能直接用,不用反复pip install。
3.3 依赖库安装:NumPy, OpenCV, PyTorch
这三个库是感知算法的「三驾马车」。NumPy管数据,OpenCV管图像,PyTorch管模型。缺一个,你的算法就跑不起来。
3.3.1 NumPy
NumPy是基础中的基础。CARLA返回的传感器数据,本质上是NumPy数组。点云、图像、边界框,底层全是NumPy。
pip install numpy==1.24.3
版本不用太纠结,1.24系列跟PyTorch 2.0兼容性最好。我在项目中遇到过NumPy版本太高导致PyTorch报错的情况,后来锁定1.24就再没出过问题。
3.3.2 OpenCV
OpenCV负责图像处理。从CARLA相机拿到的原始图像,要转成OpenCV能处理的格式。说白了就是BGR和RGB来回倒腾。
pip install opencv-python==4.8.1.78
这里有个细节:CARLA相机输出的是RGB格式,但OpenCV默认用BGR。所以每次拿到图像,记得做一次颜色通道转换:
import cv2
import numpy as np
# 假设 image 是从CARLA相机拿到的RGB数组
image_bgr = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
我曾经在项目里忘了这步,结果训练出来的模型在仿真里检测效果一塌糊涂。后来发现是颜色通道搞反了,哭笑不得。
3.3.3 PyTorch
PyTorch是感知模型的主力框架。安装时要注意CUDA版本匹配。
# CUDA 11.7
pip install torch==2.0.1+cu117 torchvision==0.15.2+cu117 --index-url https://download.pytorch.org/whl/cu117
# 或者CPU版本(不推荐,训练太慢)
pip install torch==2.0.1 torchvision==0.15.2
重要提醒:
安装前先确认你的CUDA版本:nvcc --version。版本不对应,PyTorch会默默退回到CPU模式,你跑起来还以为模型在正常训练,实际上慢了几十倍。我有个同事因为这个排查了整整两天。
3.4 环境验证脚本
所有东西装完后,我习惯跑一个「全家桶」验证脚本。确保所有组件能协同工作:
import carla
import numpy as np
import cv2
import torch
print(f"CARLA版本: {carla.__version__}")
print(f"NumPy版本: {np.__version__}")
print(f"OpenCV版本: {cv2.__version__}")
print(f"PyTorch版本: {torch.__version__}")
print(f"CUDA可用: {torch.cuda.is_available()}")
# 尝试连接CARLA服务器
client = carla.Client('localhost', 2000)
client.set_timeout(10.0)
world = client.get_world()
print(f"CARLA连接成功!当前地图: {world.get_map().name}")
如果所有信息都正常打印出来,说明环境搭建完毕。如果卡在连接那一步,八成是CARLA服务端没启动。先跑 ./CarlaUE4.sh,再运行脚本。
总结一下我的个人经验:
- 环境搭建别急,一层一层来,每层验证通过再往下走
- 版本号一定要匹配,尤其是CARLA、Python、PyTorch三者的版本
- 遇到问题先看日志,CARLA的日志在
~/carla/CarlaUE4/Saved/CarlaServer.log - 保存好这个验证脚本,以后每次换机器或者更新环境,跑一遍就知道有没有问题
好了,环境搭好了,下一章咱们就可以真正开始写感知算法了。到时候我会带你从零实现一个目标检测pipeline,在CARLA仿真环境里跑起来。
公众号:蓝海资料掘金营,微信deep3321