在venis中使用Roiroad功能

时间:2016-08-08 03:37:06

标签: omnet++ veins sumo

我有一个由SUMO创建的移动模型,面积约为2 KM * 2 Km,用于实际地图。 我想仅为此模型的一部分计算结果。我读到我可以使用roiroad或roirect。 直接乘坐(x1,y1-x2,y2)作为Traci协调,但是,我想使用roiroad准确地将汽车带到特定道路上。

我的问题是:如果roiroad函数采用一串道路名称,从相扑中我可以获得此值。 我应该使用Netconvert并使用--output-street-names

再次构建地图

1 个答案:

答案 0 :(得分:0)

SUMO中的边缘始终具有ID。它存储在id="..."标记的<edge>属性中。如果将网络从某些其他数据格式(例如,OpenStreetMap)转换为SUMO的XML表示,则可以选择尝试使用与边缘所代表的道路名称非常相似的ID(这是您提到的选项)。默认设置是分配数字ID。

除了在文本编辑器中打开道路网络XML文件之外,您还可以通过在SUMO GUI中打开网络并右键单击边缘(或通过在GUI中启用边缘ID的渲染)来查找边缘ID )。

请注意,根据您模拟的应用程序,您需要确保在指定的感兴趣区域(ROI)中没有“间隙”。当车辆不再在ROI中时,其相应节点将从网络模拟中移除。即使同一车辆后来进入另一个(或相同的)ROI,也会创建一个全新的节点。将边指定为ROI(通过roiRoads参数)时,这一点尤为重要。请记住,SUMO不仅使用边来表示街道,还使用边来表示穿过交叉点的车道。如果您没有指定这些内部边缘,那么您的投资回报率在每个交叉路口都会有很小的间隙。

另请注意,在OMNeT ++ 5.0之前,IDE中.ini文件的语法突出显示将(错误地)显示包含#字符的字符串,就好像它是注释一样。这只是语法突出显示的问题。模拟将按预期运行。例如,在Veins 4.4示例中将roiRoads参数设置为"-5445204#1 :252726232_7 -5445204#2",如下所示...

screenshot

...将导致静脉模拟,其中仅模拟以下三个边缘之一上的汽车:

  • 在通往下方交叉口的边缘;或
  • 在穿过下方交叉口的边缘;或
  • 在离开下方交叉口的边缘。

screenshot