当前位置: 首页 > news >正文

sumo的简单使用

如果你也对交通仿真感兴趣,且是一个小白,但是有python基础,我想我可以帮到你。

安装

首先安装为我们入门的第一步:

  1. 下载地址:https://sumo.dlr.de/docs/Downloads.php;推荐安装windos,乌班图啥的也可以但是在环境问题很难搞。

  2. 双击安装;这里推荐msi很方便,几乎是傻瓜式安装。在这里插入图片描述

  3. 不同于pyhcarm,sumo不会为我们添加环境变量,所以安装时你要记住自己的安装路径,方便一会配置。如果你是默认安装方式那你的路径大概是:C:\Program Files (x86)\Eclipse\Sumo在这里插入图片描述

配置环境变量

这步很重要,因为后期我们要配合Python:

  1. 方法在官网:https://sumo.dlr.de/docs/Basics/Basic_Computer_Skills.html#additional_environment_variables在这里插入图片描述
  2. 如果你成功了应该是这样:在这里插入图片描述
  3. 好了你现在已经成功了,你用好友了两个软件:在这里插入图片描述
  4. gui是仿真界面,netedit是你将来画或修改路网的。

文件配置

一般的仿真文件会有三个:在这里插入图片描述
.net.xml:车辆配置文件
.rou.xml:路网配置文件
.sumocfg:仿真配置文件
文件的编写为大家提供以为大哥的参考:https://blog.csdn.net/weixin_46870466/article/details/115558448
实际上sumo也为我们提供了演示文件:在这里插入图片描述

运行

下一步让我们跑起来:

  1. 找到之前说的.sumocfg文件比如上面的hello.sumocfg,右键用sumo-gui打开,箭头1是运行,箭头2是延迟(如果跑的太快左拉就会变慢),如果看不清,可以用鼠标拖动,配合滑轮调整图大小这都是基本操作啦:在这里插入图片描述
  2. 找到之前说的.rou.xml文件比如上面的hello.rou.xml右键用netedit打开就可以修改路网,这部分教程太复杂为大家推荐一个教学视频:https://www.bilibili.com/video/BV1Kt411N7Xp/?spm_id_from=autoNext&vd_source=f9a4b1d50147e488803b17ca19871210
    当然我们的目标是python自动生成真实的路网啦。

python文件生成真实路网

现在就是利用真实地图生成真实路网啦,这真的很有意思:

  1. 首先你得有python解释器,所以说有Python基础是我们的前提,然后我们用Spyder打开这个文件(pycharm打开不好使原因暂时未知),地图能否成功打开极大的依赖你的网速,所以建议大家用手机开个热点:在这里插入图片描述

  2. 打开以后是这样的,1是我们设置路网的地方,3可以框选区域,2可以培植我们想要的车辆。
    在这里插入图片描述

  3. 然后点击这里生成文件;稍等一会,他会自己打开gui界面。在这里插入图片描述

  4. 生成的文件应该在这里,文件名是你的日期;在这里插入图片描述

  5. 看着真的很有趣;在这里插入图片描述

python调用

现在就是用python跑起来,让python调用sumo:

  1. 直接给大家上代码:
import os
import sys
import optparse
import traci

if 'SUMO_HOME' in os.environ:
   tools = os.path.join(os.environ['SUMO_HOME'], 'tools')
   sys.path.append(tools)
else:
   sys.exit("please declare environment variable 'SUMO_HOME'")

from sumolib import checkBinary  

def get_options():
   optParser = optparse.OptionParser()
   optParser.add_option("--nogui", action="store_true",
                        default=False, help="run the commandline version of sumo")
   options, args = optParser.parse_args()
   return options

if __name__ == "__main__":
   options = get_options()
   print(1)
   if options.nogui:

       sumoBinary = checkBinary('sumo')
   else:
       sumoBinary = checkBinary('sumo-gui')

   traci.start([sumoBinary, "-c", r"C:\Users\glp10765\Sumo\2022-10-14-10-33-00\osm.sumocfg"])


   for step in range(0,3600000):

#        traci.vehicle.setSpeed('a12.5',10)
#        print(traci.vehicle.getIDList())
#        print(traci.edge.getIDList())
#        print(traci.inductionloop.getVehicleData('abcd'))
       traci.simulationStep()
       if step <= 10:
           print(traci.vehicle.getIDList())


   traci.close()

2.记得在这里修改自己的.sumocfg文件路径哦,这个for循环是你运行的次数;在这里插入图片描述

3.最后对于自动生成的路网,虽然你打开了gui但是并不能跑起来是因为你的文件缺了这几句,加上他!!!在这里插入图片描述
然后就能跑起来啦,至此就是剩下一些traci的函数,如果我后续学会了会更新哒。再见啦

相关文章:

  • SHOW ME THE CODE - 面向对象程序设计之 - 单一职责原则
  • Linux---自定义协议
  • 最大层内元素和
  • 路由重分布的概念与配置
  • 【热门话题】PostCSS:现代前端开发中的CSS增强工具
  • 景区文旅实景剧本杀小程序系统开发搭建
  • 高温应用中GaN HEMT大信号建模的ASM-HEMT
  • Adobe Acrobat DC中如何合并pdf并生成目录
  • Spring中的事务和事务的传播机制
  • Oracle中序列
  • maven的生命周期
  • 排序算法1:冒泡排序、快速排序、插入排序
  • 【C++】C++入门
  • Docker精通:微服务
  • HCIA-LTE学习总结03~04
  • Python Apex Legends 武器自动识别与压枪 全过程记录
  • 『Android』Toolbar+DrawerLayout+NavigationView实现类似QQ侧边栏效果
  • 10.13面试整理
  • 下一代 IDE 工具 JetBrains Fleet 正式公测
  • Node.js3---nodejs的内置模块之url模块
  • 什么样的小程序才能留住客户?
  • EXCEL表格-系统时间及进度自动记录工具制作
  • 走进元宇宙--手势交互技术详解
  • Zookeeper集群安装部署
  • 机器学习笔记 - 在Vehicles数据集上训练 YOLOv5 目标检测器
  • flutter系列之:把box布局用出花来
  • 计算机毕业设计JAVA旧物置换网站mybatis+源码+调试部署+系统+数据库+lw
  • GridView使用详情
  • springboot(四)
  • 基于腾讯云Docker部署PXC搭建MySQL集群
  • Node.js:模块化
  • java面试-GC垃圾回收机制