SUMO仿真快速入门系列二:使用XML生成自定义地图

上图是一个简单的道路模型,在SUMO 中街道模型采用结点(Nodes)和线段(Edges)进行描述,例如一条街道至少需要两个结点和一条线段描述。这个道路模型比较简单,具体步骤如下:

一、编写nodes文件:

XML Schema Definitions: http://sumo.sourceforge.net/xsd/nodes_file.xsd

其中id 是结点的标识号码,用于后面的程序调用使用,x和y都是坐标,其数值单位为m,描述了这些结点距离参考原点的距离。具体可以查看XML Schema Definitions里的内容。


ex_NODE.nod.xml

<nodes> 
<node id="node1" x="100.0" y="100.0" type="traffic_light"/> 
<node id="node2" x="400.0" y="100.0" type="priority"/> 
<node id="node3" x="700.0" y="100.0" type="traffic_light"/> 
<node id="node4" x="100.0" y="300.0" type="traffic_light"/> 
<node id="node5" x="400.0" y="300.0" type="traffic_light"/> 
<node id="node6" x="700.0" y="300.0" type="traffic_light"/> 
<node id="node7" x="100.0" y="600.0" type="traffic_light"/> 
<node id="node8" x="400.0" y="600.0" type="traffic_light"/> 
<node id="node9" x="700.0" y="600.0" type="traffic_light"/> 
<node id="node10" x="100.0" y="800.0" type="traffic_light"/> 
<node id="node11" x="400.0" y="800.0" type="traffic_light"/> 
<node id="node12" x="700.0" y="800.0" type="priority"/> 
</nodes> 

二、编写edges文件:

XML Schema Definitions:http://sumo.sourceforge.net/xsd/edges_file.xsd


具体可以看XML Schema Definitions里的内容。注意Nolanes属性名称已改为numLanes。

ex_EDGE.edg.xml

<edges> 
<edge id="edgeR-0-0" from="node1" to="node2" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeR-0-1" from="node2" to="node3" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeL-0-0" from="node2" to="node1" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeL-0-1" from="node3" to="node2" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeU-0-0" from="node1" to="node4" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeD-0-0" from="node4" to="node1" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeU-0-1" from="node2" to="node5" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeD-0-1" from="node5" to="node2" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeU-0-2" from="node3" to="node6" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeD-0-2" from="node6" to="node3" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeR-1-0" from="node4" to="node5" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeR-1-1" from="node5" to="node6" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeL-1-0" from="node5" to="node4" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeL-1-1" from="node6" to="node5" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeU-1-0" from="node4" to="node7" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeD-1-0" from="node7" to="node4" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeU-1-1" from="node5" to="node8" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeD-1-1" from="node8" to="node5" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeU-1-2" from="node6" to="node9" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeD-1-2" from="node9" to="node6" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeR-2-0" from="node7" to="node8" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeR-2-1" from="node8" to="node9" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeL-2-0" from="node8" to="node7" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeL-2-1" from="node9" to="node8" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeU-2-0" from="node7" to="node10" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeD-2-0" from="node10" to="node7" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeU-2-1" from="node8" to="node11" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeD-2-1" from="node11" to="node8" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeU-2-2" from="node9" to="node12" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeD-2-2" from="node12" to="node9" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeR-3-0" from="node10" to="node11" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeR-3-1" from="node11" to="node12" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeL-3-0" from="node11" to="node10" priority="75" 
numLanes="2" speed="40" /> 
<edge id="edgeL-3-1" from="node12" to="node11" priority="75" 
numLanes="2" speed="40" /> 
</edges>

三、用nodes和edges文件生成自定义的地图

netconvert --node-files=ex_NODE.nod.xml --edge-files=ex_EDGE.edg.xml --output-file=MySUMONet.net.xml

这样就生成了MySUMONet.net.xml的地图文件,文件较大,这里就不贴出来了。

四、在sumo-gui下查看自定义的地图

在terminal中输入sumo-gui,File->Open Network


路口细节:



至此,简单的自定义地图就实现了。


原创文章,转载请注明!

评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值