4、包管理器安装:使用pip安装CARLA、使用Docker安装CARLA、验证安装是否成功

好,咱们接着往下走。上一章我们把环境基础打好了,这一章就来解决核心问题——怎么把CARLA本体请进你的电脑里。

安装CARLA,说白了就两条路:pip安装和Docker安装。我个人习惯是,做快速原型验证时用pip,搞团队协作或需要稳定部署时用Docker。你想想看,这两种方式各有各的脾气,咱们一个一个说清楚。

4.1 使用pip安装CARLA

pip安装是最直接的方式。我刚开始接触CARLA时,第一反应也是「直接pip完事」。嗯,这里要注意,CARLA的pip包和普通的Python包不太一样——它其实是一个预编译的二进制包,里面包含了完整的模拟器引擎。

核心要点:CARLA的pip包只支持Python 3.7到3.10版本。如果你用的是Python 3.11或更高版本,请先降级或使用conda创建虚拟环境。

具体步骤很简单,就两行命令:

# 创建一个干净的虚拟环境(我建议用conda)
conda create -n carla_env python=3.8
conda activate carla_env

# 安装CARLA
pip install carla-simulator

等等,这里有个坑。我在项目中遇到过,直接pip install carla-simulator可能会下载很慢,因为包体大概有2-3GB。我的做法是:

  1. 先配置国内镜像源,比如清华源或阿里源
  2. 或者直接去CARLA的GitHub Release页面下载预编译包

小技巧:如果你在公司内网,记得先配好代理。我曾经因为没配代理,干等了一个小时才发现是网络问题。

安装完成后,你可以用这个命令验证一下:

pip list | grep carla

如果看到类似carla-simulator 0.9.14的输出,说明pip安装成功了。

4.2 使用Docker安装CARLA

Docker安装是我个人更推荐的方式,尤其当你需要多人协作或在不同机器上复现环境时。说白了,Docker把整个CARLA环境打包成了一个「盒子」,你只需要拉下来就能跑,省去了各种依赖冲突的烦恼。

为什么我会这么说?因为我在项目中遇到过好几次「在我电脑上能跑,在你电脑上就报错」的尴尬情况。用Docker之后,这种问题再也没出现过。

Docker安装CARLA的步骤:

# 第一步:拉取CARLA镜像
docker pull carlasim/carla:latest

# 第二步:运行CARLA容器
docker run --rm -it \
  --net=host \
  --gpus all \
  -v /tmp/.X11-unix:/tmp/.X11-unix:rw \
  -e DISPLAY=$DISPLAY \
  carlasim/carla:latest

这里有几个参数我解释一下:

  • --net=host:让容器使用宿主机的网络,这样你可以在宿主机上直接连接CARLA的端口
  • --gpus all:如果你有NVIDIA显卡,加上这个参数可以启用GPU加速
  • -v /tmp/.X11-unix:这是为了让容器能显示图形界面

注意:如果你在无图形界面的服务器上运行(比如SSH连接),需要去掉-v和-e DISPLAY参数,改用./CarlaUE4.sh -RenderOffScreen模式。

拉取镜像的时间取决于你的网速。我记得第一次拉取时,3GB的镜像下了快半小时。建议你提前准备好,别等到演示前才拉。

4.3 验证安装是否成功

装完了,怎么知道它真的能跑?我一般用三步验证法:

4.3.1 启动模拟器

先启动CARLA服务端。如果你用的是pip安装:

# 找到CARLA的安装路径
python -c "import carla; print(carla.__file__)"

# 进入CARLA的根目录,运行
./CarlaUE4.sh

如果你用的是Docker,上面已经给了启动命令。启动后你会看到一个3D城市窗口,这就是CARLA的主界面。

4.3.2 运行客户端测试脚本

打开另一个终端,运行一个简单的Python脚本来连接服务端:

import carla

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

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

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

# 获取所有可用的蓝图
blueprint_library = world.get_blueprint_library()
print(f"可用车辆蓝图数量:{len(blueprint_library.filter('vehicle.*'))}")

如果输出类似:

成功连接!当前地图:/Game/Carla/Maps/Town01
可用车辆蓝图数量:42

那就说明安装成功了。嗯,这里要注意,如果连接失败,八成是端口没开或者服务端没启动。

4.3.3 生成一辆测试车辆

最后一步,我习惯生成一辆车来验证整个流程是否通畅:

# 继续上面的代码
# 选择一个车辆蓝图
vehicle_bp = blueprint_library.filter('vehicle.audi.a2')[0]

# 选择一个生成点
spawn_points = world.get_map().get_spawn_points()
spawn_point = spawn_points[0]

# 生成车辆
vehicle = world.spawn_actor(vehicle_bp, spawn_point)
print(f"车辆已生成:{vehicle.type_id}")

# 让车辆动起来
vehicle.set_autopilot(True)
print("车辆已开启自动驾驶模式")

# 等待5秒后销毁
import time
time.sleep(5)
vehicle.destroy()
print("测试完成")

如果你看到车辆在窗口中动起来了,恭喜你,CARLA环境搭建成功!

避坑指南:我曾经遇到过spawn_actor失败的情况,原因是生成点被占用了。解决办法是换个生成点,或者先清空场景再生成。

4.4 两种安装方式的对比

最后,我用一张表格总结一下pip和Docker的差异,方便你根据实际情况选择:

对比项 pip安装 Docker安装
安装速度 较快(直接下载二进制包) 较慢(需拉取完整镜像)
依赖管理 依赖宿主机Python环境 完全隔离,无依赖冲突
GPU支持 原生支持 需额外配置--gpus参数
多人协作 需手动同步环境 镜像即环境,一键拉取
适合场景 个人开发、快速原型 团队协作、生产部署

我个人建议,如果你是初学者,先用pip装一个试试手。等你要做正式项目了,再切换到Docker。毕竟,先跑起来再说,对吧?

核心总结:安装CARLA其实就三步——选方式、执行命令、验证连接。pip适合快速上手,Docker适合稳定部署。无论选哪种,验证环节不能省,确保服务端和客户端能正常通信才算真正安装成功。

CARLA安装流程总览 开始安装CARLA 选择安装方式 pip安装 pip install carla-simulator 适合个人快速开发 Docker安装 docker pull carlasim/carla 适合团队协作部署 验证安装:三步测试法 启动服务端 → 运行客户端脚本 → 生成测试车辆
可可精品资料库