仿真环境搭建:主流仿真平台对比(CARLA、SUMO、LGSVL)

做自动驾驶仿真验证,说白了就是给算法找个「练车场」。你总不能每次改个参数就真车上路吧?那成本谁也扛不住。我个人习惯是,先花半天时间把仿真环境搭好,后面调试效率能翻三倍。

今天咱们就聊聊三个主流平台:CARLA、SUMO、LGSVL。嗯,它们各有各的脾气,选对了能省不少事。

一、三大平台核心对比

先给个总览表格,方便你快速定位需求:

特性 CARLA SUMO LGSVL
定位 高保真视觉仿真 交通流微观仿真 全栈自动驾驶仿真
传感器模拟 ★★★★★(激光雷达、相机、IMU) ★☆☆☆☆(无传感器模型) ★★★★☆(支持主流传感器)
交通流模拟 ★★★☆☆(基础NPC行为) ★★★★★(路网级交通流) ★★★☆☆(可扩展)
渲染引擎 Unreal Engine 4 无图形界面 Unity
开源协议 MIT EPL-2.0 Apache-2.0
学习曲线 中等(需Python基础) 较陡(XML配置复杂) 中等(文档较全)
我的建议:如果你主要做感知算法(比如车道线检测、障碍物识别),无脑选CARLA。如果你研究路径规划和交通决策,SUMO+CARLA联合仿真才是王道。LGSVL嘛,适合做Apollo系统集成测试。

二、CARLA:高保真视觉仿真首选

CARLA是我用得最多的平台。为什么?因为它渲染出来的画面太真实了。我在项目中遇到过一个问题:用CARLA训练的模型,迁移到真车上时,泛化能力明显比用其他仿真器训练的强。

环境配置步骤:

  1. 硬件要求:至少6GB显存的NVIDIA显卡,16GB内存。别问我为什么,我第一次用集成显卡跑CARLA,直接卡成PPT。
  2. 下载CARLA:去官方GitHub Releases下载预编译包(约8GB)。我建议用0.9.13以上版本,API更稳定。
  3. Python环境:推荐Python 3.7-3.9,用conda创建虚拟环境:
conda create -n carla python=3.8
conda activate carla
pip install carla==0.9.13  # 匹配你的CARLA版本
避坑指南:我曾经直接pip install carla没指定版本,结果装了个0.9.11,和下载的0.9.13客户端不兼容,报错报了一下午。记住:客户端版本和Python包版本必须一致。

启动测试:

# 终端1:启动CARLA服务器
./CarlaUE4.sh -quality-level=Low  # 低画质模式,调试时用

# 终端2:运行示例脚本
cd PythonAPI/examples
python3 spawn_npc.py -n 50  # 生成50辆NPC车辆

你想想看,50辆车在城里乱跑,传感器数据实时回传,这感觉是不是很爽?

三、SUMO:交通流仿真的老大哥

SUMO没有图形界面,但它对交通流的模拟精度,目前没有对手。说白了,它就是个「交通工程师的Excel」——看起来枯燥,但数据极其精准。

安装方式:

# Ubuntu 20.04
sudo apt-get install sumo sumo-tools sumo-doc

# 验证安装
sumo --version  # 输出:SUMO 1.12.0

嗯,这里要注意:SUMO的配置文件是XML格式的,写起来有点繁琐。我习惯用netedit(SUMO自带的图形编辑器)先画路网,再导出配置。

一个简单的路网示例:

<?xml version="1.0" encoding="UTF-8"?>
<routes>
    <vType id="car" accel="2.6" decel="4.5" maxSpeed="50"/>
    <flow id="flow1" type="car" begin="0" end="3600" number="500" from="edge1" to="edge2"/>
</routes>

这段代码定义了一种车型和一条车流。500辆车在一小时内从edge1开到edge2。简单吧?但实际项目中,路网可能有上千条边,配置起来确实需要耐心。

注意:SUMO和CARLA的坐标系不同。SUMO用的是笛卡尔坐标系(x向右,y向上),而CARLA用的是Unreal坐标系(x向前,y向右)。做联合仿真时,一定要做坐标转换,否则车会飞到天上去——别问我怎么知道的。

四、LGSVL:Apollo的最佳搭档

LGSVL是LG研发的仿真器,后来被Aptiv收购了。它最大的特点是和Apollo深度集成。如果你用百度Apollo做自动驾驶系统,LGSVL能帮你省掉大量适配工作。

安装步骤:

  1. 下载LGSVL Simulator(约4GB),支持Windows/Linux。
  2. 安装Python API:pip install lgsvl
  3. 启动Simulator后,在Web界面加载地图(比如San Francisco)。

连接Apollo的示例代码:

import lgsvl

sim = lgsvl.Simulator("http://localhost:8080")
sim.load("SanFrancisco")

# 生成一辆主车
spawn = sim.get_spawn()[0]
ego = sim.add_agent("Lincoln2017MKZ", lgsvl.AgentType.EGO, spawn)

# 连接Apollo的Bridge
ego.connect_bridge("localhost", 9090)

# 开始仿真
sim.run(time_limit=30)

这段代码干了三件事:加载地图、生成主车、连接Apollo。30秒的仿真,就能验证一个变道决策逻辑。效率比真车测试高太多了。

五、知识体系总览

下面这张SVG图,帮你理清三个平台的关系和适用场景:

仿真平台知识体系 CARLA 高保真视觉仿真 SUMO 交通流微观仿真 LGSVL 全栈系统集成 传感器模拟 场景编辑器 Python API 路网编辑 交通流模型 排放计算 Apollo集成 Unity渲染 云端部署 CARLA + SUMO 联合仿真

从图上你能看出来,CARLA和SUMO是互补关系——一个管视觉,一个管交通流。LGSVL则更偏向系统集成。我个人建议,如果你时间有限,先精通CARLA,再扩展其他平台。

六、环境配置避坑总结

  • 显卡驱动:CARLA需要NVIDIA驱动≥450.80.02。我遇到过驱动太旧,启动时直接黑屏。
  • Python版本:三个平台都支持Python 3.8,这是最稳妥的选择。
  • 磁盘空间:三个平台加起来至少需要30GB。别装到系统盘,否则你会后悔的。
  • 网络问题:下载CARLA包时,建议用代理或夜间下载。8GB的文件,白天下载经常断。
最后说一句:仿真环境搭建是自动驾驶开发的「地基」。地基没打好,后面算法调得再好也白搭。花点时间把环境配稳,后面能省十倍的时间。
可可精品资料库