OMNeT++ & SUMO 学习记录(八)SUMO 公共交通及行人出行仿真

2023-05-16

一、公共交通

1、介绍

SUMO 中大多数公共交通工具使用固定的路线,如公共汽车、有轨电车、火车等,下面将以公交车为例,介绍如何模拟此类交通工具的运行,同样的规则也适用于其它公共交通工具。

2、公交车站

公交车站是在车道边的一片区域,SUMO 中可以对公交车站的位置进行设置,并且可以预先设置公交车在车站的停靠时间,公交车站的定义参考以下格式:

<busStop id="<BUS_STOP_ID>" lane="<LANE_ID>" startPos="<STARTING_POSITION>" endPos="<ENDING_POSITION>" lines="<LINE_ID>"/>

参数设置参考下面的表格:

参数名参数功能简介
id车站的ID,必须唯一
lane车站位于的车道id
startPos车站的起始位置
endPos车站的终止位置
name车站名称,可视化显示
lines可供停靠的公交线路,多条线路名之间以空格分开

3、车辆在公交站停靠

3.1、逐辆车定义

公交车站的定义和车辆在车站停靠等信息可以直接在 *.add.xml 中编写

<additional xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://sumo.dlr.de/xsd/additional_file.xsd">
    
	<busStop id="busstop1" lane="-gneE8_1" startPos="20" endPos="30" lines="100 101 102"/>
    
	<busStop id="busstop2" lane="-gneE4_1" startPos="15" endPos="25" lines="100 101 102"/>
	
    <vType id="BUS" accel="2.6" decel="4.5" sigma="0" length="12" minGap="3" maxSpeed="70" color="1,1,0" guiShape="bus"/>

    <vehicle id="0" type="BUS" depart="0" >
        
		<route edges="-gneE8 gneE5 -gneE4"/>
        
		<stop busStop="busstop1" duration="20"/>
        <stop busStop="busstop2" duration="20"/>
        
    </vehicle>
	
</additional>

上述代码定义了两个公交车站,分别设置在不同的两条车道,车站可停靠的公交路线相同,为 100 101 102;与车流类似,也可以为公交车设置一个类别,在下面定义车辆时可以直接继承该类车辆的一些宏观参数。车辆定义中需声明车辆在哪个公交站停靠,并设置停靠时间。

将上述文件添加到 .sumo.cfg 文件中,运行仿真即可

在这里插入图片描述

3.2、以发车间隔定义车流

通常情况下,某一线路的公交车辆是以一定的时间间隔由始发站发车,因此我们可以定义出该线路的车流

    <flow id="bus" type="BUS" from = "-gneE8" to ="-gneE4"  begin="0" end="3600" period="600">
        
		<stop busStop="busstop1" duration="20"/>
        
		<stop busStop="busstop2" duration="20"/>
        
    </flow>

以上代码定义了在一个小时内,每十分钟发一辆车的公交车流。

3.3、循环路线定义

现实中的公交线路运行一般是由始发站经过一个循环路线再次回到始发站的过程。因此,为了使模拟尽可能贴近实际,首先在路网的循环线路中按合适的间距设置公交车站,然后再设置车流。

车流设置参考:

<route id="busRoute" edges="A B C D E  A B C D E  A B C D E" >
                <stop busStop="busStopA" duration="20"/>
                <stop busStop="busStopB" duration="20"/>
                <stop busStop="busStopC" duration="20"/>
                
                <stop busStop="busStopA" duration="20"/>
                <stop busStop="busStopB" duration="20"/>
                <stop busStop="busStopC" duration="20"/>
                
                <stop busStop="busStopA" duration="20"/>
                <stop busStop="busStopB" duration="20"/>
                <stop busStop="busStopC" duration="20"/>
                
                <stop busStop="busStopA" duration="20"/>
</route>
<flow id="line1" route="busRoute" line="100" type="BUS" begin="0" end="400" period="100"/>

