第1章:环境搭建——Ubuntu系统配置、CARLA安装与编译、Python环境准备、依赖库安装

说实话,做自动驾驶仿真这件事,最磨人的往往不是算法本身,而是环境搭建。我见过太多人卡在这一步,一卡就是好几天。所以咱们第一章,就把这些坑先填平。

本章核心目标:让你的电脑能跑起CARLA,并且Python能跟它正常对话。

1.1 Ubuntu系统配置——选对版本,少走弯路

我个人习惯用Ubuntu 20.04 LTS。为什么?因为CARLA官方对这个版本支持最好。你非要用22.04也行,但有些依赖库的版本会打架,到时候哭都来不及。

系统装好后,第一件事是换源。别用官方源,慢得让人抓狂。我建议用清华或者中科大的镜像源。

# 备份原源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

# 替换为清华源(Ubuntu 20.04)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list

# 更新
sudo apt update
sudo apt upgrade -y

小技巧:换完源之后,顺手装个vim和git。这两个工具后面天天用。

显卡驱动这块,嗯,这里要注意。如果你用的是NVIDIA显卡,建议用nvidia-driver-535或更新的版本。我曾经在470版本上折腾了两天,CARLA死活跑不起来,最后发现是驱动太老,不支持某些OpenGL特性。

# 查看显卡型号
lspci | grep -i nvidia

# 安装驱动(推荐用ubuntu-drivers自动检测)
sudo ubuntu-drivers autoinstall
sudo reboot

1.2 CARLA安装与编译——两种方式,各有利弊

CARLA的安装方式有两种:直接下载预编译包,或者从源码编译。我两种都试过,说说我的感受。

方式 优点 缺点 适合人群
预编译包 即下即用,10分钟搞定 不能修改源码,版本固定 初学者、快速验证
源码编译 可定制,能调试底层 编译2小时起步,依赖多 进阶开发、二次开发

如果你是第一次接触CARLA,我建议先用预编译包。等后面玩熟了,再考虑编译源码。

方式一:预编译包安装

# 下载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 -C ~/carla

# 进入目录
cd ~/carla

# 启动CARLA(先试试能不能跑)
./CarlaUE4.sh

注意:第一次启动时,如果报错libcarla.so.0.9.14: cannot open shared object file,别慌。这是动态库路径没设置好。执行下面这行就行:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/carla/CarlaUE4/Binaries/Linux

方式二:源码编译(可选)

说实话,源码编译挺折腾的。我当年第一次编译,从下午三点搞到晚上十点。但好处是,你能看到CARLA的每一行代码,想改什么改什么。

# 克隆源码
git clone https://github.com/carla-simulator/carla.git
cd carla

# 更新子模块
git submodule update --init --recursive

# 安装编译依赖
sudo apt-get install -y build-essential clang-8 lld-8 cmake ninja-build \
  python3-dev python3-pip libpng-dev libtiff5-dev libjpeg-dev \
  libboost-all-dev libc++-dev libc++abi-dev

# 设置LLVM环境
export CC=/usr/bin/clang-8
export CXX=/usr/bin/clang++-8

# 开始编译(去泡杯咖啡吧)
make setup
make launch

避坑指南:编译时如果报内存不足,可以加make launch -j4限制并行任务数。我曾经在8GB内存的机器上编译,直接卡死,后来改成-j4才搞定。

1.3 Python环境准备——虚拟环境是必须的

你想想看,一个项目用Python 3.8,另一个项目用Python 3.10,依赖库版本还不一样。如果不隔离,迟早会乱套。所以我强烈建议用虚拟环境。

# 安装Python 3.8(CARLA官方推荐)
sudo apt-get 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

为什么要用Python 3.8?因为CARLA的Python API是基于3.8编译的。你用3.10也能跑,但有些底层接口会报warning。说白了,就是官方没做全面兼容。

1.4 依赖库安装——缺什么补什么

CARLA的Python接口需要几个核心库。我列个清单,你照着装就行。

# 激活虚拟环境后执行
pip install --upgrade pip

# 核心依赖
pip install numpy  # 数值计算,必装
pip install pygame  # 可视化窗口
pip install matplotlib  # 画图用
pip install opencv-python  # 图像处理
pip install shapely  # 几何计算,做路径规划时有用

# CARLA Python API(关键!)
pip install carla==0.9.14

重要:安装carla包时,版本号必须跟你下载的CARLA版本一致。0.9.14的API不能用在0.9.13上,会报函数签名不匹配的错误。

装完之后,验证一下能不能正常导入:

python -c "import carla; print('CARLA version:', carla.__version__)"

如果没报错,恭喜你,环境搭好了。如果报ModuleNotFoundError: No module named 'carla',多半是pip装错了位置。检查一下你当前是不是在虚拟环境里。

1.5 整体架构一览

说了这么多,咱们用一张图把整个环境结构串起来。你心里有个谱,后面学起来就顺了。

CARLA环境搭建整体架构 Ubuntu 20.04 LTS + NVIDIA驱动 CARLA 0.9.14(预编译包 或 源码编译) Python 3.8 + 虚拟环境 (carla_env) numpy | pygame | opencv-python | shapely | carla API

这张图说白了就是四层结构:操作系统打底,CARLA跑在中间,Python环境做桥梁,依赖库提供工具。每一层都稳了,你的仿真才能跑得顺。

我的经验:环境搭好后,建议跑一下CARLA自带的示例脚本PythonAPI/examples/automatic_control.py。如果能看到一个车在城里自己开,说明所有环节都通了。我第一次看到那个画面时,说实话,挺激动的。

好了,环境搭建就这些。别嫌麻烦,这一步做好了,后面写代码就是享受。

可可精品资料库