omnet++,veins,sumo使用多应用层实现车辆和行人的模拟

2023-05-16

1、完成网络的搭建:

搭建一个简单的十字路口场景:

1)定义结点:新建intersection.node.xml,内容如下:

NOTE1:结点属性type="traffic_light" 意味着车辆和行人在此遵守信号灯指引,而type="unregulated"意味着车辆和行人在此不改变运动状态,即可能出现碰撞。

<nodes>
	<node id="node1" x="600" y="0" type="priority"/>
	<node id="node2" x="0" y="600" type="priority"/>
	<node id="node3" x="600" y="600" type="traffic_light"/>
	<node id="node4" x="1200" y="600" type="priority"/>
	<node id="node5" x="600" y="1200" type="priority"/>
	
	<node id="node8" x="300" y="300" type="priority"/>
	<node id="node9" x="300" y="600" type="unregulated"/>
	<node id="node10" x="300" y="900" type="priority"/>
</nodes>

2) 定义边:新建intersection.edge.xml,内容如下:

NOTE2:修改edge的车道lane,index="0"为最右侧车道,添加属性allow="pedestrian" 或者 添加edge属性:sidewalkWidth="1" 自动添加一个allow="pedestrian"的lane,宽度等于1。

<edges>
	<edge id="1to3" from="node1" to="node3" priority="4" numLanes="3" speed="15">
		<lane index="0" allow="pedestrian"/>
	</edge>
	<edge id="3to1" from="node3" to="node1" priority="4" numLanes="3" speed="15">
		<lane index="0" allow="pedestrian"/>
	</edge>
	<edge id="2to9" from="node2" to="node9" priority="4" numLanes="3" speed="15">
		<lane index="0" allow="pedestrian"/>
	</edge>
	<edge id="9to2" from="node9" to="node2" priority="4" numLanes="3" speed="15">
		<lane index="0" allow="pedestrian"/>
	</edge>
	<edge id="9to3" from="node9" to="node3" priority="4" numLanes="3" speed="15">
		<lane index="0" allow="pedestrian"/>
	</edge>
	<edge id="3to9" from="node3" to="node9" priority="4" numLanes="3" speed="15">
		<lane index="0" allow="pedestrian"/>
	</edge>
	<edge id="4to3" from="node4" to="node3" priority="4" numLanes="3" speed="15">
		<lane index="0" allow="pedestrian"/>
	</edge>
	<edge id="3to4" from="node3" to="node4" priority="4" numLanes="3" speed="15">
		<lane index="0" allow="pedestrian"/>
	</edge>
	<edge id="5to3" from="node5" to="node3" priority="4" numLanes="3" speed="15">
		<lane index="0" allow="pedestrian"/>
	</edge>
	<edge id="3to5" from="node3" to="node5" priority="4" numLanes="3" speed="15">
		<lane index="0" allow="pedestrian"/>
	</edge>
		
	<edge id="8to9" from="node8" to="node9" priority="4" numLanes="1" speed="15">
	</edge>
	<edge id="9to8" from="node9" to="node8" priority="4" numLanes="1" speed="15">
	</edge>
	<edge id="9to10" from="node9" to="node10" priority="4" numLanes="1" speed="15">
	</edge>
	<edge id="10to9" from="node10" to="node9" priority="4" numLanes="1" speed="15">
	</edge>
</edges>

3)在路口添加人行道:新建intersection.con.xml,内容如下:

NOTE3:node为设置人行道的结点,edge表示人行道横跨的道路。
NOTE4:在结点上添加crossing,结点必须与将要设置人行道的路段有连接。

<connections>
<crossing node="node3" edges="1to3 3to1" priority="true"/>
<crossing node="node3" edges="9to3 3to9" priority="true"/>
<crossing node="node3" edges="4to3 3to4" priority="true"/>
<crossing node="node3" edges="5to3 3to5" priority="true"/>
</connections>

3)生成网络:

 打开sumo文件夹中的\bin\start-command-line.bat,使用指令:

netconvert --node-files=intersection.node.xml --edge-files=intersection.edge.xml --connection-files=intersection.con.xml --output-file=intersection.net.xml

生成intersection.net.xml文件。

 2、在路网中加入车流和人流:

1)新建intersection.rou.xml,内容如下:

NOTE5:这里都是定义的vType,到veins中再指定相应的模块。

