1.基本路网的构建(十字路口)
在下载完成sumo后,bin目录下有一个可以运行的nete.exe,点击可以进入界面进行路网的编辑,编辑生成.net.xml文件。点击进去后,点击File->New Network就能开始建立自己的路网了。截图如下:
![](https://img-blog.csdnimg.cn/3eb612001c7641c48a7694252fff313d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
1.1构建十字路口
在这里介绍的时候,介绍如何建立一个十字路口。刚进入的界面会有一个红色的小圆圈,用来定义结点的。在连接完四个节点后如下所示;
![](https://img-blog.csdnimg.cn/2ff0ce0e1acf4553870154f3baa5f9ab.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
然后在菜单栏点击如下按钮,就可以保存并进入下一步的编辑:
![](https://img-blog.csdnimg.cn/bd7f72720a844bbc838e26f6ca64639a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
为了规范一点,点击结点(即红色的区域) 可以在pos这个位置设置点的坐标,如下图:
![](https://img-blog.csdnimg.cn/740d51afc35e402cab529052b1d136ac.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_13,color_FFFFFF,t_70,g_se,x_16)
这里将五个点的坐标分别设置为(0,0)(0,100)(100,0)(-100,0)(0,-100).效果如下所示:
![](https://img-blog.csdnimg.cn/0af131369e0246738d7963ebf41840b1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
基本框架建立以后,选中某一条边点击右键,可以进行变得操作。由于道路有两个方向,这里选择对每条边添加相反的边。操作步骤如下:
1.2 添加相反的边(双向车道)
选中某条边点击右键->edge operations->add reverse diection for edge就能添加出相反的边。重复四次以后的效果图如下:
![](https://img-blog.csdnimg.cn/2583068b73494e29a928a448aa5ee237.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
1.3添加车道(双向六车道)
完成上述绘制以后,可以看到一个基本的十字路口,通过对单条车道的编辑,可以进行车道的扩展。编辑方法如下:选中某条车道以后,在左边的参数栏中间numLanes改为3即可得到3条车道。现在对每条车道的numLanes均改为3就可得到双向六车道的道路。效果图如下:
![](https://img-blog.csdnimg.cn/c202388eca0a4f0db909e0b9613d0ac0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
(如果还行针对某一条车道进行参数设置,可以在edit->clicking should select edges or lanes中取消这一项,选中要修改的车道即可在左边的参数栏中进行参数修改)
1.4车道通行设置
接下来进行车道通行的设置,比如限制某条车道不可右转。
在任务栏中点击如下图所示按钮,可进行车道直接的连接设置:
![](https://img-blog.csdnimg.cn/a6dbfe6e0eff4827b469c7c2bffdaaea.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
点击完成后的效果图如下:
![](https://img-blog.csdnimg.cn/ff3fec8c561248969bb5f82945f8838c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
车道上的箭头指示了车道接下来可以行驶的路线。以南北方向第六条车道为例,选中以后可得到如下的效果:
左侧任务栏![](https://img-blog.csdnimg.cn/1fff551fc6f14be59c55fc8252346e9c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_12,color_FFFFFF,t_70,g_se,x_16)
可以看到,该车道目前可以右转可以直行可以左转。为了限制右转,可以点击东西方向第六条车道,点击以后就能变成墨绿色,然后点击参数栏的ok即可。设置完成后的效果图如下:
![](https://img-blog.csdnimg.cn/85ba8d1a12a5476181f5d2ca0af517bd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
针对黄色的限制行驶车道,如果要强行改成可以形式,则按住Ctrl键再点击即可。
1.5红绿灯及通行设置
设置完基本的十字路口后,还缺少红绿灯的设置。设置红绿灯点击任务栏的如下按钮:
然后点击十字路口的中心(即红色区域),再点击参数栏的Create即可。效果如下:
在参数栏中,可以看见红绿灯的相位:
,选中某一条线(以南北方向第一车道,绿色的为例)点击右键可以看见其状态(J0_0就代表了第一个G)。可以删除相位也可以添加相位,如果要编辑,只需要跟上面一样的操作,然后改变其颜色就能改变该车道的通行状况。
例如,不允许由南向北的车辆左转,用上面的方法就能得到如下的效果图:
![](https://img-blog.csdnimg.cn/ce34869ace624eb08946edf9d070e928.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
设置完成后点击左侧参数栏的Save,至此基本的十字路口设置完成。
按住Ctrl+S就能保存设置好的路网,文件后缀为.net.xml。保存后可以通过上一篇文章介绍的方法打开路网进行查看。
在sumo-gui.exe中打开路网的效果如下图:
![](https://img-blog.csdnimg.cn/d6115b7a855b4a32b671a73100421d7e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
可以看到刚才的设置效果:由南向北的车辆禁止左转。
2.对路网进行交通模拟
在基本的十字路口编辑完成以后,进行简单的道路模拟。
模拟出一辆车从某一条边(即道路)运动到另一条边需要知道在路网中边的编号。下面模拟的是一辆车由东向西运动然后右转进入由北向南运动。
此时需要知道进过的边的编号,在netedit中,点击边即可在左侧的参数栏中查看编号,我模拟的两条编号分别是E1和E0。
![](https://img-blog.csdnimg.cn/73994a92979645abb3df3263dd96d923.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
然后开始编写车流文件.rou.xml。这里命名为cross_road_2.rou.xml键入如下代码:
<routes>
<vType id="myType" vClass="taxi" accel="0.8" decel="4.5" sigma="0.5" length="5" maxSpeed="50" callFollowMode="IDM"
actionStepLength="1" tau="1.4" laneChangeModel="SL2015"/>
<vehicle id="00" tpye="myType" depart="2" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
depardSpeed="20"> <route edges="E1 E0"/> </vehicle>
</routes>
在代码段中,<vType>部分是车辆的一下参数,包括加速度、初速度等;<vehicle>部分就是定义的第一辆小车,id为“00”,depart表示进入的时间 departLane表示进入的车道等等。<route edges >定义的就是车辆行走的路线,前面以及得到了车辆走过边的编号。如果需要模拟多辆汽车,只要复制<vehicle>部分即可,id不能相同,depart即进入的时间只能往上增加。
在完成车辆的路由文件以后,还需要完成.sumocfg文件的编写。这里将其命名为cross_road_2.sumocfg。在文件中键入一下代码:
<configuration>
<input>
<net-file value="cross_road_2.net.xml"/>
<route-files value="cross_road_2.rou.xml"/>
</input>
<time>
<begin value="0"/>
<end value="10000"/>
</time>
</configuration>
代码中 道路文件cross_road_2.net.xml和车辆路由文件cross_road_2.rou.xml需要根据读者实际情况进行修改。<time>部分定义了仿真开始和结束的时间。
在都编写完成以后,按照上一篇文章介绍的方法就能完成仿真。仿真的效果图如下所示:
1.小车进入并正常形式:
![](https://img-blog.csdnimg.cn/86997022ad0f4a07a2cfe54a88df6029.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
2.走到十字路口等待红绿灯:
![](https://img-blog.csdnimg.cn/8f94e81143b646c7922dcb816d8b5a9e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
3.完成转弯继续正常形式:
![](https://img-blog.csdnimg.cn/b7a81a9ab7f742adaea0e90bb879d4dd.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
为了模拟多台车辆的运动效果,修改cross_road_2.rou.xml代码后如下所示: (其它代码不变)
<routes>
<vType id="myType" vClass="taxi" accel="0.8" decel="4.5" sigma="0.5" length="5" maxSpeed="50" callFollowMode="IDM"
actionStepLength="1" tau="1.4" laneChangeModel="SL2015"/>
<vehicle id="00" tpye="myType" depart="2" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
depardSpeed="20"> <route edges="E1 E0"/> </vehicle>
<vehicle id="01" tpye="myType" depart="3" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
depardSpeed="20"> <route edges="E1 -E2"/> </vehicle>
<vehicle id="02" tpye="myType" depart="4" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
depardSpeed="20"> <route edges="E2 E0"/> </vehicle>
<vehicle id="03" tpye="myType" depart="5" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
depardSpeed="20"> <route edges="E3 -E2"/> </vehicle>
<vehicle id="04" tpye="myType" depart="6" departLane="1" departPos="0" arrivalLane="0" arrivalPos="max" color="1,0,0"
depardSpeed="20"> <route edges="-E0 -E3"/> </vehicle>
</routes>
效果图如下:
![](https://img-blog.csdnimg.cn/6654ec71a2f342c399268165edbc514b.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5piTLQ==,size_20,color_FFFFFF,t_70,g_se,x_16)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)