因为正好项目中用到Sumo软件, 发现网上关于sumo的中文材料非常少, 所以我想记录一些自己使用sumo过程中的经验和教训;
SUMO的官方网站是 https://sumo.dlr.de/pydoc/ 本文大部分代码相关内容都来源于此网站
一.Sumo的安装
我的环境是macos 安装可以直接使用homebrew安装 brew install sumo 具体的安装教程在sumo官网有详细说明; mac版的安装在这个网址 安装完后记得要在bash-profile(bash)或者zshrc中(zsh)设置SUMO_HOME, 我这里的配置是这样:
#设置sumo, 这个是用homebrew装的
export SUMO_HOME="/usr/local/opt/sumo/share/sumo"
当一切都配置完成之后, 应该可以在终端使用命令sumo看到以下内容
~->sumo
Eclipse SUMO Version 1.3.1
Build features: Darwin-17.7.0 x86_64 Clang 10.0.0.10001044 Release Proj GUI
Copyright (C) 2001-2019 German Aerospace Center (DLR) and others; https://sumo.dlr.de
License EPL-2.0: Eclipse Public License Version 2
Use --help to get the list of options.
也可以使用sumo-gui命令进入sumo的gui客户端, 在mac中是基于XQuartz的
二.Sumo地图导入
我当时参考了这篇博文的内容veins车载通信仿真框架(2)--SUMO地图替换 大家可以去看一下这篇博文, 我简单介绍一下流程: 1.在OpenStreetMap网站上导出你想要研究的区域的地图, 在网页左上方有导出按钮, 然后选择区域之后就可以下载地图文件了, 应该是一个osm文件, 比如map.osm 2.在获得osm文件之后, 我们要用我们研究的地图替换sumo地图中的默认地图第一步, 根据osm文件生成.net.xml道路文件, 进入osm文件所在的目录下, 使用命令
netconvert --osm-files map.osm -o map.net.xml
此时我们会得到一个map.net.xml文件, 在这一步, 我们就可以在终端中输入sumo-gui命令打开gui软件, 然后File - open network 然后选中我们生成的net.xml地图, 就可以在软件中看到我们刚才下载的地图了 - 第二步, 在刚才得到的地图中加入车辆, 因为我是要研究车流量相关的内容, 所以得到一个带车流的地图才有意义, 我们要生成一个.rou.xml车辆行为文件, 首先利用脚本randomTrips.py生成一个.trip.xml文件, 在这个文件中记录了随机生成的车辆的"旅程", 也就是每一辆车从哪儿开到哪儿, 至于具体的路线还是使用randomTrips脚本生成起点到终点的最短路径, 所以这一步使用2个命令
# 这一步是生成trips文件
/usr/local/opt/sumo/share/sumo/tools/randomTrips.py -n map.net.xml -e 100 -l
#生成车的路径行为xml的脚本,
#每p个步长生成1个,
#binomial二项分布系数是8, 1的时候退化成伯努利分布,
#s是种子数,
#e结束时间,
#l是根据道路长度来划分权重, L是根据车道数划分权重, 我这里选的是l;
/usr/local/Cellar/sumo/1.3.1/share/sumo/tools/randomTrips.py -n map.net.xml -r map.rou.xml -e 3600 -l --binomial=8 -p 5 -s 830 -v第三步, 生成.poly.xml地形文件 shell polyconvert --net-file map.net.xml --osm-files map.osm -o map.poly.xml
生成.sumo.cfg文件
这个文件要和net, poly, rou那些文件放一起;
简单总结一下, net文件存了路网的节点和道路信息, rou存储了道路中所有车辆的信息, 比如车速, 多少辆车, 每辆车从哪儿开到哪儿这些信息, poly存储的是地形信息;

本文介绍了如何在Mac环境下安装SUMO,包括配置SUMO_HOME,以及通过Homebrew安装。讲解了如何导入OpenStreetMap地图,生成.net.xml和.rou.xml文件,并使用SUMO-GUI查看地图。此外,文章还探讨了Traci接口在Java和Python中的使用,特别是Python接口的traci.start方法和基本操作,以及如何实现车辆的路径规划功能。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



