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就绕不过了。
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就够了,等正式跑场景时再调高画质。
-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版本不匹配。
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文件也要对应版本,别混着装。
2.6 本章小结
这一章我们走完了从Ubuntu系统配置到Carla安装再到Python API环境搭建的全流程。说白了,就是三件事:装驱动、装Carla、装Python包。每一步都有坑,但只要你按步骤来,遇到问题先看日志,基本都能解决。
下一章我们会正式进入Carla的世界,从第一个仿真场景开始,让车跑起来。到时候你会发现,前面这些环境搭建的辛苦,都是值得的。