<?xml version="1.0" encoding="UTF-8"?>
<routes>
	<route id="route0" edges="2to9 9to3 3to4"/>
	<route id="route1" edges="4to3 3to9 9to2"/>
	<route id="route2" edges="1to3 3to5"/>
	<route id="route3" edges="5to3 3to1"/>
	<route id="route4" edges="8to9 9to3 3to5"/>
	<route id="route5" edges="10to9 9to8"/>
   
	<vType id="vtype0" accel="2.6" decel="4.5" sigma="0.5" length="4" width = "2" minGap="2.5" maxSpeed="14" color="1,1,0"/>
	<vType id="vtype1" accel="2.6" decel="4.5" sigma="0.5" length="0.21" width = "0.48" minGap="2.5" maxSpeed="1.39" color="0,1,1"/>
	
	<flow id="flow0" type="vtype0" route="route0" begin="0" period="3" number="10"/>	
	<flow id="flow1" type="vtype0" route="route1" begin="0" period="3" number="10"/>	
	<flow id="flow2" type="vtype0" route="route2" begin="0" period="3" number="10"/>	
	<flow id="flow3" type="vtype0" route="route3" begin="0" period="3" number="10"/>
		
	<flow id="flow4" type="vtype1" route="route4" begin="0" period="3" number="10" departPos="250"/>
	<flow id="flow5" type="vtype1" route="route5" begin="0" period="3" number="10" departPos="240"/>	
</routes>

 2)新建intersection.sumo.cfg,内容如下:

<configuration>
    <input>
      <net-file value="D:/sumo/abcBeaconRateAdapt/intersection.net.xml"/>
      <route-files value="D:/sumo/abcBeaconRateAdapt/intersection.rou.xml"/>
    </input>
   
    <time>
      <begin value="0"/>
      <end value="1000"/>
      <step-length value="0.1"/>
    </time>
	
    <reports>
       <print-options value="false"/>
    </reports>
    
    <gui_only>
        <start value="true"/>
    </gui_only>
</configuration>

 3)验证网络和车流:

打开sumo\bin\sumo-gui.exe模拟车流,正确则进行下一步:

3、在Veins中模拟

1)导入文件:

复制intersection.net.xml、intersection.rou.xml、intersection.sumo.cfg三个文件放入omnetpp中veins项目下相应位置,新建intersection.launchd.xml,内容如下:

<?xml version="1.0"?>
<!-- debug config -->
<launch>
	<copy file="intersection.net.xml" />
	<copy file="intersection.rou.xml" />
	<copy file="intersection.sumo.cfg" type="config" />
</launch>

修改omnetpp.ini文件中的配置来更改配置文件:

*.manager.launchConfig = xmldoc("intersection.launchd.xml") 

 如果在导入文件后运行出现如下错误:

注释.ini文件中的:

*.obstacles.obstacles = xmldoc("config.xml", "//AnalogueModel[@type='SimpleObstacleShadowing']/obstacles")

如果还出错,备注config.xml中的:

2)指定行人和车的不同模块 :

在omnetpp.ini文件中添加配置为人和车分配不同的模块类型、模块名和显示的图片(在images\veins\node中)。为了方(tou)便(lan),这里Human模块和node模块一样,改了个名字。

NOTE6:这里的两个vtype对应intersection.rou.xml中的两个vtype。

*.manager.moduleType = "vtype0=org.car2x.veins.nodes.Car vtype1=org.car2x.veins.nodes.Human"
*.manager.moduleName = "vtype0=node vtype1=human"
*.manager.moduleDisplayString = "vtype0='i=veins/node/car;is=vs' vtype1='i=veins/node/pedestrian;is=vs'"

3)添加人模块的配置(所有node配置先给human来一份):

这里应用层用了"MyVeinsApp",这个类是vines自带的,继承自BaseWaveApplLayer,比较空,很适合用来自己定义应用层。当然,如果给Human模块定义不一样的应用层,也可以继承BaseWaveApplLayer,方法是一样的。如果两个模块的结构不一样,其中可有一些难搞的地方,可能以后会再说。

*.human[*].applType = "MyVeinsApp"
*.human[*].appl.headerLength = 80 bit
*.human[*].appl.sendBeacons = false
*.human[*].appl.dataOnSch = false
*.human[*].appl.beaconInterval = 1s

