对于veins仿真,我这两天首先先从sumo学起,感觉只用veins自带的地图太无聊,而且看基础知识也没有成就感,就想着至少把地图换了,至少表面上可以有一个成果,查了好多资料,发现使用openStreetMap中的资源是最便捷的啦
OpenStreetMap 是一个由地图制作爱好者组成的社区,大家可以登录相应网站:https://www.openstreetmap.org/ 下载对应的.osm文件。
首先进入官网,点击左上方导出(Export)按钮,此时在左侧就会出现下图所示的界面,此时通过点击手动选择不同的区域(Manually select a different area),自己选择想要的地图范围,点击导出(Export),这样就会生成相应的map.osm文件(大家选择的范围建议不要过大,不然就很容易下载失败的)。
在桌面点击Activities选择第五个Files,找到Downloads里面的map.osm(我是默认下载到这里了,大家根据自己选择的下载地址找到相应的文件) 剪切map.osm文件,进入Home-->src并新建文件夹map,并将map.osm文件粘贴到这里(文件夹位置在哪里都好,并不影响后面的操作,方便管理就好)
在桌面点击Activities-->在搜索框Type to search 搜索Terminal进入终端,(反正我使用快捷键进入终端没反应),
cd src/map 进入map文件夹下面(如果找不到位置,就从根目录下寻找:cd /home/veins/src/map)
此时会利用sumo bin目录下的netconvert, polyconvert,以及sumo tools目录下的randomTrips.py生成相应的SUMO仿真文件。
在这里说明一下SUMO的车载仿真至少需要两个文件(道路和车嘛):
在终端输入:
netconvert --osm-files map.osm -o map.net.xml
生成.net.xml文件,此时我这里出现了如下的错误:
此时配置一下环境变量就好啦,在文件中永久配置请自行百度(与本文关系不大嘛,要不又可以写一个小博客啦),我这里就先配置临时的环境变量,方便后面的操作。
在终端输入
export SUMO_HOME=/home/veins/src/sumo-0.30.0
就可配置临时环境变量了
此时在重新输入 netconvert --osm-files map.osm.net.xml 就应该没问题啦
说明:netconvert作为一种转换工具,顾名思义可以将.osm文件转换成.net.xml文件,其中--osm-files map.osm是输入,--osm-files即表示输入文件类型, -o map.net.xml是输出, -o 即output的意思,map.net.xml即为输出文件
/home/veins/src/sumo-0.30.0/tools/randomTrips.py -n map.net.xml -e 100 -l
回车,没有消息就是好消息,此语句执行后,在map文件夹中生成一个.trip.xml文件,trip在SUMO中表示从一条公路到另一条公路的意思,即通过该语句随机生成了车辆行驶的路径,-e 100 -l是随机工具的配置,具体含义可执行 randomTrips.py -help进行查看
最后通过执行:
/home/veins/src/sumo-0.30.0/tools/randomTrips.py -n map.net.xml -r map.rou.xml -e 100 -l
将道路和行驶路径整合形成车辆的行驶行为。
polyconvert同样作为一种转换工具,可以根据.net.xml和.osm文件生成相应的地形文件,之所以需要该文件是因为在veins仿真过程中,该文件将会被使用。要生成.poly.xml文件,在终端输入如下命令:
polyconvert --net-file map.net.xml --osm-files map.osm -o map.poly.xml
\
.sumo.cfg是相应的配置文件新建一个文件map.sumo.cfg,编写其内容为:
该内容可以复制在/home/veins/src/veins/examples/veins/erlangen.sumo.cfg的内容, 并在input中的参数进行相应修改
(使用sumo-gui查看结果)
在终端输入
sumo-gui map.sumo.cfg
开启sumo可视化界面
点击 NO,将上方偏右的Delay填上相应的延迟数值,点击绿色按钮或者(图中红色按钮旁边的橙色箭头组成圆圈的按钮),即可看到最终效果。
至此至少可以证明所做的地图是没有问题的。
按照上一篇博客的方法,打开omnet++,
复制map.net.xml,map.rou.xml,map.poly.xml,map.sumo.cfg道路文件,车辆行为文件,地形文件以及配置文件到veins-->examples-->veins中,同时修改erlangen,launchd.xml中的相应内容:
右键veins-->examples-->veins-->omnetpp.ini,点击run as -->OMNet++ Simulation,运行veins,得到如下结果:
成功,心好累啊
出现的各种问题:由于本文只是对SUMO地图进行更改,所以大多是发生的错误应该发生在SUMO及相应的配置文件中,因此,如果此时出现问题,则我们首先要看sumo-launchd终端页面。
(1)首先如果Warning Environment variable SUMO_HOME...那就是提示你需要配置环境变量啦,虽然后面还可能有error,先解决环境变量问题(诶?刚刚不是已经配置临时环境变量了么?而且单独运行SUMO也没问题呀)。就是把上面的
export SUMO_HOME=/home/veins/src/sumo-0.30.0
写到文件/etc/profile中
然后重启,发现还是报错,正准备放弃关机的时候,不小心按了重启,再运行居然就好用了,也是见了鬼了
(2)如果修改了地图,大家也可能会遇到类似这样的错误
这说明,大家建立的地图太大了,playground(就是灰色覆盖部分,正常情况下,灰色部分要大于地图)不够用啦仿真出现问题。此时双击omnetpp.ini 在中间选择source,在26,27行修改相应的值,同时,为了美观,也可以在56,57行调节RSU的位置哦
目前我所了解的内容就是这些,如果有其他问题,或者遇到问题有对应的解决方案欢迎留言,我也是新手,欢迎大家一起来讨论