教程——sumolympics

2023-05-16

SUMOlympics

本教程针对不同的交通模式设置了比赛(集体 100 米冲刺)。您将学习如何在 netedit 中创建特殊车道和(非常简单的)红绿灯,使用不同的车辆类别来定义车辆类型,您将为不同类型创建流程。所有文件也可以在 <SUMO_HOME>/docs/tutorial/sumolympics 目录中找到。

本教程是 PTV Group 设计的一个 VISSIM Scenario 的重构。

创造一个节点

editEdgeAttr.png

并通过按 e 进入边创建模式并单击编辑区域中的两个不同位置来创建一个新网络并添加一条边。更改为检查模式(按 i)并单击边缘的起点(在您第一次单击的位置)。现在在左侧检查器面板中标记为 pos 的文本字段中输入 0,0(见图)。对边的端点执行相同操作,将其位置设置为 1000,0。现在将您的网络保存在名称 sumolypics.net.xml 下(按 Ctrl+Shift-S)。

现在我们还有很长的路要走,这将是我们比赛的舞台。比赛的参与者将是公共汽车、有轨电车、自行车、客车和脚等交通工具。他们应该并排在不同的车道上行驶。因此,我们必须为每种模式添加通道。为此,请右键单击边缘并将鼠标悬停在上下文菜单中的“添加受限车道”上。这将向您展示创建专用车道的三种选择:Sidewalk、Bikelane 和 Buslane。为每种类型添加一个车道。

addSpecialLane.png

要创建电车,我们通过单击同一上下文菜单中的“复制车道”来添加新车道。对于那条车道,我们必须将允许的车辆类别限制为有轨电车。为此,首先取消选中工具栏中编辑模式下拉菜单右侧的“选择边缘”框(模式仍应设置为“(i)检查”)。然后单击新创建的通道和检查器面板中的“允许”按钮。这将打开一个对话框,其中包含所有可能的车辆类别的复选框。取消选中除“rail_urban”之外的所有选项,然后单击“接受”。现在编辑剩余车道的限额(目前所有车辆类别都允许)并将其保留给“乘客”类别(即乘用车)。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A1Eo6VYb-1650542598254)()]

现在让我们分割边缘为竞争对手创建一个起点:右键单击边缘的某处,然后从上下文菜单中选择“在此处分割边缘”。然后单击创建的节点(在 SUMO 术语中,这已经是一个“连接点”)。在 pos 字段中将其 x 坐标设置为 900,将其 y 坐标设置为 0,就像您在上面创建边缘时所做的那样。实际上,我们为参赛者创建了一条 100 米的跑道,并为每种竞争模式设置了 900 米的保持区域。现在再次选中复选框“选择边缘”并将两条边缘重命名为“beg”和“end”(在检查器面板中)。保存您的网络 (Ctrl-S)。

定义竞争车辆类型

作为下一步,我们定义了竞争车辆类型。打开一个名为 sumolympics.rou.xml 的新文件并插入以下车辆类型定义:

<routes>
    <vType id="pkw" length="5" maxSpeed="50" accel="2.6" decel="4.5" sigma="0.2" speedDev="0.2" vClass="passenger"/>
    <vType id="bus" length="15" maxSpeed="30" accel="1.2" decel="2.5" sigma="0.1" speedDev="0.1" vClass="bus"/>
    <vType id="tram" length="40" maxSpeed="13" accel="0.8" decel="0.5" sigma="0.1" speedDev="0.1" vClass="rail_urban"/>
    <vType id="bike" length="1.8" width="0.8" maxSpeed="7.5" accel="0.8" decel="1.5" sigma="0.5" speedDev="0.5" vClass="bicycle"/>
</routes>

有关这些定义的详细信息,请查看车辆类型属性描述。

对于每种车辆类型,我们通过在 vType 定义下方(在 元素中!)添加以下 <flow …/> 元素来安排和定位运送 100 人的车辆:

    ...
    <flow id="pkw" type="pkw" from="beg" to="end" begin="0" end="0" number="66" departPos="last"/>
    <flow id="bus" type="bus" from="beg" to="end" begin="0" end="0" number="5" departPos="last"/>
    <flow id="tram" type="tram" from="beg" to="end" begin="0" end="0" number="2" departPos="last"/>
    <flow id="bike" type="bike" from="beg" to="end" begin="0" end="0" number="100" departPos="last"/>
        ...

请注意,这假设平均车辆占用率为 1.5。[1]有关流属性含义的详细信息,请参阅流定义部分。

要开始模拟,请创建一个 SUMO 配置文件(将其命名为 sumolympics.sumocfg):

<configuration>
   <input>
       <net-file value="sumolympics.net.xml"/>
       <route-files value="sumolympics.rou.xml"/>
   </input>
   <processing>
    <lateral-resolution value="1." />
   </processing>
</configuration>

sumolympic_run1.png

