OMNeT++ & SUMO 学习记录(七)SUMO netedit 简单交通流仿真

本文主要介绍 SUMO 自带的可视化路网编辑工具 netedit 的使用方法,并在其基础上进行简单的交通流仿真。

一、netedit 简介

除了从外部导入 SUMO 仿真所需要的路网文件,可视化路网编辑器 netedit 也可以根据需求自行定义路网或修改已存路网的各方面的细节。相比较外部导入路网,netedit 使路网编辑更加灵活,可按需求灵活定义路网仿真场景,大大提高仿真效率。与外部导入地图相同,netedit 最终也是生成 *.net.xml 文件,并在 sumo-gui 中进行仿真。

二、使用 netedit 定义简单路网

下面定义一个简单的双向六车道十字路口:

打开 netedit.exe ,点击 File -> New Network ,新建路网,保存为 *.net.xml 格式。

点击下图所示按钮添加边和连接点
在这里插入图片描述
此时设置中心点的坐标为(0,0),其余四条边分别设置为(100,0)(0,-100)(-100,0)(0,100),此时便生成了一个四个方向道路长度均为100米的十字路口。
在这里插入图片描述
软件默认添加的边为单向边,考虑实际情况,添加反向边保证双向行驶。具体方法为:选中某条边,鼠标右击,点击 “Add reverse direction” 。

此时的边默认只有一条车道,此时可以按需求将其划分成若干车道,本例中设为三条车道:
在这里插入图片描述
下面设置车道间的连接,在仿真中体现为车辆的可行驶路径:

(源路径与目标路径的连接关系参考左下角的颜色)
在这里插入图片描述
最后为路口设置红绿灯:

在这里插入图片描述
相位状态从12点方向开始,车道从左到右,从上到下安照右转、直行、左转顺序顺时针旋转,每条路径连接均需要设置相位状态,状态由 “G、g、r、Y、u” 五个参数表示,G代表最高优先级的绿灯,g代表次优先级的绿灯,r代表红灯,Y代表黄灯,u代表红/黄相间红灯
在这里插入图片描述
至此,路网编辑完毕。

三、在路网中定义车辆

1、人工定义车辆

使用 Notepad++ 编辑车流文件(*.rou.xml),代码如下:

<?xml version="1.0" encoding="UTF-8"?>

<routes>
	
	<vType id="type1"  vClsss="taxi"  accel="2.0"  decel="3.0"  length="4" 
	  maxspeed="50"  callFollowMode="IDM" 
	  actionStepLength="1"  tau="1.4"  laneChangeModel="SL2015"/>
	
	<vehicle id="veh0"  type="type1"  depart="0"  departLane="0"  departPos="0" 
	  arrivalLane="2"  arrivalPos="max"  color="1,0,0" departSpeed="5"> 
	  <route edges="gneE3 -gneE0"/> 
	</vehicle>
	
	<vehicle id="veh1"  type="type1"  depart="0"  departLane="0"  departPos="0" 
	  arrivalLane="2"  arrivalPos="max"  color="1,0,0" departSpeed="5"> 
	  <route edges="gneE3 -gneE0"/> 
	</vehicle>
	
	<vehicle id="veh2"  type="type1"  depart="0"  departLane="0"  departPos="0" 
	  arrivalLane="2"  arrivalPos="max"  color="1,0,0" departSpeed="5"> 
	  <route edges="gneE3 -gneE0"/> 
	</vehicle>
    
    ...
</routes>
  • vType
    为车辆宏观类型定义,可定义车辆加速度、减速度、最大速度、车身长度、跟车模型、换道模型等参数,当需要定义若干辆参数相同的车辆时,可以使用该类型进行定义,使代码更简洁。
  • vehicle
    定义车辆细节,如车辆ID、出发时间、起始速度、起始车道、目标车道、行车路线、车辆颜色等。

2、flows + turns 生成交通流

除了逐辆车定义,还可以通过路径规划工具 jtrrouter ,将 *.flows.xml 文件和 *.turns.xml 文件生成 *.rou.xml 文件。

*.flows.xml 文件中描述了车流的相关信息,可以同时定义若干批参数相同的车流,代码如下:

<flowdefs>
	
	<flow id="0"  from="Edge id"  begin="0"  end="1000" 
	 number="200" arrivalPos="max"/>

</flowdefs>

上述代码定义了200辆车的交通流

*.turns.xml 文件定义了交通流的起始边和目标边,以及在路口处车流各行驶方向的比例,代码如下:

<turns xmlns:xsi="http://www.w3.org/2001/XMLSchema-insance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/turns_file.xsd">
	<interval begin="0" end="1000">
		<fromEdge id="gneE3">
			<toEdge id="-gneE1" probability=".5"/>
			<toEdge id="-gneE0" probability=".3"/>
			<toEdge id="-gneE2" probability=".2"/>
		</fromEdge>
	</interval>
</turns>

结合这两个文件,在命令行中调用 jtrrouter 生成 *.rou.xml 文件:

jtrrouter --flows=crossroad.flows.xml --turn-ratio-files=crossroad.turns.xml --net=crossroad.net.xml --output-file=crossroadflows.rou.xml  --accept-all-destinations=t
四、仿真

将路网文件和车流文件添加到 *.sumo.cfg 文件,在 sumo-gui 进行仿真,观察仿真结果即可
在这里插入图片描述

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值