2. 仿真环境搭建
做自动驾驶仿真验证,说白了就是给算法找个「练车场」。你总不能每次改个参数就真车上路吧?那成本谁也扛不住。我个人习惯是,先花半天时间把仿真环境搭好,后面调试效率能翻三倍。
今天咱们就聊聊三个主流平台:CARLA、SUMO、LGSVL。嗯,它们各有各的脾气,选对了能省不少事。
一、三大平台核心对比
先给个总览表格,方便你快速定位需求:
| 特性 | CARLA | SUMO | LGSVL |
|---|---|---|---|
| 定位 | 高保真视觉仿真 | 交通流微观仿真 | 全栈自动驾驶仿真 |
| 传感器模拟 | ★★★★★(激光雷达、相机、IMU) | ★☆☆☆☆(无传感器模型) | ★★★★☆(支持主流传感器) |
| 交通流模拟 | ★★★☆☆(基础NPC行为) | ★★★★★(路网级交通流) | ★★★☆☆(可扩展) |
| 渲染引擎 | Unreal Engine 4 | 无图形界面 | Unity |
| 开源协议 | MIT | EPL-2.0 | Apache-2.0 |
| 学习曲线 | 中等(需Python基础) | 较陡(XML配置复杂) | 中等(文档较全) |
二、CARLA:高保真视觉仿真首选
CARLA是我用得最多的平台。为什么?因为它渲染出来的画面太真实了。我在项目中遇到过一个问题:用CARLA训练的模型,迁移到真车上时,泛化能力明显比用其他仿真器训练的强。
环境配置步骤:
- 硬件要求:至少6GB显存的NVIDIA显卡,16GB内存。别问我为什么,我第一次用集成显卡跑CARLA,直接卡成PPT。
- 下载CARLA:去官方GitHub Releases下载预编译包(约8GB)。我建议用0.9.13以上版本,API更稳定。
- Python环境:推荐Python 3.7-3.9,用conda创建虚拟环境:
conda create -n carla python=3.8
conda activate carla
pip install carla==0.9.13 # 匹配你的CARLA版本
启动测试:
# 终端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。简单吧?但实际项目中,路网可能有上千条边,配置起来确实需要耐心。
四、LGSVL:Apollo的最佳搭档
LGSVL是LG研发的仿真器,后来被Aptiv收购了。它最大的特点是和Apollo深度集成。如果你用百度Apollo做自动驾驶系统,LGSVL能帮你省掉大量适配工作。
安装步骤:
- 下载LGSVL Simulator(约4GB),支持Windows/Linux。
- 安装Python API:
pip install lgsvl - 启动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则更偏向系统集成。我个人建议,如果你时间有限,先精通CARLA,再扩展其他平台。
六、环境配置避坑总结
- 显卡驱动:CARLA需要NVIDIA驱动≥450.80.02。我遇到过驱动太旧,启动时直接黑屏。
- Python版本:三个平台都支持Python 3.8,这是最稳妥的选择。
- 磁盘空间:三个平台加起来至少需要30GB。别装到系统盘,否则你会后悔的。
- 网络问题:下载CARLA包时,建议用代理或夜间下载。8GB的文件,白天下载经常断。