注意事项:需要工具的使用需要环境变量的设置。需要包含文件Sumo安装路径下的bin和tools。
Sumo中项目的配置文件的组成如下所示
图 1 节点及边的拓扑图
Node的属性主要有id,x,y,type。
id 表示节点编号
x,y分别表示节点的x,y坐标
type有两种类型为priority和traffic_light,分别对应于无信号灯和有信号的路口。
上述图中节点对应的节点文件如下所示
上述路口都是没有信号灯的路口。
图1中对应的边文件如下所示
每个link类型的信息也可以定义在后缀为.typ.xml中。列表1.2展示了在实例中用到的link type文件还有其四个参数:id, priority, numLanes, speed。其中的id的值与.edg.xml文件中的type属性值对应。numLanes对应于车道的数量。Priority对应于车道的优先级。
交通状况和道路连接,一个后缀为.con.xml的文件是必须的。列表1.4展示了实例网络的响应的设置。该文件确定了车从起点道路第几个车道至终点道路的第几个车道。 每个参数的意义如下
第一行
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
信号灯的颜色的定义
信号灯与道路的对应
上述图中交通信号灯的状态为“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 |
相位的属性如下所示
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-gui –c *.sumocfg来启动运行sumo gui界面
Sumo-gui的界面如下图所示。
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命令查看端口占用情况。
车辆的等待时间(waitingtime) :车辆速度低于0.1m/s开始至车辆车速大于0.1m/s之间的时间。
1、trai4matlab软件的user_manual