*.human[*].veinsmobilityType.debug = true
*.human[*].veinsmobility.x = 0
*.human[*].veinsmobility.y = 0
*.human[*].veinsmobility.z = 1.895
*.human[*0].veinsmobility.accidentCount = 0
*.human[*0].veinsmobility.accidentStart = 75s
*.human[*0].veinsmobility.accidentDuration = 50s

*.human[*].appl.dataOnSch = true

 运行Veins:

当人和车相撞时,可能出错,因为在定义结点时,左边的十字路口定义为了无规则,如果不需要碰撞也定义成"traffic_light"就行了。在sumo中模拟时,相撞的车辆会被从场景中移除:

以上即本次全部内容,感谢看到最后,希望对你有帮助。

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

omnet++,veins,sumo使用多应用层实现车辆和行人的模拟 的相关文章

  • SUMO文档016:XML文件验证

    XMLValidation xff08 XML验证 xff09 1 XML输入的验证 所有的SUMO应用程序都支持对输入的XML验证 为了实现功能 xff0c 以下的选项可以使用 xff1a Option Description X lt
  • SUMO文档:有关需求建模(Demand Modelling)

    Demand Introduction to demand modelling in SUMO 在生成了路网后 xff0c 我们可以在sumo gui上查看 xff0c 但是路网上并没有车辆运行 我们还需要一些有关车辆的描述 我们称之为 交
  • sumo仿真软件拒绝访问_Prescan和sumo的联合仿真操作说明

    本篇内容主要是介绍Prescan和Sumo的联合仿真方式 xff0c 以期让客户可以掌握sumo和prescan联合的方式 01 Sumo简介 Sumo是比较目前比较常见也是开源的交通流仿真软件 他是一个微观的 xff0c 空间上连续 xf
  • sumo学习——sumo的路网介绍

    2 sumo路网 这里的记录的内容 xff0c 并不以如何绘制或者如何建立一个路网体系为主 xff0c 而是较为详细的介绍 xff0c 在sumo中是如何定义路网格式的 这里所有的内容都是来自于sumo的软件说明翻译 xff0c 其中部分夹
  • SUMO 使用netconvert报错解决办法

    SUMO 使用netconvert报错 问题描述正确解决方法不适用的解决方法 问题描述 刚开始学习使用sumo xff0c 版本是sumo1 8 0 第一次使用netconvert转换地图时出现报错 xff0c 提示没有PROJ Libra
  • 仿真平台sumo:随机生成车流的randomTrips.py的较便捷使用方法(新手用)

    Step1 xff1a 首先把需要的地图文件 xff08 net xml xff09 放入自己认为方便操作的文件夹中 此处我的地图文件为demo net 我将其放在一个桌面新建的文件夹里 xff0c 该文件夹叫sumo random 图1
  • sumo交通流仿真软件的使用说明

    1 安装流程 xff1a 1 xff09 mis文件安装 xff1a 官网下载下来一键安装 xff1b 2 xff09 tar利用压缩安装 xff1a 官网下载安装包 xff0c 解压后 xff0c 在系统变量变量中定义sumo的路径和bi
  • [sumo]路网建立方法

    在sumo 中友两种创建路网的方法 xff0c 可以将路网理解为地图 xff0c 这里采用编写脚本文件的方式创建 一 xff0c 创建节点脚本 节点就是道图的拐点 xff0c 十字路口等其他一些路径变化的结点 下面以口字型环路为例介绍 xf
  • osmWebWizard.py: error: typemap file “E:\SUMO\tools\data\typemap\osmPolyconvert.typ.xml“ not found

    在使用sumo的时候 xff0c 根据官方文档 xff08 OSMWebWizard SUMO Documentation dlr de xff09 显示 xff0c 在tools目录下使用python osmWebWizard py 来生
  • SUMO学习

    SUMO学习 SUMO简介1 车道模型2 跟驰模型跟驰模型CACC 3 变道模型1 Strategic change 战略变道2 Cooperative change 协同变道3 Tactical change 战术变道4 Obligato
  • 基于sumo和车牌识别数据的城市仿真

    前言 最近希望能仿真出一个城市的交通状态 xff0c 也就是知道在不同的需求加载下城市宏观交通状态的变化情况 xff0c 同时 xff0c 因为我手头有车牌识别数据 xff0c 因此需求将来自于车牌识别数据 但是仿真过后发现 xff0c 并
  • sumo中随机产生车流

    在sumo中绘制地图 xff0c 然后利用sumo中的randomTrips py工具产生随机的车流量 一 首先绘制路网 xff0c 本文绘制了一个九宫格路网 xff08 myroad net xml xff09 xff0c 如下图 xff
  • SUMO 设置速度后正常行驶

    先附上traci vehicle setSpeed vehID speed 的使用说明 xff1a setSpeed self vehID speed 在最后一步中为命名车辆设置速度 xff08 以 m s 为单位 xff09 以 spee
  • tictoc例子理解10-12

    tictoc10 12 tictoc 10 几个模块连接 发送消息直到模块3收到消息 tictoc 11 新增信道定义 tictoc 12 双向连接信息简化定义 tictoc 10 几个模块连接 发送消息直到模块3收到消息 让我们用几个 n
  • RSU 静脉放置/SUMO

    如果我知道 RSU 将在 SUMO 中放置的坐标 如何将其转换为 omnet 的坐标 我知道 SUMO 的坐标系与 omnet 不同 我应该使用内部函数 traci2omnet 中使用的方程将其离线转换 在开始模拟之前 吗 我尝试过这个 但
  • 计算 Veins-LTE 中 SimpleServerApp 的端到端延迟

    我正在尝试计算 Veins LTE 中 SimpleServerApp 的端到端延迟 但无法获得任何结果 当我打开结果文件时 与延迟相关的所有统计数据均为 0 或 NaN 我查看了 Tic Toc 教程并尝试做类似的事情 但这样我什至没有得
  • 如何在 OMNeT++ 中创建随机连接图?

    我正在尝试创建一个具有随机连接节点的图 节点应该随机连接 如果一个节点已经连接到另一个节点 则不应使用不同的连接再次连接到同一节点inout port 在文档中 https doc omnetpp org omnetpp manual se
  • 在 omnetpp 中找不到类“simpleModule”

    我正在 omnet 中编写自己的简单模块 在 omnet IDE 中 我创建了三个简单的模块 之后我使用这些模块创建了一个 网络 它正在成功构建 但是每当我尝试模拟它时它都会显示 网络期间模块 cModule NetworkTopology
  • OMNET++:在命令行中运行模拟

    在我的 omnetpp ini 文件中 有以下几行描述 cmdenv General cmdenv express mode false cmdenv output file log txt cmdenv autoflush true cm
  • 尝试使用 INET 引用创建新项目,在 .msg 文件中得到:“unexpected NAME, waiting $end”

    我创建了一个项目 其中包含我的链路层和模拟源代码 该项目以 INET 作为项目参考 在构建时 我收到此错误 错误 语法错误 意外的名称 期望 end 它来自消息文件 包含消息类型 import inet common INETDefs 我的

