参考自官网教程:https://sumo.dlr.de/docs/Tutorials/quick_start.html
目录
一、Network
1. 节点和边的构建
2. 修改车道数
3. 修改道路之间的联系(connections)
4. 规定道路优先级(priority)
二、Demand
三、Simulation
目标:自定义搭建一个交通场景(如下图所示),通过配置文件制定交通需求(Traffic Demand),最终实现仿真。
(图1.1 官方示意图)
注意:官方的示意图与实际比例尺不符,按照官方相应的配置,真实的图片如下所示:
本文按照三个部分 (Network->Demand->Simulation) 依次介绍仿真环境的搭建过程,如果有不懂的地方可以看一下本系列的第一篇文章:【SUMO学习】初级 Hello World_Desny的博客-CSDN博客
按照官方设定的节点信息搭建路网(参考表1.1),节点的创建方式如下图:
(表1.1 路网节点信息)
node name | x-coordinate | y-coordinate |
---|---|---|
91 | -1000.0 | +1000.0 |
92 | -1000.0 | 0.0 |
93 | +3000.0 | 0.0 |
94 | +3000.0 | +1000.0 |
911 | -500.0 | +1000.0 |
912 | -500.0 | 0.0 |
913 | +2500.0 | 0.0 |
914 | +2500.0 | +1000.0 |
1 | 0.0 | +1000.0 |
2 | 0.0 | 0.0 |
3 | +1000.0 | 0.0 |
4 | +2000.0 | 0.0 |
5 | +2000.0 | +1000.0 |
6 | +1000.0 | +1000.0 |
默认构建的道路只有一条单向车道。
首先创建双向车道:选中车道->右键->edge operations->Add reverse direction for edge
然后在Inspect模式下选择指定车道,修改车道数:
道路之间的联系可以简单的理解为一条道路支持汽车的某些行进方向(左转、右转、直行、掉头)。比如小车从道路A进入道路B有两种方式,①从道路A的车道0直行进入道路B的车道0;②从道路A的车道1右向并道进入道路B的车道0。这就是两条道路间的联系。
修改道路间联系的方式如下图,有些connections需要按照官方的设定进行修改,见表1.2:
(表1.2 connections信息)
edge ID from | edge ID to | fromLane | toLane |
---|---|---|---|
L2 | L12 | 0 | 0 |
L2 | L12 | 0 | 1 |
L2 | L12 | 1 | 2 |
L4 | L14 | 0 | 0 |
L4 | L14 | 1 | 1 |
L4 | L14 | 1 | 2 |
L9 | L11 | 0 | 0 |
L9 | L11 | 1 | 1 |
L9 | L11 | 1 | 2 |
L9 | L15 | 1 | 1 |
L9 | L15 | 2 | 2 |
L16 | L10 | 0 | 0 |
L16 | L10 | 1 | 1 |
L16 | L10 | 1 | 2 |
L16 | L11 | 2 | 2 |
L12 | L15 | 0 | 0 |
L12 | L15 | 1 | 1 |
L12 | L10 | 1 | 0 |
L12 | L10 | 1 | 1 |
L12 | L10 | 2 | 2 |
L14 | L16 | 1 | 1 |
L14 | L16 | 1 | 0 |
L14 | L16 | 2 | 2 |
L14 | L18 | 0 | 0 |
L14 | L18 | 1 | 1 |
L14 | L18 | 1 | 2 |
L17 | L16 | 0 | 0 |
L17 | L16 | 1 | 1 |
L17 | L16 | 1 | 2 |
L17 | L13 | 1 | 0 |
L17 | L13 | 1 | 1 |
L17 | L13 | 2 | 2 |
注意,点和边可以通过Inspect修改ID名,但是车道都是从0开始的数字,该数字编码规则是前向道路最右侧的车道为0,依次向左的车道+1,如下图:
priority规定的是在交叉路口上,不同车道上的车辆通行的优先级。priority数值(int)越大,优先级越高。
修改priority的方式就是在Inspect界面选择道路,然后修改其priority属性值即可。
注意:介绍一种可以选择多个Network元素的方式——selection(如下图),它可以便捷化操作,不用一个一个元素去选择、修改。
直接编写配置文件完成Demand操作,具体的配置文件如下(quickstart.rou.xml):
该文件主要包含三部分:vType(汽车类型)、route(路线定义)和vehicle(创建具体的汽车示例,制定具体的汽车类型和行驶路线等)
具体属性解释:
①vType:id=汽车ID名;accel=最大加速度(加速)[单位m/s^2];decel=最大加速度(减速);length=汽车长度[单位m];minGap=两车之间的最短间距;maxSpeed=最大车速[单位m/s];sigma=驾驶人技术的优劣程度,在0~1之间[好像是越大越差];color=车的颜色,使用rgb的方式呈现颜色,如"0,1,0",三个数字用逗号隔开,中间不要有空格
②route:id=路线ID名;edges=路线经过的边的ID
③vehicle:depart=出发时间;id=实例汽车的ID;route=选择的路线ID;type=选择的汽车类型ID
直接编写配置文件,然后用sumo-gui软件打开即可。具体配置文件如下(quickstart.sumocfg):
配置文件最核心的部分就是定义了需要引用的Network和Demand文件 (中的内容) ,其次设定了仿真开始和结束的时间 (
至于
关于
编辑好配置文件后,用sumo-gui运行即可,如下图: