Hello Sumo-介绍
这个教程针对的是第一次使用SUMO的新手。我们建立最简单的网络并使一辆小车在上面行驶。这里提到的所有的文件可以在 <SUMO_HOME>/docs/tutorial/hello 文件夹中找到。最新的版本可能是在目录:<SUMO_HOME>/tests/complex/tutorial/hello/data/
在SUMO中,一个街道网络是由nodes(junctions)和edges(有nodes连接)。因此如果我们想建立一个两条街道的网络,我们需要3个nodes和2条edges。我们将会在Routes部分了解到,为什么最简单的网络不能只是一条边。
Nodes(节点)
所有的nodes都有一个位置(x坐标值和y坐标值,为距离原点的距离)和一个id为了以后的调用。因此,我们最简单的nodes例子看起来是:
<nodes>
<node id="1" x="-250.0" y="0.0" />
<node id="2" x="+250.0" y="0.0" />
<node id="3" x="+251.0" y="0.0" />
</nodes>
你能够通过任何文本编辑器编辑文件并保存为hello.nod.xml,其中.nod.xml是SUMO中Nodes文件的默认后缀。
Edges(边,街道)
现在我们连接nodes为edges。这个做起来很简单。我们有一个原始node ID、一个目标node ID和一个edge ID为了以后调用。每条边(dedge)都是有一定方向的,因此每辆车必须从给定的from开始,在to位置结束。
<edges>
<edge from="1" id="1to2" to="2" />
<edge from="2" id="out" to="3" />
</edges>
保存这个数据文件为hello.edg.xml。既然我们有了nodes文件和edges文件,那么我们就能调用SUMO的工具生成一个网络。确保 NETCONVERT 在环境变量中已经进行了设置,然后调用:
netconvert --node-files=hello.nod.xml --edge-files=hello.edg.xml --output-file=hello.net.xml
这样的话就会生成一个名为hello.net.xml文件。
Routes(路由)
既然我们有了net(网络),那么我们就需要一辆车。在SUMO中,车辆有定义其基本属性的类型,比如长度、加速减速、最大限速等。此外,它还需要引入一个具有随机行为的西格玛参数(sigema parameter),并且这个参数在后面模型中会用到。可以将这个参数赋值为0给一个确定的车辆。
现在我们定义一条既包含我们先前定义的两条路边的最简单路由。
最后但并非最不重要,我们定义我们的车辆根据先前的信息,并且给它一个出发时间。文件命名为hello.rou.xml。有很多的选项可以设置去定制一辆车辆和它的类型。关于车辆定制的更进一步信息请移步:Definition of Vehicles, Vehicle Types, and Routes
<routes>
<vType accel="1.0" decel="5.0" id="Car" length="2.0" maxSpeed="100.0" sigma="0.0" />
<route id="route0" edges="1to2 out"/>
<vehicle depart="1" id="veh0" route="route0" type="Car" />
</routes>
Configuration(配置)
现在我们将所有的文件整合到一起作为配置文件:
<configuration>
<input>
<net-file value="hello.net.xml"/>
<route-files value="hello.rou.xml"/>
</input>
<time>
<begin value="0"/>
<end value="10000"/>
</time>
</configuration>
保存文件为hello.sumo.cfg,然后就可以进行仿真:
sumo -c hello.sumocfg
或者GUI界面:
sumo-gui -c hello.sumocfg
当使用GUI程序时,增加一个gui-setting文件是有用的,因此,您不必在启动程序后更改设置。更改hello.sumo.cfg文件为:
<configuration>
<input>
<net-file value="hello.net.xml"/>
<route-files value="hello.rou.xml"/>
<gui-settings-file value="hello.settings.xml"/>
</input>
<time>
<begin value="0"/>
<end value="10000"/>
</time>
</configuration>
然后会生成带有viewsetting的文件:
<viewsettings>
<viewport y="0" x="250" zoom="100"/>
<delay value="100"/>
</viewsettings>
保存文件,命名为hello.settings.xml。
这里我们使用视口设置摄像机的位置,我们使用延迟去设置每一步的仿真之间的延迟为毫秒级别。
进一步阅读
更多的关于使用XML定义网络的信息可以浏览: Networks/BuildingNetworks from own XML-descriptions.当然,NETCONVERT也允许导入来源其他软件的网络数据,更多的信息可以访问:Networks/Import
更多的关于车辆定义的信息可以浏览:Definition of Vehicles, Vehicle Types, and Routes.