随机推荐

  • 数据湖Data Lakehouse支持行级更改的策略:COW、MOR、Delete+Insert

    COW 写时复制 MOR 读时合并 Delete Insert 保证同一个主键下仅存在一条记录 将更新操作转换为Delete操作和Insert操作 COW和MOR的对比如下图 而Delete Insert在StarRocks主键模型中用到
  • JAVA-- 带你重温JAVA NIO中的ZERO COPY 零拷贝

    java zero copy介绍 Java零拷贝是一种技术 在不经过应用程序的情况下 直接将数据从文件或内存映射到套接字 从而减少数据拷贝和上下文切换的次数 提高数据传输的效率 Java中支持零拷贝的方法 java nio channels
  • JUnit 5 使用教程 及 JUnit 4/5的差异

    1 JUnit 5产生的原因 JDK 8在java中带来了迷人的功能 最值得注意的是lambda表达式 为了适应 Java 8 风格的编码和新的功能特性 JUnit 提供了JUnit 5 2 JUnit 5 架构 与 JUnit 4 相比
  • JAVA-- 带你重温函数式接口、使用Functional Interface最佳实践

    1 概念及分类 函数式接口 Functional Interface 就是一个有且仅有一个抽象方法 但是可以有多个非抽象方法的接口 并且这类接口使用了 FunctionalInterface进行注解 在jdk8中 引入了一个新的包java
  • 如何基于LLMs使用LangChain构建强大的差异化应用--LangChain之初体验

    近年来 语言模型 LMs 特别是LLMs已经成为最令人兴奋和最有影响力的技术之一 它们可以为各种目的生成自然语言文本 例如回答问题 撰写摘要 创建故事等等 然而 仅使用LMs还不足以构建真正强大且与众不同的应用程序 您还需要 将LMs连接到
  • 连接局域网下centos服务器和mysql数据库慢优化方法

    连接局域网下centos服务器和mysql数据库慢优化方法 Xshell连接centos比较慢优化 通过xshell连接服务器需要服务端安装openssl xff0c openssl配置项UseDNS 默认情况是开启状态的 xff0c Us
  • 云技术概念

    云计算概念是由Google提出的 xff0c 这是一个美丽的网络应用模式 狭义云计算是指IT基础设施的交付和使用模式 xff0c 指通过网络以按需 易扩展的方式获得所需的资源 xff1b 广义云计算是指服务的交付和使用模式 xff0c 指通
  • 通过IP地址和子网掩码与运算计算相关地址

    通过IP地址和子网掩码与运算计算相关地址 知道ip地址和子网掩码后可以算出 xff1a 1 网络地址 2 广播地址 3 地址范围 4 本网有几台主机 例1 xff1a 下面例子IP地址为192 168 100 5 子网掩码是255 255
  • 关于VSCode的三个配置文件

    关于VSCode的三个配置文件 若要使用VSCode来开发C 43 43 程序 xff0c 则应该了解以下三种配置文件 xff0c 分别为 xff1a tasks json xff1a 编译器相关的配置文件 比如 xff0c 设置编译指令
  • 用Prime95来做linux下CPU压力测试

    Prime95是用来做linux下CPU压力测试的 由GIMPS Great Internet Mersenne Prime Search xff09 所提供 主要是透过运算找出梅森质数 质数 xff08 Prime number xff0
  • ubuntu修改启动项等待时间、修改启动项顺序、更改启动内核

    目录 ubuntu修改启动项等待时间 修改启动项顺序 更改系统内核版本 ubuntu修改启动项等待时间 步骤 sudo vi etc default grub找GRUB TIMEOUT 61 10 那一行 xff0c 把10改为需要的时间即
  • 好电影推荐

    今天在网上看到一篇给大家推荐电影的帖子 xff0c 里面搜集了一些欧美电影 xff0c 有悬疑片 剧情片 动作片 恐怖片 xff0c 包括经典的 以及一些流传不是很广的 xff0c 在这里收藏一下与大家一起分享 xff1a 1 不请自来 典
  • CodeBlock无编辑器问题解决

    对于新手小白来说 xff0c 在使用CodeBlock做C语言或者C 43 43 方面的编写时 xff0c CodeBlock会出现如下情况 xff1a Can 39 t find compiler executable in your c
  • argparse—使用命令行输入,给变量赋值

    import argparse if name 61 61 39 main 39 parser 61 argparse ArgumentParser parser add argument 39 bbb 39 type 61 int def
  • 树莓派keras、TensorFlow环境安装记录

    1 安装arm版的TensorFlow xff0c 方法参考 xff1a https github com samjabrahams tensorflow on raspberry pi 2 安装keras sudo apt get ins
  • inception 论文阅读笔记

    inception V1 提出inception unit xff0c 采用多个size的卷积核对输入进行卷积 采用1x1 3x3 5x5的卷积核不是必须的 xff0c 而是为了方便 可以理解为不同大小的卷积核可以提取到图像中不同大小的特征
  • 树莓派3 raspbian系统 红外遥控器 lirc库使用笔记

    目的 xff1a 接入红外接受硬件 xff0c 使用红外遥控器控制树莓派 硬件图 xff1a 稍后补 接受口GPIO 61 18 首先安装lirc库 sudo apt get update sudo apt get install lirc
  • 树莓派设置静态IP

    vi etc dhcpcd conf 使用 vi 编辑文件 xff0c 增加下列配置项 指定接口 eth0 或者wlan0 interface wlan0 指定静态IP xff0c 24表示子网掩码为 255 255 255 0 stati
  • BGP→→

    BGP 4 提供了一套新的机制以支持无类域间路由 这些机制包括支持网络前缀的通告 取消 BGP 网络中 类 的概念 BGP 4 也引入机制支持路由聚合 xff0c 包括 AS 路径的集合 特点 BGP属于外部或域间路由协议 BGP的主要目标
  • omnet++,veins,sumo使用多应用层实现车辆和行人的模拟

    1 完成网络的搭建 xff1a 搭建一个简单的十字路口场景 xff1a 1 xff09 定义结点 xff1a 新建intersection node xml 内容如下 xff1a NOTE1 xff1a 结点属性type 61 34 tra