2、环境搭建与安装:Ubuntu系统配置、Carla安装、Python API环境配置、常见安装问题排查

2.1 写在前面:为什么我坚持用Ubuntu

做自动驾驶仿真,操作系统选型是个绕不开的话题。我个人习惯用Ubuntu 20.04 LTS,原因很简单——Carla官方对它的支持最成熟。你想想看,一个仿真引擎从底层渲染到物理引擎再到传感器模拟,中间依赖的库太多了。用Ubuntu 20.04,踩坑的概率能降低一半以上。

当然,你非要用Ubuntu 22.04或者18.04也不是不行。我在项目中遇到过一位同事,非要在22.04上硬刚,结果光解决Python依赖就花了三天。嗯,这里要注意:Carla 0.9.13及更早版本,官方明确只支持Ubuntu 18.04和20.04。如果你用新版Carla(比如0.9.14+),Ubuntu 22.04也能跑,但需要手动处理一些库的兼容性。

2.2 Ubuntu系统配置:先把地基打牢

拿到一台新机器或者新装的Ubuntu系统,我建议按以下步骤来配置。别嫌麻烦,这一步省了,后面全是坑。

2.2.1 显卡驱动与CUDA

Carla的渲染依赖GPU,尤其是当你需要跑多传感器仿真时。我建议先装好NVIDIA驱动,再装CUDA。

# 查看推荐驱动版本
ubuntu-drivers devices

# 安装推荐驱动(比如nvidia-driver-535)
sudo apt install nvidia-driver-535

# 重启后验证
nvidia-smi

装完驱动后,CUDA不是必须的——如果你只用Carla的Python API做控制,不涉及模型训练,可以跳过CUDA。但如果你打算在Carla里跑深度学习模型推理(比如目标检测),那CUDA就绕不过了。

我的经验: 装CUDA时别用apt,去NVIDIA官网下载runfile手动装。apt装的版本经常和Carla的依赖打架,我吃过这个亏。

2.2.2 系统依赖库

Carla需要一些基础库。我习惯一次性装齐,省得后面编译报错再回头补。

sudo apt update
sudo apt install build-essential clang-8 lld-8 g++-7 cmake ninja-build libvulkan1 python3 python3-pip python3-dev python3-venv libpng-dev libtiff5-dev libjpeg-dev tzdata sed curl unzip autoconf libtool rsync libxml2-dev

这里有个细节:clang-8和lld-8是Carla编译时用的默认编译器。如果你用g++,编译时可能会遇到一些奇奇怪怪的链接错误。我建议老老实实按官方推荐来。

2.3 Carla安装:两种方式,各有利弊

Carla的安装方式主要有两种:预编译包源码编译。我分别说说它们的适用场景。

安装方式 优点 缺点 推荐场景
预编译包 即下即用,无需编译 无法修改引擎源码 初学者、快速验证、纯Python开发
源码编译 可修改C++代码、自定义传感器 编译耗时(2-4小时)、依赖复杂 高级用户、需要定制化功能

2.3.1 预编译包安装(推荐新手)

去Carla的GitHub Releases页面下载对应版本的压缩包。我以0.9.14为例:

# 下载
wget https://github.com/carla-simulator/carla/releases/download/0.9.14/CARLA_0.9.14.tar.gz

# 解压
tar -xzf CARLA_0.9.14.tar.gz -C ~/carla

# 进入目录
cd ~/carla

# 启动Carla(先试试能不能跑起来)
./CarlaUE4.sh -quality-level=Low

启动时加-quality-level=Low是为了降低显卡负载。我第一次跑的时候直接默认设置,结果笔记本风扇狂转。后来发现,调试阶段用Low就够了,等正式跑场景时再调高画质。

注意: 如果你在远程服务器上跑Carla,需要加-RenderOffScreen参数,否则会报错。我曾经在无图形界面的服务器上折腾了半天,才发现这个参数。

2.3.2 源码编译安装(进阶玩家)

如果你需要修改Carla的底层逻辑(比如自定义传感器模型),那就得走源码编译。这个过程比较长,我简单说下关键步骤。

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

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

# 设置环境变量
export UE4_ROOT=~/UnrealEngine_4.26