上述代码定义了自始发站开始,每隔100s便有一辆公交车加入,共发4辆,每辆公交车沿路线循环行驶3次。

在这里插入图片描述

二、行人出行

1、介绍

在 SUMO 的路网中,某条边若有多条车道且允许多种交通模式,通常道路最右侧的车道是行人专用道 sidewalk ,当行人需要通过道路交叉口时,使用专用的过马道,即人行道,在包含步行区域的路网中,行人只能通过斑马线过马路。

2、路网中定义行人

行人可以在 *.rou.xml 中直接定义,可以指定行走的路径和出发时间等,参考如下代码:

   <person id="person1" depart="0.00" >
		<walk from="gneE7" to="-gneE5"   />
	</person>
	
	<person id="person2" depart="1.00" >
		<walk edges="-gneE4 gneE6"   />
	</person>

在这里插入图片描述

除了单个定义,也可以定义一批相同属性的人流,如下所示:

   <personFlow id="p" begin="0" end="10" period="2">
       <walk from="A" to="B"/>
   </personFlow>

上述代码定义了从 0s 开始到 10s ,每 2s 生成一个行人。

3、行人出行

路上的行人若需乘坐交通出行可通过 ride 来定义,格式如下:

<person id="foo" depart="0">
<ride from="..." to="..." lines="..." busStop="..." arrivalPos="..."/>
</person>

参数名及含义:

AttributeRemark
from起始边的id
to到达边的id
lines可搭乘的线路或可搭乘车辆的id
busStop目的地公交车站id
arrivalPos到达边的id

使用上述方法时,车辆必须是已存在的且行驶路线由车辆决定,如果停在起始边的车辆满足以下任意一点,则行人进入车辆:

  • 车辆的 line 属性和车辆的 id 在 ride 的 lines 属性列表中,或 ride 的 lines 包含 “any” 且车辆会在 ride 中的 “busStop” 停车(或者在没有 busStop 的情况下在目的地所在的边停车)。
  • 车辆有触法性停止且行人位于停止范围。
  • 车辆有定时停车,且行人在车辆位置10m内等候。

stop 定义了在下一活动开始前的时延,可被用来模拟工作、购物等活动。

基于上述的循环公交线路,可以设计一个行人搭乘公交车出行的小场景:

    <person id="person4" depart="0">
        
		<walk from="-gneE8" to="-gneE8" arrivalPos="20" />
        <ride from="-gneE8" to="-gneE4" lines="100"/>
		<walk from="-gneE4" to="-gneE4" arrivalPos="40"/>
		<stop lane="-gneE4_0" duration="20" startPos="40" />
		<walk from="-gneE4" to="gneE9" arrivalPos="10"/>
		<ride from="gneE9" to="-gneE8" lines="100"/>
		
    </person>

行人经历了以下几个过程:
步行到公交车站 - -> 搭乘线路编号为100的公交车 - -> 下车步行 - -> 中途休息 - -> 继续步行 - -> 搭乘相同路线公交车回到起始点

在这里插入图片描述

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

OMNeT++ & SUMO 学习记录(八)SUMO 公共交通及行人出行仿真 的相关文章

  • CAN数据帧结构图解分析

    CAN数据帧的数据位结构主要包括以下几个部分 xff1a 起始位 xff08 Start of Frame xff0c SOF xff09 xff1a 1位 xff0c 用于标识一个CAN数据帧的开始 xff0c 其值为低电平 xff08
  • Android NDK 为什么要 extern “C”

    由于C 43 43 函数支持重载 xff0c 就是一个C 43 43 函数 xff0c 可以有不同的参数个数和类型 xff0c 编译后函数名会变 为了避免ndk load 的C C 43 43 库的时候找不到这个函数 xff0c 索性都用
  • linux 基础命令讲解--加密解密

    加密文件 xff1a 1 MD5 echo n 34 string 34 openssl md5 加密字符串 openssl md5 in test txt 加密文件 2 BASE64 echo 34 string 34 openssl b
  • 阿里云服务器(centos)如何远程连接?

    阿里云服务器 xff08 centos xff09 远程连接也有两种方法 xff0c 一种是直接在网页上远程连接 xff1b 另外一种是在本地远程连接 下面会把两种方法都说下 第一种 xff1a 直接在网页上远程连接 首先登陆阿里云账号 x
  • 阿里云服务器(Windows)远程连接后不显示桌面是为什么?

    有些人买了阿里云服务器 xff08 Windows xff09 远程连接后的界面是下图中这样的 没有我们平时看到的界面 xff0c 所以就不知道该怎么操作 xff0c 那么该怎么解决这个问题呢 xff1f 想知道怎么解决的话就要知道为什么会
  • Ubuntu18.04安装realsense d435i SDK和ROS Wrapper以及相机标定全过程

    第一步 xff1a 安装realsense SDK 1 用源码进行安装 xff1a https github com IntelRealSense librealsense 然后将下载的源码安装包放在文件夹下面 xff0c 我把文件夹放在了
  • 基于Android的智能求职招聘APP设计与实现

  • (一)华为弹性云服务器购买与使用

    登录华为云官网 选择立即购买 选择配置并购买 根据需要进行购买 华北 北京四按需计费随机分配GPU加速型g6 4xlarge 4Ubuntu 18 04 server 64bit for GPU 40GB xff08 需要GPU的选有GPU
  • C++继承和多态核心重点知识刨析,一文必拿下

    一 继承 继承的本质是为了复用 xff0c 复用基类的数据成员和方法 封装的本质是为了对外仅仅暴露必要的使用接口 内部的具体实现细节和部分的核心接口对外是不可见的 隐藏细节 仅对外开放必要功能性接口 正是由于封装隐藏所需 所以产生了公有属性
  • DockerFile文件详细解析

    DockerFile文件详细解析 所有文章不设限 xff0c 我们相遇偶然 xff0c 相散坦然 xff0c 互不打扰 xff0c 各自安好 xff0c 向阳而生 致敬尚硅谷周阳老师 xff0c 此处内容迁移学习来自于阳哥 xff01 Do
  • Cropper的一个demo

    1 摸鱼大法第一招 Cropper Cropper 就是基于canvas做的小插件 xff0c 下面做的是一个图片裁剪 xff0c 各位看官看看就行 xff0c 有什么意见多提 A code block import Cropper fro
  • 互斥锁和信号量

    一 同步互斥概述 在多任务操作系统中 xff0c 同时运行的多个任务可能都需要访问 使用同一种资源 多个任务之间有依赖关系 xff0c 某个任务的运行依赖于另一个任务 同步和互斥就是用于解决这两个问题的 互斥 一个公共资源同一时刻只能被一个
  • shell编程、makefile学习笔记

    windows r n linux n 1 shell介绍 1 1 shell是操作系统的终端命令行 1 shell可以理解为软件系统提供给用户操作的命令行界面 xff0c 可以说它是人机交互的一种方式 2 我们可以使用shell和操作系统
  • linux系统--find命令详解以及定时查看系统文件是否被修改

    一 概述 xff1a 因为Linux下面一切皆文件 xff0c 经常需要搜索某些文件来编写 xff0c 所以对于linux来说find是一条很重要的命令 linux下面的find指令用于在目录结构中搜索文件 xff0c 并执行指定的操作 它
  • 0429 嵌入式学习笔记 (32)STL标准模板库/类的方法

    文章目录 STL 标准模板库 类的方法 STL 标准模板库 从逻辑层面看 xff0c 在STL中体现了泛型化程序设计思想 从实现层次看 xff0c 整个STL是以一种类型参数化的方式实现的 STL六大组件 1 容器 2 迭代器 3 算法 4
  • Mapreduce(Java程序编写)

    Mapreduce xff1a 分布式计算框架 开发人员要做的事情 xff1a 实现Map和Reduce函数 一般只调用HDFS的话 xff0c 不实际Yarn的工作 xff0c 调用Mapreduce时才会调用yarn 三台设备Mapre
  • 蓝桥杯嵌入式(STM32G431RBT6)入门第二天——建立自己的初始化文件|CSDN创作打卡

    接前一天 xff0c 将所有工程拷贝到建立的另外一个文件夹LED中 xff0c 在Inc文件夹中建立led h文件 xff0c 在Src文件夹中建立led c 用keil打开工程 xff0c 点击下图中的图标 xff0c 新建一个USER分
  • 如何把img格式转换成vmdk格式

    下载qemu xff0c 这里是下载好的 xff0c 也可以自行下载 链接 xff1a https pan baidu com s 1UEJupO5YyFgX8MnpywikeA 提取码 xff1a ttil 安装好后 xff0c 进入qe
  • 瀑布流插件vue-masonry

    前言 之前其实有分享过一篇纯CSS实现瀑布流的方法 https oliver blog csdn net article details 126450691 xff0c 但纯CSS实现的方案都不是比较好的方案 xff0c 总归有一些各式各样
  • 集合学习之Iterator接口

    1 Iterator接口概述 Iterator接口表示对集合进行迭代的迭代器 Iterator接口为集合而生 xff0c 专门实现集合的遍历 此接口主要有如下两个方法 xff1a hasNext 判断是否存在下一个可访问的元素 xff0c

