一、SUMO入门:从零开始认识交通仿真
大家好,我是你们这门课的老朋友。今天咱们正式开篇,聊聊SUMO——这个在交通仿真领域绕不开的开源利器。
说实话,我第一次接触SUMO是在一个城市路网优化项目里。当时甲方要求模拟早高峰拥堵情况,我翻遍了商业软件,要么贵得离谱,要么功能受限。后来一个德国同事跟我说:「试试SUMO吧,免费的,但功能一点不差。」嗯,这一试,就用了快十年。
1.1 交通仿真到底在干什么?
交通仿真,说白了就是「在电脑里造一个虚拟交通世界」。你想想看,现实中我们没法随便封路做实验,对吧?但仿真可以。你可以随意调整信号灯配时、增加车道、改变限速,然后看车流怎么变化。
我个人习惯把交通仿真分成三类:
- 微观仿真:每辆车都有自己的行为,跟车、换道、加速减速。SUMO就是干这个的。
- 中观仿真:把车流当成一个个小组来处理,不关心具体每辆车怎么开。
- 宏观仿真:用流体力学那套,看车流密度、速度、流量之间的关系。
咱们这门课主要聚焦微观仿真,因为传感器数据采集需要精确到每一辆车的位置和速度。
1.2 SUMO的发展历史——一个德国故事
SUMO全称是「Simulation of Urban MObility」,城市交通仿真。它诞生于2001年,德国航空航天中心(DLR)搞出来的。
我记得2012年那会儿,SUMO还只有命令行界面,画个路网得手动写XML。现在呢?有了netedit图形编辑器,拖拖拽拽就能搞定。版本从0.12一路走到现在的1.20+,功能翻了不知道多少倍。
为什么SUMO能活下来而且越来越火?我觉得三个原因:
- 开源免费:商业软件一套几十万,SUMO零成本
- 社区活跃:全球用户贡献代码、修复bug
- 接口丰富:TraCI接口让你用Python控制仿真,这在自动驾驶领域太重要了
一个小插曲:我曾经在项目里遇到一个诡异bug——仿真跑到一半车辆全部消失。查了两天,最后发现是SUMO版本从0.30升级到0.32时,某个默认参数变了。所以我的建议是:生产环境锁定版本,别轻易升级。
1.3 SUMO核心概念——你必须搞懂的五个东西
刚开始学SUMO的人,最容易懵的就是一堆术语。别怕,我帮你捋清楚。
| 概念 | 一句话解释 | 对应文件 |
|---|---|---|
| 路网 (Network) | 道路、交叉口、车道的集合,相当于地图 | .net.xml |
| 交通需求 (Demand) | 车从哪里来、到哪里去、什么时候出发 | .rou.xml |
| 车辆类型 (Vehicle Type) | 车的长度、最大速度、加速度等属性 | .rou.xml 内部定义 |
| 仿真配置 (Configuration) | 告诉SUMO用哪个路网、哪个需求、跑多久 | .sumocfg |
| 输出 (Output) | 仿真结果,比如每辆车的轨迹、检测器数据 | .xml 或 .csv |
这五个概念,你只要记住:路网是舞台,需求是剧本,车辆是演员,配置是导演,输出是录像。嗯,这个比喻我用了好多年,学生都说好懂。
1.4 仿真环境搭建——手把手教你装SUMO
搭建环境这件事,我踩过不少坑。曾经在Ubuntu 16.04上编译SUMO源码,折腾了一整天,最后发现少装了一个依赖库。所以我现在强烈建议:能用安装包就别编译源码。
Windows用户
- 去SUMO官网下载Windows安装包(.exe文件)
- 双击安装,一路下一步
- 安装完成后,把SUMO的bin目录加到系统PATH环境变量
- 打开命令行,输入
sumo --version,看到版本号就成功了
Linux用户(Ubuntu/Debian)
sudo apt update
sudo apt install sumo sumo-tools sumo-doc
echo 'export SUMO_HOME=/usr/share/sumo' >> ~/.bashrc
source ~/.bashrc
macOS用户
brew install sumo
我的小技巧:装完之后,先跑一个官方示例测试一下。在SUMO的tools目录下有个 hello_tutorial,直接运行看看能不能出结果。能跑通,说明环境没问题。
注意:如果你要用Python控制SUMO(我们后面章节会讲),记得还要装 traci 库:pip install traci。我曾经见过有人装了半天SUMO,结果忘了装traci,Python脚本跑不起来——嗯,那个人就是我。
1.5 本章知识体系总览
下面这张图,是我自己画的SUMO入门知识结构。你把它存下来,学完整个课程再回来看,会有更深的理解。
这张图把本章内容串起来了。你注意看,所有分支最终都指向「掌握这些,你就拿到了SUMO的钥匙」。没错,第一章就是打地基,地基稳了,后面盖楼才不慌。
好了,第一章就到这里。环境搭好之后,下一章咱们开始真正跑第一个仿真——让你亲眼看到车在路上跑起来。