Sumo 搭建交叉路口交通流仿真平台

Sumo安装

注意事项:需要工具的使用需要环境变量的设置。需要包含文件Sumo安装路径下的bin和tools。

Sumo配置文件

Sumo中项目的配置文件的组成如下所示

Sumo 搭建交叉路口交通流仿真平台_第1张图片

节点文件

Sumo 搭建交叉路口交通流仿真平台_第2张图片

图 1 节点及边的拓扑图

Node的属性主要有id,x,y,type。

id 表示节点编号

x,y分别表示节点的x,y坐标

type有两种类型为priority和traffic_light,分别对应于无信号灯和有信号的路口。

上述图中节点对应的节点文件如下所示

  

  

  

  

  

  

  

  

  

  

  

  

  

  

上述路口都是没有信号灯的路口。

边文件

图1中对应的边文件如下所示

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

   

Link文件

每个link类型的信息也可以定义在后缀为.typ.xml中。列表1.2展示了在实例中用到的link type文件还有其四个参数:id, priority, numLanes, speed。其中的id的值与.edg.xml文件中的type属性值对应。numLanes对应于车道的数量。Priority对应于车道的优先级。

  

  

  

 

车道连接文件

交通状况和道路连接,一个后缀为.con.xml的文件是必须的。列表1.4展示了实例网络的响应的设置。该文件确定了车从起点道路第几个车道至终点道路的第几个车道。 每个参数的意义如下

第一行和第二行意味着Link L2的Lane 0只使用Link L12的Lane 0和1。

Sumo 搭建交叉路口交通流仿真平台_第3张图片

Sumo 搭建交叉路口交通流仿真平台_第4张图片

Sumo 搭建交叉路口交通流仿真平台_第5张图片

Sumo 搭建交叉路口交通流仿真平台_第6张图片

路网生成

SUMO的网路文件后缀为.net.xml。根据前面生成的文件quiclkstart.nod.xml,quickstart.edg.xml,quickstart.con.xml和quickstart.typ.xml,可以通过SUMO的NETCONVERT程序生成网络文件。为了有效执行,包含输入文件名、输出文件名和其他需要动作的的配置文件应该被创建。

由于生成路网需要的文件较多,也可建立一个路网的配置文件 *.netccfg,例如下,通过命令netconvert  –c  quickstart.netccfg生成路网*.net.xml文件。

 

 

 

   

       

       

       

       

   

 

   

       

   

 

   

       

   

 

   

       

   

 

 

车辆参数定义文件

交通需求、路由数据及车辆类型数据都定义在后缀为.rou.xml的文件中。

其中定义了车辆的Id,车辆的加速、减速等信息,车辆的路径。

车辆路径包含的参数如下

 (a) id: ID of a certain routeand defined by users with numbers, word strings or both.

(b) edges: The sequence of thenames of the links, composing the defined route.

车辆的总参数

(a) depart: departure time of a certain vehicle. (该车出来的时刻)

(b) id: ID of a certain vehicle and defined by users with numbers, word strings or both.

(c) route: the route used by the defined vehicle;

(d) type: ID of the defined vehicle type.

交通信号灯相位配置文件

该文件里主要包含红绿灯持续时间和每个路口对应的红绿状态

   

   

       

       

       

       

   

 

项目的配置文件

直接使用命令来运行会导致命令后面的选型列表会很长,因此需要设置一个配置文件,包含运行应用程序所有参数。

配置文件是一个XML文件,有一个名为“configuration”的根元素。选项被写为元素名称,在属性value中存储值。

举例说明,配置文件(让我们保存为“test.sumocfg”)样式如下:

 

 

   

       

       

       

   

 

   

       

   

 

   

       

       

   

 

在命令行中直接运行

sumo.exe test.sumocfg

交通信号灯

信号灯的颜色的定义

Sumo 搭建交叉路口交通流仿真平台_第7张图片

信号灯与道路的对应

Sumo 搭建交叉路口交通流仿真平台_第8张图片

 

