参考自官网教程: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运行即可,如下图:

【SUMO学习】初级 Quick Start相关推荐

  1. SUMO学习日志(一)SUMO安装

    SUMO学习(一): 在sumo官网(https://sumo.dlr.de/docs/Downloads.php)提供了windows,linux等平台的安装教程. 这里以windows为例,可以直 ...

  2. 初级计算机都学什么,电脑入门学习初级

    电脑入门学习初级 更新时间:2017/1/27 3:45:00  浏览量:637  手机版 1.打开计算机 一般来说,现在的电脑至少包括这几部分:主机,显示器.键盘.鼠标.找到您计算机上对应的部分了吗 ...

  3. Sumo学习日记 - day1 从traci开始

    Sumo学习日记 之前经常使用sumo,但是网络上相关教程较少,且并没有行成系统的教学.官方文档教育效果很棒,但是对于想学习sumo这个软件的萌新来说好像有点不友好,所以在这里开一个专题 主要介绍su ...

  4. 初级C语言怎么快速上手,看这里就够了,如何学习初级C语言

    C语言已经成为当代大学生重要的必修课之一,C语言是重要的电脑编程语言,经历了漫长的时间沉淀,到如今使用者依旧众多.其语言的特点鲜明,简单易学好上手.那么今天就带领大家如何学习初级C语言. 首先对C语言 ...

  5. 深度学习初级课程 6.二分类

    深度学习初级课程 1.单一神经元 2.深度神经网络 3.随机梯度下降法 4.过拟合和欠拟合 5.剪枝.批量标准化 6.二分类问题 应用.用TPU探测希格斯玻色子 正文 介绍 到目前为止,在本课程中,我 ...

  6. SUMO学习(二)创建路网

    SUMO学习(二): 创建路网 学习内容: netconvert转换第三方源 OSM Overpass API query page下载城市地图 OSMWebWizard.py openstreetm ...

  7. 深度学习初级课程 3.随机梯度下降法

    深度学习初级课程 1.单一神经元 2.深度神经网络 3.随机梯度下降法 4.过拟合和欠拟合 5.剪枝.批量标准化 6.二分类问题 应用.用TPU探测希格斯玻色子 正文 介绍 在前两节课中,我们学习了如 ...

  8. 【SUMO学习】初级 Hello World

    参考自官网教程:Hello World - SUMO Documentation 目录 一.创建Network文件(*.net.xml) 二.创建Route文件(*.rou.xml) 三.创建配置文件 ...

  9. 【SUMO学习】初级 OSMWebWizard

    参考自官网教程:OSMWebWizard - SUMO Documentation 目录 一.打开OSM Web Wizard ​二.调整参数 三.生成sumo-gui仿真环境 目标:使用OSM We ...

最新文章

  1. JAVscript对象
  2. NYOJ 685 查找字符串 字典树
  3. mob sdk vue 短信验证_短信接口那些事儿,你知道多少?
  4. 一霎清明雨,实现考勤管理。
  5. Verilog功能模块——AXI4-Lite协议主机-单次写-使用FIFO
  6. leetcode 241. Different Ways to Add Parentheses | 241. 为运算表达式设计优先级(Java)
  7. windows7电脑删除文件特别慢怎么回事
  8. 音视频开发(7)---流媒体服务器原理和架构解析
  9. Linux 命令(72)—— ulimit 命令(builtin)
  10. 安装oracle11g未找到文件WFMLRSVCApp.ear文件
  11. 解决 Chrome 下载不了东西 失败 - 已屏蔽 的问题
  12. 啦啦外卖UNIAPP(4.0)源码商家+骑手
  13. 解决CSDN无法复制
  14. 信息学奥赛一本通C++语言-----1064:奥运奖牌计数
  15. 2019中国智能制造十大发展趋势
  16. 【渝粤题库】国家开放大学2021春1054流通概论题目
  17. 2021年5月国产数据库排行榜:阿里系“OPA”持续攀升,华为“高斯模式”获成功...
  18. The repository ‘https://ppa.launchpadcontent.net/ubuntugis/ppa/ubuntu jammy Release‘ does not have a
  19. 融云入围「2022 云办公平台 TOP50」,进入「中国协同办公产业图谱」
  20. 【vue基础】黑马vue视频笔记(二)

热门文章

  1. Python简单爬虫——淘宝数据
  2. [Web]如何利用Boostrap框架搭建一个还可以的静态网站(三_主页)
  3. vue中nbsp;失效的解决方法
  4. 通达mysql日志在哪里_怎么查看通达OA的my sql数据库名
  5. C6678程序中的_mfence()内联函数
  6. 国防科大计算机学院夏令营
  7. 学校校车运营各项安全管理制度_学校校车安全管理制度汇编
  8. 【从零学Python】理解nn.Softmax(dim=1)(outputs) 与 torch.max(probs, 1)[1]
  9. 汉源高科工业级光纤收发器百兆1光4电钉轨式IP网络光电转换器
  10. 一文读懂恶意代码中病毒、蠕虫、木马和逻辑炸弹的区别