Veins文档(中文)

overview

Veins——一个开源车联网模拟仿真框架,为车联网络集成一系列仿真模型。这些模型在与车辆交通状况模拟器(SUMO)交互的时候运行在事件网络模拟器(OMNeT++)之上。Veins的其他构成部分负责设置、运行和监控模型。
Veins构建了一个模型框架。这意味着Veins是面向特定仿真模型的代码编程。可以不加修改的使用Veins,比如只是对于特定场景修改了部分参数,但对于使用者所写的代码而言,Veins这时只是程序运行所需要的环境。这类Veins用户所写的代码只是利用仿真来评估具体应用场景的表现。这个框架关心剩下的事情:网络的底层协议和节点移动性,关注如何构建模型,确保它的正常的运行,在模拟开始和结局后收集结果数据。
Veins包含了大量的仿真模型以能够更一般化配适车辆网络。对于每个仿真来说并不是所有的模型都必须使用,事实上,可能对于特定的仿真应用只需要其中的一个模型即可。Veins仿真模型就像是一个工具箱:用来构建一个广泛的、丰富内容仿真的车辆网络。同时,一个研究者所构造的仿真实验需要清楚知晓哪一个可用的模型用于哪一类工作。为了能够给出一个比较一般化的实例,研究人员可能并不需要在城市设计一个道路损耗模型来仿真一个高速公路场景。
Veins作为一个开源车辆网络仿真模拟框架,这意味着可以随时随地免费下载。没有什么是保密的。任何仿真结果都可以分享给感兴趣的同时,不仅仅是这个结果,同时也是完整的工具链,从而可以复现一个同样的结果,可以验证他们如何产生。
Veins文档(中文)_第1张图片

正如之前所讨论的那样,Veins的每个仿真并行运行在两个仿真器上:OMNeT++(用于网络仿真)、SUMO(用于车辆交通仿真)。所有的仿真器都是通过TCP套接字连接。这意味着道路交通流量和网络流量是双向耦合的。由道路交通仿真器SUMO所仿真的车辆移动将会被映射为OMNeT仿真软器中的移动节点。节点能够于正在运行的道路交通仿真器进行交互,譬如,能够模拟道路交通的进气门关闭的影响。
更多信息请查阅下面的网站:

  1. Veins Tutorial
  2. Frequently Asked Questions (FAQ)
  3. Modules
  4. sumo-launchd

关于模拟器和TraCI的信息分别将在以下网站能被查询到:

  1. OMNeT++ - The Objective Modular Network Testbed
  2. SUMO - Simulation of Urban MObility
  3. TraCI description on the SUMO wiki

Modules

更深层次信息来选择组成部分

Veins提供全面的特定的IVC模型。这些IVC模型能够作为模型框架来仿真应用场景。每个模型将会被OMNeT++定义的模型使用一次或者多次,这将会在运行的仿真软件中被实例化并提供需要的功能。
Veins文档(中文)_第2张图片
至于怎样去使用每个模型,每个模型的使用方法由doxygen comments的形式组织成文档。这些文档利用点击在IDE中的Project>Generate NED Documentation方法自动形成API文档。或者形式化为命令行,利用make doxy。请利用浏览器打开doc/index.html 来开始学习。通过这样的方式,你将能够获取最新版本的Veins的技术文档。
接下来的页面将会简要介绍以下Veins的核心模块的作用。有些模块并没有被标准的版本所包含。有些模块需要更详细的文档,特别是视频和图片模块。


MiXiM

为了更加精确的模拟物理层的效果,特别是模型化和工作在时间和空间上的分布上,Veins依赖MiXiM所提供的功能,并被整合进Veins中。

TraCI

Veins将SUMO中的每一辆行驶的车辆实例化成一个网络节点。这个任务由TraCIScenarioManagerLaunchd模块处理:这个模块连接上一个TraCI服务器(SUMO或者是sumo-launchd)并且订阅像创造车辆和移动车辆的事件。对于每个在SUMO中创造的车辆,都将在OMNeT++仿真软件中实例化一个OMNeT++组合模块。这个模块被假定包含一个TraCIMobility类型的移动子模块。每隔一段时间,这个模块将会被SUMO用于高阶仿真并且根据车辆的行为来更新节点的移动信息(例如位置、速度和方向)。为了更快的测试,这个TraCIMobility模块同时包含了一个函数功能来使得车辆能够在一个预先定义的时刻停止(由参数accidentStartaccidentDuration来配置)。
整个模块的API文档在之前讨论过的文档中。TraCIScenarioManagerLaunchd中最重要的参数如下所示:
updateInternval
SUMO仿真更新的时间间隔
moduleType
选择那一个种OMNeT++模块来实例化每个正在行驶的车辆
port
使用哪一个TCP端口来连接sumo-launchd
seed
选择哪一个随机的种子来配置SUMO
roiRects
用来仅仅仿真指定区域的车辆,ROI的意思指感兴趣的区域(Region of Interest)
应用模型能够使用TraCIScenarioManagerLaunchd类和相关类,很方便的就能从TraCIMobility中拿到想要的东西。下面这个例子显示出车辆如何在意识到一条名为Second Street的街道拥有缓慢的交通环境,可能改变原先的路线而避开这条拥挤的街道。

mobility = TraCIMobilityAccess().get(getParentModule());
traci = mobility->getCommandInterface();
traciVehicle = mobility->getVehicleCommandInterface();
traciVehicle->changeRoute("Second Street", 3600);

其它的车辆相关联的指令像setSpeed或者setParking。相似的方法将被利用到整个仿真,例如(addVehicleaddPolygon),在道路上拿到平均速度(getMeanSpeed),单独某条车道getShape。交通指示灯setProgram。多边形setShape。任何感兴趣的点,如路口、路线、车辆类型或者用户图形界面。
如何使用这些模型,你需要阅读Veins的源代码,同时,总共有80+的方法能够在raCIScenarioManagerLaunchd中找到,或者是自动生成的模型文档。

IEEE 802.11p and IEEE 1609.4 DSRC/WAVE

Veins包含了适合车联网网络的802.11协议模型,这包括IEEE802.11p。这包含了符合EDCA的QoS通道访问机制(包含四条队列拥有不一样的访问类别)。这个协议能够抓取时间帧,模型化,编程和通道模型。
Veins文档(中文)_第3张图片
未完持续

ARIB STD-T109

Two-Ray Interference Model

Obstacle Shadowing

车辆之间的广播信号的传递被信号阴影效应(signal shadowing effects)严重影响。精确的抓取信号信息对于运行在城市环境的车联网络系统相当重要,建筑物能够屏蔽掉广播信号的传播。Veins包含了一个简单的账号阴影模型,这个模型已经被现实世界验证并校准,如下图所示:
Veins文档(中文)_第4张图片
Veins文档(中文)_第5张图片
这个模型将会精确的抓取大型建筑限制传播的效果以及不太厚的墙壁降低传播的效果。

Vehicle Obstacle Shadowing

Antenna Patterns

Veins_INET Subproject

Veins_INET Subproject


sumo-launchd

为OMNeT++设计的SUMO交通控制接口模型和一个小的守护进程共同作用来让模拟仿真过程更加简单:
设计好的守护进程和sumo-launchd运行在后台,监听着发生的请求。在每笔发生的输入连接中,该守护进程接受XML格式的仿真建立文件,并依此构建一个单独的SUMO实例以及OMNeT++和SUMO之间的优先请求。
所有的网络节点的管理和tempfile管理由daemon完成。SUMO实例被创造并在需要的时候被毁灭,简言之就是简化版本的运行模型。

你可能感兴趣的:(学术)