随机推荐

  • 自协商技术

    摘要 xff1a 本文介绍了自协商的基本原理和工作模式 xff0c 以及自协商相关细节介绍 缩略语 xff1a FLP xff1a 快速连接脉冲 NLP xff1a 普通连接脉冲 CSMA CD xff1a 载波监听多路访问 冲突检测 PC
  • Armbian 笔记五_如何在 Armbian 上安装 xfce4 桌面

    目录 使用 armbian software 选择 Desktop 安装 xfce4 桌面 准备工作 正常开机 必须存在着一个普通用户 连接有线网络 下载安装设置 armbian software 201 是 Desktop 输入普通用户
  • 数据结构|队列

    队列 知识框图考点分析1 什么样的链表适合作为链队2 判空判满 常考小题 知识框图 队列相关知识点较为简单易懂 xff0c 不再叙述 xff08 注意 FIFO 特点 xff0c 框架遗漏 xff09 本文主要针对考点中的2 3点进行知识总
  • ST-LINK v2下载器简单使用

    ST LINK v2下载器简单使用过程 文章目录 ST LINK v2下载器简单使用过程前言1 驱动安装1 1 驱动安装常规步骤1 2 驱动失败解决方法 2 代码下载 amp 调试2 1 代码下载2 1 1 JTAG接法 xff1a 2 1
  • linux系统--help/man/info/whatis命令详解

    1 man命令的用法 man gt gt manual man是手册的缩写 man man 查看man命令的帮助 man passwd 查看passwd命令的帮助 man的级别 1 系统命令 2 系统接口 3 函数库 4 特殊文件 xff0
  • ESP8266 WIFI 模块和手机通信

    ESP8266 WIFI 模块通过TTL模块和手机通信 文章目录 ESP8266 WIFI 模块通过TTL模块和手机通信前言1 调试工具2 模块接线3 模块作为客户端 STA3 1 模块指令3 2 指令示例3 3 数据传输 4 模块作为服务
  • vscode安装git工具

    1 打开vscode后 xff0c 提示如图 2 点击 下载Git 3 自动跳转到git下载官网 xff0c 没跳转的直接去网页搜索也是可以进去的 4 点击下载 5 下载完之后打开安装包 xff0c 无脑下一步安装 6 重启vscode 会
  • Python入门之无参装饰器

    1 什么是装饰器 器指的是工具 装饰指的是没其他事物添加额外的东西点缀 一起的解释就是 xff1a 定义一个函数 xff0c 该函数是用来装饰其他函数添加额外的功能 2 为何要用装饰器 开放封闭原则 开放指的是扩展功能是开放的 封闭 xff
  • 数据清洗的一般方法和步骤

    在正式分析数据前 xff0c 我们通常需要先预处理一下数据 xff0c 比如筛选有效样本 xff0c 定义变量格式 xff0c 处理缺失值等 xff0c 这些操作也就是是数据清洗的过程 xff0c 目的是把数据整理成比较清洁的形式 xff0
  • 【操作系统】死锁(详细)

    文章目录 一 死锁的概念二 死锁的产生因素三 死锁的必要条件1 互斥条件2 占有和等待条件 xff08 部分分配条件 xff09 3 不剥夺条件4 循环等待条件 xff08 环路条件 xff09 四 死锁防止1 破坏互斥条件2 破坏占有和等
  • 浏览器验证码图片(缩略图)显示不出来问题解决办法

    上面是我未解决前的网页图片 xff0c 这种缩略图显示不出来很着急 尤其是验证码图片那种 xff0c 找了很多网上的方法都不管用 xff0c 最终才弄出来的 解决办法 xff1a 切换网络 我之前是用的学校的校园网 xff0c 结果如上图
  • ROS 学习笔记 坐标变换

    TF坐标变换 TF xff1a TransForm Frame xff0c 坐标变换 坐标系 xff1a ROS 中是通过坐标系统开标定物体的 xff0c 确切的将是通过右手坐标系来标定的 注 xff1a 在ROS中坐标变换最初对应的是tf
  • 51单片机之智能小车(避障、跟随、循迹)

    目录 基本概述 硬件组成 功能 关键字 模块介绍 电机模块L9110S 循迹模块 xff08 TCRT5000传感器 xff09 红外避障模块 测速模块 小车 移动小车 xff08 控制电机转动 xff0c 使小车前进 后退 左转 右转 x
  • STM32之USART

    USART USART Universal Synchronous Asynchronous Receiver Transmitter 是一个全双工通用同步 异步串行收发器 xff0c 该接口是一个高度灵活的串行通信设备 对于USART常用
  • Gvins运行结果处理,时间戳对齐并与RTK真值对比 (matalb代码)

    最近在学习Gvins xff0c 准备自己用matlab处理一下结果 以sports field数据集为例 xff0c 运行Gvins的程序后 xff0c 将Gvins的导航结果保存到CSV文件中 xff0c 得到如下图所示的数据格式 其中
  • ubuntu系统创建定时任务--crontab

    关于crontab cron是一个Linux定时执行工具 xff0c 可以在无需人工干预的情况下运行作业 在Ubuntu server 下 xff0c cron是被默认安装并启动的 通过 etc crontab文件 xff0c 可以看到以下
  • shell基本知识

    为什么学习和使用Shell编程 什么是Shell shell的起源 shell的功能 shell的分类 如何查看当前系统支持的shell xff1f 如何查看当前系统默认shell xff1f 驼峰语句 shell脚本的基本元素 shell
  • OMNeT++ & SUMO 学习记录(二) 常见错误分析

    1 仿真运行时报错 lt gt Could not connect to TraCl server error message 0 No error in module Veins TraClScenarioManagerLaunchd R
  • OMNeT++ & SUMO 学习记录(六)SUMO 路网生成及简单仿真实例

    一 SUMO 路网生成方式 1 外部导入 可以从开源地图集 openstreetmap 中下载地图生成 osm 文件 xff0c 然后通过 sumo 自带的 netconvert 程序将其转换为路网文件 net xml 2 netedit编
  • OMNeT++ & SUMO 学习记录(八)SUMO 公共交通及行人出行仿真

    一 公共交通 1 介绍 SUMO 中大多数公共交通工具使用固定的路线 xff0c 如公共汽车 有轨电车 火车等 xff0c 下面将以公交车为例 xff0c 介绍如何模拟此类交通工具的运行 xff0c 同样的规则也适用于其它公共交通工具 2