【SUMO学习】初级 Quick Start

【SUMO学习】初级 Quick Start参考自官网教程 https sumo dlr de docs Tutorials quick start html 目录 一 Network 1 节点和边的构建 2 修改车道数 3 修改道路之间的联系 connections 4 规定道路优先级 priority 二 Demand 三 Simulation

大家好,我是讯享网,很高兴认识大家。

参考自官网教程: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博客

一、Network

1. 节点和边的构建

按照官方设定的节点信息搭建路网(参考表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

2. 修改车道数

默认构建的道路只有一条单向车道。

首先创建双向车道:选中车道->右键->edge operations->Add reverse direction for edge

然后在Inspect模式下选择指定车道,修改车道数:

3. 修改道路之间的联系(connections)

道路之间的联系可以简单的理解为一条道路支持汽车的某些行进方向(左转、右转、直行、掉头)。比如小车从道路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,如下图:

4. 规定道路优先级(priority)

priority规定的是在交叉路口上,不同车道上的车辆通行的优先级。priority数值(int)越大,优先级越高。

修改priority的方式就是在Inspect界面选择道路,然后修改其priority属性值即可。

 注意:介绍一种可以选择多个Network元素的方式——selection(如下图),它可以便捷化操作,不用一个一个元素去选择、修改。

二、Demand

直接编写配置文件完成Demand操作,具体的配置文件如下(quickstart.rou.xml):

<?xml version="1.0" encoding="UTF-8"?> <routes> <vType accel="3.0" decel="6.0" id="CarA" length="5.0" minGap="2.5" maxSpeed="50.0" sigma="0.5" /> <vType accel="2.0" decel="6.0" id="CarB" length="7.5" minGap="2.5" maxSpeed="50.0" sigma="0.5" /> <vType accel="1.0" decel="5.0" id="CarC" length="5.0" minGap="2.5" maxSpeed="40.0" sigma="0.5" /> <vType accel="1.0" decel="5.0" id="CarD" length="7.5" minGap="2.5" maxSpeed="30.0" sigma="0.5" /> <route id="route01" edges="D2 L2 L12 L10 L7 D7"/> <route id="route02" edges="D2 L2 L12 L15 L18 L5 D5"/> <route id="route03" edges="D2 L2 L12 L15 L13 L3 D3"/> <route id="route04" edges="D4 L4 L14 L18 L5 D5"/> <route id="route05" edges="D4 L4 L14 L16 L10 L7 D7"/> <route id="route06" edges="D4 L4 L14 L16 L11 L1 D1"/> <route id="route07" edges="D6 L6 L17 L13 L3 D3"/> <route id="route08" edges="D6 L6 L17 L16 L11 L1 D1"/> <route id="route09" edges="D6 L6 L17 L16 L10 L7 D7"/> <route id="route10" edges="D8 L8 L9 L11 L1 D1"/> <route id="route11" edges="D8 L8 L9 L15 L13 L3 D3"/> <route id="route12" edges="D8 L8 L9 L15 L18 L5 D5"/> <vehicle depart="54000" id="veh0" route="route01" type="CarA" color="1,0,0" /> <vehicle depart="54000" id="veh1" route="route02" type="CarA" /> <vehicle depart="54000" id="veh2" route="route03" type="CarA" /> <vehicle depart="54000" id="veh3" route="route04" type="CarA" /> <vehicle depart="54000" id="veh4" route="route05" type="CarA" /> <vehicle depart="54000" id="veh5" route="route06" type="CarA" /> <vehicle depart="54000" id="veh6" route="route07" type="CarA" /> <vehicle depart="54000" id="veh7" route="route08" type="CarA" /> <vehicle depart="54000" id="veh8" route="route09" type="CarA" /> <vehicle depart="54000" id="veh9" route="route10" type="CarA" /> <vehicle depart="54000" id="veh10" route="route11" type="CarA" /> <vehicle depart="54000" id="veh11" route="route12" type="CarA" /> <vehicle depart="54000" id="veh12" route="route01" type="CarB" color="1,0,0" /> <vehicle depart="54000" id="veh13" route="route02" type="CarB" /> <vehicle depart="54000" id="veh14" route="route03" type="CarB" /> <vehicle depart="54000" id="veh15" route="route04" type="CarB" /> <vehicle depart="54000" id="veh16" route="route05" type="CarB" /> <vehicle depart="54000" id="veh17" route="route06" type="CarB" /> <vehicle depart="54000" id="veh18" route="route07" type="CarB" /> </routes>

讯享网

该文件主要包含三部分: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

三、Simulation

直接编写配置文件,然后用sumo-gui软件打开即可。具体配置文件如下(quickstart.sumocfg):

讯享网<?xml version="1.0" encoding="iso-8859-1"?> <configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/sumoConfiguration.xsd"> <input> <net-file value="quickstart.net.xml"/> <route-files value="quickstart.rou.xml"/> </input> <time> <begin value="54000"/> <end value="54900"/> </time> <time-to-teleport value="-1"/> </configuration>

配置文件最核心的部分就是定义了需要引用的Network和Demand文件 (<input>中的内容) ,其次设定了仿真开始和结束的时间 (<time>中的内容) 。

至于<time-to-teleport>设定的是小车等待时间过长(速度一直低于0.1m/s),是否选择控制小车快速进入下一个route edge。如果value是负数,那么允许小车长时间等待的情况发生;如果value是正数,那么小车等待时间达到指定秒数就会触发teleport机制,即“传送”小车到指定位置,让小车能继续行驶而不是一味地等待。

关于<time-to-teleport>更为具体的内容可以参考官方文档:Why Vehicles are teleporting - SUMO Documentation

编辑好配置文件后,用sumo-gui运行即可,如下图:

 

小讯
上一篇 2025-02-28 12:22
下一篇 2025-01-13 14:19

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/16587.html