在这里,我们给出处理参数横向分辨率,其值对应于以米为单位的子车道宽度,以实现骑车人利用整个车道宽度相互超车的更真实的行为(参见子车道模型和自行车模拟)。通过双击配置文件 sumolympics.sumocfg (Windows) 或从终端运行 sumo-gui -c sumolympics.sumocfg 开始模拟。将步进延迟调整为 100 ms,然后按下运行按钮 ()。

定义开始信号(红绿灯)和行人

公平完整的比赛还有两件事要做:1)所有参赛者都应该在起跑线前自由定位(骑自行车的人排成一排,尽管他们可以通过多分组来获得更好的结果密集使用整个车道宽度)2)我们希望将行人包括在比赛中。

sumolympics_TLSediting.png

首先我们用netedit在边“beg”和“end”的交界处创建一个红绿灯:按t进入红绿灯编辑模式。单击连接,然后单击左侧面板中的“创建 TLS”。下面,在标签阶段下,为第一阶段键入“rrrrr”(“r”表示红色)并将其持续时间设置为 100(秒)。这将为骑自行车的人提供足够的时间更密集地分组。对于第二阶段,输入“GGGGG”(是的,“G”代表绿色)并将其持续时间设置为 1000(即直到模拟运行结束)。现在再次运行模拟,看看自行车跑得比汽车快。看?我们都应该更频繁地使用我们的自行车!

如果您在消息窗口中注意到警告(例如“警告:tlLogic ‘gneJ2’ 中缺少黄色阶段,切换到阶段 0 时为 tl-index 0 编程’0’”),请不要担心。 SUMO 会定期检查 tls-phases 的基本一致性,如果您有相交的流,则缺少黄色阶段可能会导致崩溃。但是,这是一种特殊情况,显然我们不需要关心这一点。如果您想了解有关交通灯控制的更多信息,请参阅 TraCI-Tutorials TraCIpedCrossing 和 TraCI4Traffic_Lights 或交通灯的主要部分。

