3、环境搭建(下):联合仿真接口安装、Python环境配置、依赖库安装与验证

上一节我们把 Prescan 和 CARLA 本体都装好了,但说实话,那只是万里长征第一步。两个软件装好了,它们之间怎么说话?怎么让 Prescan 里的场景跑到 CARLA 的渲染引擎里去?这中间缺一个「翻译官」——也就是联合仿真接口。

这一节,我们就来搞定这个接口,顺带把 Python 环境和各种依赖库也配好。我个人习惯是先把环境理清楚再动手,不然装到一半报错,心态容易崩。

3.1 联合仿真接口:Prescan 与 CARLA 的桥梁

Prescan 和 CARLA 的联合仿真,说白了就是 Prescan 负责场景建模和传感器仿真,CARLA 负责高保真渲染和车辆动力学。两者通过一个叫 Prescan CARLA Interface 的插件来通信。

这个接口的安装路径,我建议你直接放在 Prescan 的安装目录下,方便管理。我在项目中遇到过有人把接口装到桌面,结果 Prescan 升级后路径变了,接口死活找不到,折腾了大半天。

3.1.1 接口文件获取

接口文件通常包含在 Prescan 的安装包中,或者从官方支持渠道获取。你拿到的是一个压缩包,里面大概有这些东西:

  • PrescanCARLAInterface.dll —— 核心动态库
  • PrescanCARLAInterface.py —— Python 封装脚本
  • config.xml —— 配置文件,用于指定 CARLA 路径和端口
  • README.txt —— 官方说明,建议先看一眼
注意:接口版本必须与 Prescan 和 CARLA 的版本严格对应。我曾经因为 Prescan 8.5 配了 CARLA 0.9.11 的接口,结果仿真跑起来车辆直接穿模,查了两天才发现是版本不匹配。

3.1.2 安装步骤

嗯,这里我直接说步骤,你照着做就行:

  1. 将接口文件解压到 C:\Program Files\Prescan\PrescanCARLAInterface(路径可自定义,但别带中文)
  2. 打开 config.xml,修改 <CARLA_Path> 标签,指向你的 CARLA 安装目录
  3. 修改 <Python_Path> 标签,指向你后续要配置的 Python 环境路径
  4. 保存文件,关闭

这里有个坑:config.xml 里的路径分隔符要用双反斜杠 \\ 或者正斜杠 /,单反斜杠会被当成转义符。我刚开始就栽在这上面,Prescan 一直报错说找不到 CARLA。

3.2 Python 环境配置:别用系统自带的 Python

Prescan 和 CARLA 的联合仿真依赖 Python 来运行控制脚本。我个人强烈建议你创建一个独立的虚拟环境,别跟系统 Python 混在一起。你想想看,万一你系统里装了个 Python 3.12,而 Prescan 只支持 3.8,那不就乱套了?

3.2.1 安装 Python 3.8

为什么是 3.8?因为 Prescan 8.x 和 CARLA 0.9.x 对 Python 3.8 的支持最稳定。我试过 3.9 和 3.10,跑起来偶尔会报一些奇怪的语法错误。

下载地址:Python 3.8.10

安装时记得勾选 Add Python to PATH,然后选择自定义安装,把安装路径改成 C:\Python38(方便后续查找)。

3.2.2 创建虚拟环境

打开命令行,执行以下命令:

# 切换到你的工作目录
cd D:\Prescan_CARLA_Project

# 创建虚拟环境
C:\Python38\python.exe -m venv prescan_carla_env

# 激活虚拟环境
prescan_carla_env\Scripts\activate

# 验证 Python 版本
python --version
# 应该输出:Python 3.8.10

看到 (prescan_carla_env) 出现在命令行前面,就说明环境激活成功了。以后每次做联合仿真,都要先激活这个环境。

小技巧:在 VS Code 里,你可以按 Ctrl+Shift+P,输入 Python: Select Interpreter,然后选择 prescan_carla_env\Scripts\python.exe。这样就不用每次手动激活了。

3.3 依赖库安装:缺一不可

环境配好了,接下来装依赖库。这些库是 Prescan 和 CARLA 联合仿真时需要用到的,缺一个都可能报错。

3.3.1 核心依赖库

库名 版本要求 用途
numpy ≥1.19.5 数值计算,处理传感器数据
pillow ≥8.0.0 图像处理,处理摄像头数据
pygame ≥2.0.0 可视化窗口,显示仿真画面
protobuf ≥3.12.0 数据序列化,Prescan 与 CARLA 通信
shapely ≥1.7.0 几何计算,处理道路边界

安装命令很简单,一行搞定:

pip install numpy pillow pygame protobuf shapely

如果你网速慢,可以加个国内镜像源:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy pillow pygame protobuf shapely

3.3.2 CARLA Python API

这个比较特殊,它不在 PyPI 上,而是放在 CARLA 的安装包里。你需要手动安装:

# 进入 CARLA 的 Python API 目录
cd C:\CARLA_0.9.11\PythonAPI\carla\dist

# 找到 egg 文件(比如 carla-0.9.11-py3.8-linux-x86_64.egg)
# 用 pip 安装
pip install carla-0.9.11-py3.8-win-amd64.egg

注意:egg 文件名里的 py3.8 和 win-amd64 必须跟你当前的 Python 版本和系统架构一致。我见过有人拿 Linux 的 egg 文件在 Windows 上装,结果报错说格式不支持。

3.4 验证:跑一个简单的联合仿真

所有东西都装好了,怎么知道能不能用?跑一个最简单的例子验证一下。

3.4.1 启动 CARLA 服务端

打开一个命令行窗口,进入 CARLA 目录,启动服务端:

cd C:\CARLA_0.9.11
CarlaUE4.exe -quality-level=Low -carla-rpc-port=2000

参数说明:

  • -quality-level=Low:低画质模式,减少 GPU 负载,验证阶段够用了
  • -carla-rpc-port=2000:指定 RPC 端口,默认就是 2000,可以不改

看到控制台输出 Listening for connections on port 2000,就说明 CARLA 服务端启动成功了。

3.4.2 运行 Prescan 示例场景

打开 Prescan,加载一个示例场景(比如 SimpleStraightRoad.pb)。在 Prescan 的工具栏里找到 CARLA Interface 按钮,点击 Connect。

如果连接成功,Prescan 的状态栏会显示 Connected to CARLA。然后点击 Run Simulation,你应该能看到 Prescan 的场景在 CARLA 的渲染窗口中显示出来。

验证成功标志:
  • Prescan 仿真进度条正常推进
  • CARLA 窗口显示对应的 3D 场景
  • 控制台没有报错信息

3.4.3 常见问题与解决

如果验证失败,别慌。我列几个我踩过的坑:

  • 连接超时:检查 CARLA 服务端是否启动,端口是否被占用。可以用 netstat -ano | findstr 2000 查看端口状态。
  • 版本不匹配:Prescan 和 CARLA 的版本必须对应。Prescan 8.5 对应 CARLA 0.9.11,Prescan 8.6 对应 CARLA 0.9.13。
  • Python 路径错误:检查 config.xml 里的 Python 路径是否指向你的虚拟环境。
  • 缺少依赖库:运行 pip list 检查是否所有库都已安装。

嗯,到这里,环境搭建就算全部完成了。你想想看,从安装 Prescan、CARLA,到配置接口、Python 环境,再到装依赖库、跑通验证,每一步都不容易。但一旦跑通了,后面写控制脚本、做传感器仿真,就会顺畅很多。

我个人觉得,环境搭建是最磨人的阶段,但也是最能积累经验的部分。以后你换版本、换机器,这些经验都能用上。


可可精品资料库