上述图中交通信号灯的状态为“GrGr”,第一个“G”表示link 0为绿第一“r”表示link 1为红灯,link2 为绿灯,link 3为红灯。

Link的编号默认有NETCONVERT通过顺时针的方式产生,其中link 0在12点钟的方位。右转、直行、左转依次进行。

一般的十字路口的会有4个绿色的相位。加上黄灯相位则有8个相位。相位的编号是从0-7。

相位编号

traci.trafficlights.getPhase

对应红绿灯的颜色

traci.trafficlights.getRedYellowGreenState

0

GrrrGrrr

1

yrrryrrr

2

rGrrrGrr

3

ryrrryrr

4

rrGrrrGr

5

rryrrryr

6

rrrGrrrG

7

rrryrrry

 

相位的属性如下所示

https://img-blog.csdnimg.cn/20181126100608130.png

 

Matlab定义sumo中红绿灯的相位程序如下所示

//定义八个相位的持续时间,红绿灯的状态,最小持续时间,最大持续时间。     

myRYGDefinition = traci.trafficlights.Logic('0',0,0,...

          {traci.trafficlights.Phase(15,'GrrrGrrr',15,15),...

          traci.trafficlights.Phase(3,'yrrryrrr',3,3),...

          traci.trafficlights.Phase(15,'rGrrrGrr',15,15),...

          traci.trafficlights.Phase(3,'ryrrryrr',3,3),...

          traci.trafficlights.Phase(15,'rrGrrrGr',15,15),...

          traci.trafficlights.Phase(3,'rryrrryr',3,3),...

          traci.trafficlights.Phase(15,'rrrGrrrG',15,15),...

          traci.trafficlights.Phase(3,'rrryrrry',3,3)});

      //将定义的相位逻辑发送给Sumo

      traci.trafficlights.setCompleteRedYellowGreenDefinition('0',myRYGDefinition);

注:红绿灯的相位持续时间需设置为大于0的整数。

SUMO支持基于间隙的驱动交通控制。这种控制方案在德国很常见,并且只要检测到连续的交通流,就可以延长交通相位。在检测到车辆之间有足够的时间间隔后,它会切换到下一相位。这允许在相位之间更好地分配绿灯时间,并且根据动态交通状况而影响周期持续时间。

 

Sumo 仿真过程

Sumo 搭建交叉路口交通流仿真平台_第9张图片

通过命令行sumo-gui –c *.sumocfg来启动运行sumo gui界面

Sumo-gui界面

Sumo-gui的界面如下图所示。

Sumo 搭建交叉路口交通流仿真平台_第10张图片

1、在运行过程中,将delay设置为1000,单位为ms,那么仿真就是和真实时间是同步的,即每秒更新一次。

2、可以通过setProgram来切换预先在.net.xml中定义好的红绿灯配时。

 

问题及解决方法

Sumo是服务器,Matlab是客户端,通过TCP/IP进行信息交互。

 

1、运行trai4matlab软件的traci_test2案例时需要在window的命令提示符窗口运行如下命令:

如果没有运行该指令直接运行traci_test2 则会爆出缺少cross.rou.xml 的错误。

 

2、如果显示port 8813被占用的错误,

Error: tcpip::Socket::accept() Unable to create listening socket: Address already in use

Quitting (on error).

则在window的命令提示符窗口输入如下命令查看8813端口的使用情况,如果显示8813端口显示被占用,则关闭已经打开的Sumo-gui窗口,再次输入netstat命令查看端口占用情况。

 

注意事项

  1. traci4matlab并未完全实现sumo与外部交互交互的接口,仅支持部分TraCI命令。
  2. sumo与python的接口已经完全实现,建议采用python实现与sumo的交互,支持全部TraCI命令。
  3. sumo中没有排队长度(queue length)的参数。用等待时间替代(waiting time)?
  4. sumo中没有车辆的平均延误(average delay)的参数。

 

参数解释

车辆的等待时间(waitingtime) :车辆速度低于0.1m/s开始至车辆车速大于0.1m/s之间的时间。

 

参考文献

1、trai4matlab软件的user_manual

你可能感兴趣的:(智能交通)