你觉得行人会慢还是快?让我们来看看。您已经可以猜到,这种方法对行人来说有点不同。这是因为它们不是车辆类(不再是),而是构成了一个自己的类,称为“人”。例如,目前还没有类似于车辆流的人流这样的元素(尽管它即将到来,请参阅#1515)。因此,我们将编写一个 python 脚本来生成一个路由文件 sumolympic_walking.rou.xml。 (请注意,在 <SUMO_HOME>/tools 文件夹中有一个名为 walkerFlow.py 的小脚本,如果您想做更复杂的事情,它会很有用。)

这是简单的脚本(将文件称为 makeSumolympicWalkers.py 之类的文件):

#!/usr/bin/python
#parameters
outfile = "sumolympicWalks.rou.xml"
startEdge = "beg"
endEdge = "end"
departTime = 0. #time of departure
departPos = -30. #position of departure
arrivalPos = 100. #position of arrival
numberTrips = 100 #number of persons walking
#generate XML
xml_string = "<routes>\n"  
for i in range(numberTrips):
    xml_string += '    <person depart="%f" id="p%d" departPos="%f" >\n' % (departTime, i, departPos)
    xml_string += '        <walk edges="%s %s" arrivalPos="%f"/>\n' % (startEdge, endEdge, arrivalPos)
    xml_string += '    </person>\n'
xml_string += "</routes>\n"
with open(outfile, "w") as f:
    f.write(xml_string)

通过双击(或从命令行使用 python makeSumolympicWalkers.py)执行脚本。如果您的计算机上没有 python,请在执行任何其他操作之前安装它! (从这里获取)我们必须将生成的路由文件 sumolympicWalks.rou.xml 包含在配置文件 sumolympic.sumocfg 中,让模拟知道它们。只需用逗号分隔即可包含多个路由文件。因此,修改我们配置的 <route-files …/>-entry 看起来像这样(确保文件名之间没有空格!):

  ...
    <route-files value="sumolympics.rou.xml,sumolympicWalks.rou.xml"/>
  ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

教程——sumolympics 的相关文章

随机推荐

  • PotPlayer:不支持S/W HEVC(H265)解码 的解决办法

    PotPlayer xff1a 不支持S W HEVC H265 解码 当下载了几十G的4K蓝光原版电影后 xff0c 播放时出现如下提示 xff1a 解决办法 xff1a 地址 xff1a https github com Nevcair
  • win10时间同步一直失败的解决办法

    安装了win10和Linux双系统后 xff0c 有时切换回win10系统会出现时间错乱的情况 右键右下角的时间打开调整日期 时间后 xff0c 点击立即同步 xff0c 可能会显示时间同步失败 这是因为默认的同步时间服务器连接不上 xff
  • win10更新后任务栏卡死 的原因和解决办法

    文章目录 现象 xff1a 原因 xff1a 第一步 xff1a 断网并关闭资讯和兴趣第二步 xff1a 卸载更新第三步 xff1a 关闭win10自动更新第四步 xff1a 永久关闭资讯和兴趣 现象 xff1a win10 更新后 xff
  • 30 秒速成好莱坞黑客 -- 在 Linux 终端中伪造好莱坞黑客屏幕

    这是一个假好莱坞黑客的视频 xff1a 视频效果 xff1a https www douyin com video 7053016921830116623 简介 xff1a 这个小工具将 Linux 终端变成好莱坞风格的实时黑客场景 该工具
  • linux/mm/memory.c/try_to_share()

    try to share checks the page at address 34 address 34 in the task 34 p 34 to see if it exists and if it is clean If so s
  • 通过 Telnet 在 Linux 终端中观看ASCII 星球大战

    打开终端并使用以下命令安装 telnet xff1a span class token function sudo span span class token function apt span span class token funct
  • 追逐鼠标光标的好奇小猫咪

    Oneko 是一个有趣的命令 xff0c 它将常规光标变成鼠标 xff0c 并创建一只好奇的小猫 xff0c 一旦移动光标 xff0c 小猫就会追逐它 它不仅限于终端 当猫追逐光标时 xff0c 还可以继续工作 使用以下命令安装 Oneko
  • Linux 中的旧扣簧键盘(Bucklespring 键盘)声音

    Ubuntu 可以使用 Snap 轻松安装它 运行以下命令 xff1a span class token function sudo span snap span class token function install span buck
  • PDF已加密,可以打开但是不能编辑不允许打印的解决办法

    文章目录 文档打开口令和许可口令解除加密方法一 FreeMyPdf xff1a http freemypdf com http freemypdf com 方法二 绿色小软件 xff1a PDF Password Remover 文档打开口
  • 如何在 Ubuntu 和其他 Linux 发行版中查看 MAC 地址

    文章目录 使用命令行查找MAC地址获取蓝牙的MAC地址 使用 GUI 获取 MAC 地址 在学习网络或对其进行故障排除时 xff0c 需要知道 MAC 地址 一台计算机可以有多个 MAC 地址 因为MAC地址是联网的核心部分 xff0c 每
  • 卸载流氓透明APP,帮老人清理手机弹窗广告

    症状 xff1a 只要解锁手机 xff0c 就时不时弹出广告视频 xff0c 声音还开到最大 xff0c 无法关闭 尤其是 xff0c 每点开一个app xff0c 都会弹出广告视频 xff0c 接打电话也不例外 xff0c 导致无法正常通
  • 无法翻译此网页的解决办法 - GoogleTranslateIpCheck

    2022年9月末 xff0c 网页翻译工具谷歌翻译停止了中国区服务 GitHub 地址 xff1a https github com Ponderfly GoogleTranslateIpCheck 我用的是win10系统 xff0c 所以
  • 树莓派4B(aarch64,arm64)bullseye安装Qt5、GStreamer

    简介 本文描述树莓派 4B Raspberry Pi OS xff08 64位 xff09 完成启动后 xff0c 进行的第一个编译安装任务 xff1a Qt5 43 GStreamer xff0c 同时也是OpenCV编译安装前的准备工作
  • 51单片机:蜂鸣器

    小白向单片机笔记二 xff1a 蜂鸣器 前言一 蜂鸣器原理二 蜂鸣器原理图1 蜂鸣器代码2 代码解释1 为什么蜂鸣器响 xff0c 和LED6闪烁中有两个delay 函数 xff1f 2 为什么BEEP 61 1是关闭LED6 而i 61
  • 多目标跟踪算法中之图匹配——匈牙利算法和KM算法详解

    目录 一 匈牙利算法1 算法背景及思想2 最大匹配3 最优匹配 完美匹配4 增广路径5 代码实现6 匈牙利算法总结6 1 深度优先6 2 广度优先 二 KM算法思想及局限性代码示例1 定义KM方法类2 定义权重数值 xff0c 执行主函数
  • linux/mm/memory.c/int share_page(unsigned long address)

    share page tries to find a process that could share a page with the current one Address is the address of the wanted pag
  • sumo教程 Hello World

    sumo教程 Hello World 注意事项 确保安装的sumo版本至少为1 4 0 以便能够使用本教程中显示的所有功能 要求 sumo gui和netedit的版本大于等于1 4 0 介绍 这个教程服务于第一次使用sumo的人员 我们准
  • 教程——OSMWebWizard

    教程 OSMWebWizard 有关事宜 osm web wizard提供一种最简单的方式开始sumo 基于一种openstreetmap的摘抄 你可以配置随机流量需求和可视化一种场景在sumo gui 这个教程可以指导你一步步从选择地图类
  • sumo-绕圈行驶

    绕圈行驶 在本教程中 xff0c 我们将使用 netedit 构建一个简单的圆形网络 xff0c 并使用重路由器使车辆绕圈行驶 所有定义文件都可以在 lt SUMO HOME gt docs tutorial circles 目录中找到 本
  • 教程——sumolympics

    SUMOlympics 本教程针对不同的交通模式设置了比赛 xff08 集体 100 米冲刺 xff09 您将学习如何在 netedit 中创建特殊车道和 xff08 非常简单的 xff09 红绿灯 xff0c 使用不同的车辆类别来定义车辆