3、环境搭建(下):SUMO源码编译与安装、CARLA模拟器安装、Python虚拟环境配置

上一节我们把操作系统和基础工具链搞定了。这一节,咱们来啃硬骨头——把SUMO和CARLA这两个核心引擎装好,再配好Python环境。

说实话,我第一次搭这个环境的时候,踩了不少坑。尤其是SUMO源码编译那一步,折腾了我整整一个下午。所以这一节,我会把那些容易翻车的地方,一个一个给你指出来。

3.1 SUMO源码编译与安装

为什么非要源码编译?直接用apt安装不香吗?

嗯,这里要注意:apt仓库里的SUMO版本通常比较老,而且缺少一些关键模块。比如TraCI接口,老版本支持得不好。咱们做联合仿真,TraCI是命根子,必须用最新版。

3.1.1 下载源码

我个人习惯把源码放在 /opt 目录下,这样系统级的工具都集中管理。

cd /opt
git clone --recursive https://github.com/eclipse/sumo.git
cd sumo
git checkout v1_18_0  # 我测试过的稳定版本

这里有个坑:--recursive 参数不能少。SUMO依赖一些子模块,比如 foreign 目录下的库,不递归克隆的话,编译到一半会报错。

3.1.2 安装依赖

SUMO的依赖比较多,但好在大部分都能通过apt搞定。

sudo apt-get install cmake python3-dev libxerces-c-dev libfox-1.6-dev libgdal-dev libproj-dev libgl2ps-dev swig

我曾经在Ubuntu 20.04上漏装了 libgl2ps-dev,结果编译GUI版本时卡住了。如果你不需要GUI,可以加 -DCMAKE_BUILD_TYPE=Release -DBUILD_GUI=OFF 参数跳过。

3.1.3 编译与安装

SUMO用CMake构建,流程很标准:

mkdir build/cmake-build && cd build/cmake-build
cmake ../..
make -j$(nproc)
sudo make install

-j$(nproc) 用满所有CPU核心,能快不少。我笔记本是8核的,编译大概花了10分钟。

编译完成后,验证一下:

sumo --version

如果输出版本号,说明安装成功。

关键路径配置

SUMO安装后,需要设置环境变量:

export SUMO_HOME=/opt/sumo
export PATH=$SUMO_HOME/bin:$PATH

建议写到 ~/.bashrc 里,一劳永逸。

3.2 CARLA模拟器安装

CARLA的安装相对简单,但要注意版本匹配。SUMO和CARLA之间通过Co-Simulation Framework通信,版本不对会连不上。

3.2.1 下载CARLA

CARLA官方提供了预编译包,咱们直接用这个:

cd /opt
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
cd CARLA_0.9.14

为什么选0.9.14?我测试过,这个版本对SUMO 1.18.0的兼容性最好。更高版本虽然功能多,但有些API变了,容易出问题。

3.2.2 安装额外资源包

CARLA需要一些地图和车辆模型:

./ImportAssets.sh

这个脚本会下载大约2GB的资源。网速慢的话,建议用代理或者换个时间段。

3.2.3 启动测试

安装完成后,启动CARLA服务端:

./CarlaUE4.sh -quality-level=Low

加上 -quality-level=Low 参数,能省不少显存。我之前的笔记本只有4GB显存,不开这个参数直接黑屏。

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

注意:CARLA默认使用2000端口。如果被占用,可以用 -carla-rpc-port=3000 指定其他端口。但后续配置也要同步修改。

3.3 Python虚拟环境配置

为什么要用虚拟环境?说白了,就是隔离依赖。SUMO的TraCI库、CARLA的Python API、还有咱们自己写的脚本,各自依赖的包版本可能冲突。虚拟环境能避免这种混乱。

3.3.1 创建虚拟环境

我习惯用 venv,Python3自带的,轻量又好用:

python3 -m venv ~/carla_sumo_env
source ~/carla_sumo_env/bin/activate

激活后,终端前面会出现 (carla_sumo_env) 前缀,说明环境生效了。

3.3.2 安装核心依赖

咱们需要三个核心库:

pip install --upgrade pip
pip install carla==0.9.14
pip install sumo-traci
pip install numpy matplotlib

carla 包就是CARLA的Python API。sumo-traci 是SUMO的TraCI接口。这两个版本必须和前面安装的模拟器版本一致。

我曾经犯过一个错:用pip安装了最新版的 carla 包,结果和0.9.14的服务端对不上,报了一堆RPC错误。后来老老实实指定版本号,问题就解决了。

3.3.3 验证环境

写个简单的测试脚本:

# test_env.py
import carla
import traci

print("CARLA version:", carla.__version__)
print("TraCI loaded successfully")

运行:

python test_env.py

如果没报错,说明环境配好了。

小技巧:每次打开新终端,记得先执行 source ~/carla_sumo_env/bin/activate。我习惯在项目根目录放一个 .env 文件,里面写上激活命令,省得每次都敲。

3.4 本章知识体系

下面这张图,把这一节的核心逻辑串起来了:

环境搭建(下)核心流程 SUMO源码编译 CARLA模拟器安装 Python虚拟环境 git clone + cmake + make 下载tar包 + ImportAssets venv + pip install 联合仿真环境就绪 三个组件独立安装,通过TraCI和CARLA API协同工作

这张图展示了咱们这一节做的三件事:SUMO编译、CARLA安装、Python环境配置。三者缺一不可,最终汇合到联合仿真环境。

环境搭好了,下一节咱们就可以写代码,让SUMO和CARLA真正跑起来了。


可可精品资料库