1. SUMO入门:交通仿真概述、SUMO发展史、SUMO核心功能与安装

各位同学好,我是老张。做交通仿真这行十几年了,SUMO一直是我最顺手的工具。今天咱们聊聊SUMO的入门知识——别觉得基础就跳过,我见过太多人因为安装配置踩坑,白白浪费一整天。

1.1 交通仿真到底在干什么?

说白了,交通仿真就是用计算机模拟车流、人流、信号灯这些东西。你想想看,现实中改一个路口的设计,动辄几十万、上百万,万一改错了怎么办?仿真就是让你在电脑里先试一遍。

我个人习惯把交通仿真分成三类:

  • 微观仿真:每辆车单独建模,有加速、减速、换道行为。SUMO就是干这个的。
  • 中观仿真:把车流当成一个个小组来模拟,精度介于微观和宏观之间。
  • 宏观仿真:用流体力学那套,看整体流量、密度、速度。

咱们这门课主要讲微观仿真。为什么?因为做数据回放、做自动驾驶测试,必须精细到每辆车的轨迹。宏观仿真给不了这个精度。

核心观点:SUMO是开源微观交通仿真领域的扛把子。没有之一。

1.2 SUMO的发展史——一个德国学生的毕业设计

SUMO全称是"Simulation of Urban MObility",城市交通仿真。它最早是2001年德国航空航天中心(DLR)一个博士生的课题。嗯,你没听错,最初就是一个毕业设计。

我记得2012年第一次接触SUMO时,版本才0.12,文档少得可怜。那时候遇到问题只能去邮件列表问,等回复要两三天。现在好多了,社区活跃,版本也到了1.20+。

几个关键时间节点:

年份 事件
2001 SUMO项目启动,作为DLR内部研究工具
2002 首次公开发布,支持基本路网和车辆模型
2010 加入TraCI接口,支持外部程序实时控制仿真
2016 集成OpenDrive导入,开始支持自动驾驶仿真
2020至今 大规模并行仿真、3D可视化、与CARLA/SUMO联合仿真

为什么SUMO能活下来而且越来越强?我觉得核心就两点:开源和接口开放。你想想看,商业软件换个接口要等版本更新,SUMO自己就能改。

1.3 SUMO能干什么?核心功能一览

我建议你把SUMO理解成一个工具箱,而不是一个单一软件。它包含十几个工具,各司其职。下面这几个是你必须掌握的:

  • sumo:主仿真程序,跑仿真的核心引擎
  • sumo-gui:带图形界面的仿真器,调试用很方便
  • netedit:路网编辑器,画路、设信号灯都在这里
  • netconvert:路网转换器,把OpenStreetMap、OpenDrive等格式转成SUMO格式
  • duarouter:路径规划器,给车辆分配行驶路线
  • TraCI:Python/C++接口,实时控制仿真中的每一辆车

我的习惯:平时调试用sumo-gui,批量跑仿真用sumo命令行。TraCI是咱们做数据回放的核心,后面章节会重点讲。

SUMO能输出的数据也很丰富:每辆车的速度、位置、加速度、油耗、排放、信号灯状态……基本上你能想到的交通参数,它都能给你。我在项目中遇到过最夸张的一次,一次仿真跑了10万辆车,输出文件有8个G。嗯,那之后我就学会了用筛选输出。

1.4 安装SUMO——别踩这些坑

安装看起来简单,但我见过太多人卡在这一步。咱们分平台说。

Windows安装

最简单的方式:去官网下载安装包,一路Next就行。但我建议你注意两点:

  • 安装路径不要有中文和空格。我习惯装到 C:\SUMO 这种纯英文路径。
  • 安装时勾选"Add SUMO to system PATH",省得后面配环境变量。

避坑指南:我曾经遇到过安装后sumo命令找不到,就是因为没勾选PATH。后来手动加环境变量又搞了半小时。所以安装时一定看清楚那个勾选框。

Linux安装

Ubuntu用户直接:

sudo apt install sumo sumo-tools sumo-doc

CentOS/RHEL用户需要先添加EPEL源:

sudo yum install epel-release
sudo yum install sumo

我个人习惯用源码编译安装,因为可以选最新的版本。但初学者建议直接用包管理器,省心。

macOS安装

用Homebrew:

brew install sumo

或者去官网下载dmg安装包。macOS用户要注意,M1/M2芯片的Mac需要确认安装的是ARM版本。

验证安装

装完之后,打开终端(Windows是cmd),输入:

sumo --version

如果看到类似 SUMO Version 1.20.0 的输出,恭喜你,安装成功。

小技巧:再跑一下 sumo-gui,如果能弹出图形界面,说明GUI也正常。我第一次装完只测了命令行,结果后面要用GUI才发现缺依赖,又折腾了一轮。

1.5 本章知识体系

下面这张图帮你理清SUMO的定位和核心模块。我画了好几个版本,这个是最清晰的:

SUMO交通仿真知识体系 交通仿真分类 微观仿真(SUMO) 中观仿真 宏观仿真 SUMO核心功能模块 sumo引擎 sumo-gui netedit netconvert duarouter TraCI接口 安装方式 Windows安装包 Linux包管理器 macOS Homebrew 源码编译

这张图把咱们这章的内容串起来了。从上到下看:交通仿真分三类,SUMO属于微观仿真;它内部有六个核心模块,各管一摊;最后是安装方式,选一个适合你的就行。

1.6 本章小结

嗯,到这咱们把SUMO的来龙去脉讲清楚了。你知道了交通仿真是干什么的,SUMO是怎么从德国一个博士课题长成今天这个样子的,它有哪些核心功能,以及怎么装到你的电脑上。

下一章咱们就要动手了——用SUMO跑第一个仿真。我会带你从零搭建一个十字路口,让车跑起来。到时候你会发现,SUMO其实没那么神秘。

可可精品资料库