SUMO学习入门(一)SUMO介绍

声明:该文章为博主转载自知乎用户:侘寂升平,侵删!

非常感谢知乎朋友无私分享的sumo系列文章,给了我很多的指导!欢迎读者关注该博主!

以下为转载正文:

在过去的两个月间我从零入手学习了SUMO,并基于SUMO平台和Python语言实现了自己的一篇论文模型的仿真。温故而知新,就立足于现在的基础写几篇总结作为共勉,若有疑问还请大家多指教。

在这里插入图片描述

图1 SUMO仿真界面

一. 为什么要学习SUMO

SUMO,全称Simulation of Urban Mobility,是开源、微观、多模态的交通仿真软件,发展始于2000年。它纯粹是微观的,可以针对每辆车进行单独控制,因此非常适合交通控制模型的开发。学习SUMO是一个趋势,但是会涉及路网文件、车辆文件等文件的编写,所以最好有些编程基础,在理解的基础上套用就足以实现一些简单的仿真。总结来说,SUMO有以下优点:

  1. 开源,容易获取

  2. 易提取车辆与道路信息

  3. 自带有很多跟驰模型和换道模型(如IDM、ACC、CACC跟驰模型)

  4. VISSIM无法进行模型的开发,而SUMO可以利用TraCI((Traffic Control Interface))接口用Python语言实现模型开发

  5. 可以导入VISUM, Vissim, Shapefiles, OSM, RoboCup, MATsim, OpenDRIVE, and XML-Descriptions(可导入地图)

二. 我怎么学习SUMO

同样作为交通仿真软件,SUMO的学习资料比VISSIM就少很多,并且网上并没有实际的模型开发案例,所以要从零开始实现模型仿真很是头疼,在模型实现的过程中很多都是靠着直接学习Python的经验,也无法与他人验证。那么在我刚开始学习SUMO这个软件首先是了解了它的一些基础操作,知道了如何实现一个简单的仿真,在此基础上(这里要表白师兄师姐)不断探索,碰壁了好多次,反正最后实现效果还不错。在之后的文章也会引入些自己的模型案例。在此列一些比较好的学习平台:

  1. SUMO官方网站:利用Chrome的网页一键翻译同步英文学习 (最主要的学习工具)

https://sumo.dlr.de/docs/index.html

  1. B站up主

酷酷的风暴之灵(SUMO入门非常好,它还有对应的学习QQ群)网址链接https://space.bilibili.com/110602843?from=search&seid=6972657569966499773

二胡的日常 网址链接

https://www.bilibili.com/video/BV1H7411F76Bfrom=search&seid=18074238600246103248

  1. CSDN,哪里不会查哪里

基本上就靠着这三个平台磕磕绊绊建了模。
在这里插入图片描述

图2 SUMO官网

三. SUMO仿真的简单实现

3.1 SUMO下载

SUMO的下载在它的官网上就可以直接下,并且解压了之后可以直接用,我用的版本是1.3.1。它的安装包里有SUMO-GUI、NETCONVERT、NETDIT、DUAROUTER等应用,我在桌面上建立了netdit.exe和sumo-gui.exe两个程序的快捷方式,其中NETEDIT是用于绘制路网文件和生成需求的,生成路网文件画好之后储存即可生成.net.xml文件,SUMO-GUI是用于仿真模拟的。

3.2 环境变量的设置

使用TraCI接口的话需要先设置环境变量,官网上对环境变量的设置也有所说明,具体见下图3。概括来说在环境变量界面选择用户变量-path-编辑-新建“D:\software\sumo\bin”(取决于下载位置);在用户变量中新建-SUMO_HOME-增加值"D:\software\sumo"(取决于下载位置)。
在这里插入图片描述

图3 环境变量设置
3.3 最简单仿真实现流程

基本流程:生成道路文件(.net.xml)——生成车辆文件(.rou.xml)——将车辆文件和道路文件写入.sumocfg文件——在SUMO-GUI中打开.sumocfg文件即可开始仿真

以上文件可用记事本写,也可用Spyder或XMLSpy写。
在这里插入图片描述

图4 .sumocfg文件展示
四. SUMO的缺点

  1. 展示界面不美观

  2. 换道模型少(这点我没特殊感受)

  3. 新增或改变跟驰模型需要较难的操作

### 关于SUMO的IT技术相关介绍 #### 1. **SUMO概述** Eclipse SUMO(Simulation of Urban MObility)是款开源的城市交通模拟软件,广泛应用于城市交通规划、分析以及自动驾驶等领域。它提供了全面的功能集,能够灵活配置各种交通场景,并适用于多种实际应用需求[^2]。 #### 2. **功能特点** - **灵活性**: 用户可以通过定义不同的参数来调整路网结构、车辆行为和交通流量。 - **扩展性**: 支持与其他工具集成,例如通过Gym库与强化学习框架Stable Baselines 3 (SB3) 结合,实现复杂的交通决策任务,如换道策略优化[^1]。 - **适用性强**: 不仅可以用于微观交通仿真,还可以处理宏观层面的交通流建模。 #### 3. **核心技术路线** 种常见的技术路径是将SUMOPython结合使用,借助TraCI接口完成动态交互操作。例如,在交叉口信号灯自适应控制的研究中,利用Python脚本实时读取交通数据并更新信号配时方案[^3]。 #### 4. **应用场景拓展** 除了基本的交通仿真外,SUMO还被用来解决更复杂的问题领域,比如车联网环境下的通信协议测试和技术挑战应对。特别是在 VANETs 中涉及的移动模型设计方面,SUMO 提供了个理想的实验平台[^4]。 ```python import traci import sumolib def run_simulation(): step = 0 while step < 1000: traci.simulationStep() vehicles = traci.vehicle.getIDList() # 获取当前所有车辆ID列表 for vehicle_id in vehicles: lane_index = traci.vehicle.getLaneIndex(vehicle_id) # 查询某辆车所在车道索引号 speed = traci.vehicle.getSpeed(vehicle_id) # 获得该车速度值 step += 1 if __name__ == "__main__": sumoBinary = "sumo-gui" sumoCmd = [sumoBinary, "-c", "path/to/your/config/file.sumocfg"] traci.start(sumoCmd) try: run_simulation() finally: traci.close() ``` 上述代码片段展示了如何启动个简单的SUMO仿真过程并通过TraCI获取部分运行期间的数据样本。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值