# 编译(耗时较长)
make setup
make launch

编译过程中最容易出问题的是make setup这一步,它会下载Unreal Engine的依赖。如果你网络不好,建议用代理或者提前把依赖包下载好。我编译过三次,每次都在这里卡住过。

2.4 Python API环境配置:让Carla听你指挥

Carla装好了,但你还得让Python能跟它通信。说白了,就是装一个Python包。

2.4.1 安装carla Python包

在Carla的安装目录下,有个PythonAPI/carla/dist/文件夹,里面放着对应Python版本的whl文件。

# 进入Carla目录
cd ~/carla/PythonAPI/carla/dist

# 查看可用的whl文件
ls *.whl

# 安装(根据你的Python版本选择)
pip3 install carla-0.9.14-cp38-cp38-linux_x86_64.whl

这里有个坑:whl文件名里的cp38表示Python 3.8。如果你用的是Python 3.10,直接装会报错。我建议用Python 3.8,因为Carla官方测试最充分。如果你非要用高版本Python,可以试试用--force-reinstall强制安装,但不保证所有功能正常。

2.4.2 验证安装

装完后,写个简单的脚本测试一下:

import carla

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

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

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

# 获取所有蓝图
blueprints = world.get_blueprint_library()
print(f"可用蓝图数量: {len(blueprints)}")

如果输出正常,说明环境搭好了。如果报ModuleNotFoundError: No module named 'carla',多半是whl没装对,或者Python版本不匹配。

我的习惯: 用虚拟环境管理Python包,避免污染系统Python。我一般用python3 -m venv carla_env创建虚拟环境,然后在里面装carla包。这样即使搞坏了,删掉重来就行。

2.5 常见安装问题排查:我踩过的坑,你别再踩了

安装过程中问题千奇百怪,我挑几个高频的说说。

2.5.1 Carla启动后黑屏或闪退

这个问题最常见。原因通常是显卡驱动没装好,或者OpenGL版本太低。

  • 检查驱动: 运行glxinfo | grep "OpenGL version",如果版本低于4.5,需要升级驱动。
  • 检查显卡: 如果你用的是笔记本双显卡(集显+独显),Carla默认可能用集显启动。我遇到过这种情况,需要在启动时加-prefer-gpu参数强制用独显。
  • 降低画质: 启动时加-quality-level=Low,排除性能问题。

2.5.2 Python API连接不上Carla

报错信息通常是RuntimeError: time-out of 10000ms while waiting for the simulator

我曾经排查过这个问题,最后发现是Carla没启动。你想想看,Carla没跑起来,Python客户端当然连不上。所以第一步先确认Carla进程是否在运行:

ps aux | grep CarlaUE4

如果进程在,检查端口:

netstat -tuln | grep 2000

如果端口没监听,可能是Carla启动时崩溃了。去Carla目录下看日志文件Log/CarlaUE4.log,里面会记录崩溃原因。

2.5.3 编译时提示缺少依赖

源码编译时,最常见的错误是fatal error: xxx.h: No such file or directory。这通常是因为子模块没更新完整。

我的解决方法是:

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

# 清理编译缓存
make clean
make setup

如果还不行,检查一下Util/BuildTools/目录下的脚本,看看有没有遗漏的依赖。我遇到过libomp-dev没装导致编译失败的情况,手动装上就好了。

2.5.4 多版本Carla冲突

如果你同时装了多个版本的Carla,启动时可能会混淆。我建议每个版本放在独立的目录下,启动时用绝对路径。另外,Python API的whl文件也要对应版本,别混着装。

一句话总结: 环境搭建是仿真测试的基础,别图快。每一步都验证通过再往下走,能省掉后面90%的排查时间。

2.6 本章小结

这一章我们走完了从Ubuntu系统配置到Carla安装再到Python API环境搭建的全流程。说白了,就是三件事:装驱动、装Carla、装Python包。每一步都有坑,但只要你按步骤来,遇到问题先看日志,基本都能解决。

下一章我们会正式进入Carla的世界,从第一个仿真场景开始,让车跑起来。到时候你会发现,前面这些环境搭建的辛苦,都是值得的。