Omnet++、Sumo、Veins车联网仿真基础知识

本文主要介绍了Veins、OMNeT++和SUMO。Veins是车载无线通信仿真开源框架,基于OMNeT++和SUMO开发。详细讲解了OMNeT++的文件组成、运行文件配置及简单使用方法,还提及SUMO是交通仿真软件,介绍了其特点和两种使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

        Omnet++、Sumo、Veins的基本介绍及简单使用,个人学习需要总结版,如有问题可以交流~

目录

前言

Veins

Veins基本介绍

Veins的主要特征

Veins文件构成

OMNeT++

OMNeT++文件组成

OMNeT++运行文件omnetpp.ini详解

(1)form

(2)source

仿真参数设置

注释参数设置

障碍物参数设置

交通参数配置

RSU配置   

网卡参数设置

WaveAppLayer 移动车辆应用层设置

移动节点Mobility

OMNeT++简单使用

SUMO

sumo使用方法一(地图替换)

sumo使用方法二(nedit地图绘制)

参考资料


Veins

Veins基本介绍

        Veins(Vehicle Information and Entertainment System)是一种用于车载移动环境下无线通信仿真的开源框架。它是基于OMNeT++网络仿真平台和SUMO道路交通仿真平台开发的,用于模拟和研究车辆间通信(V2X)和车辆与基础设施之间的通信(V2I),其结构如下图所示。

        Veins可以模拟车辆行驶过程中的通信行为,包括车辆间的消息传递、路由选择、信道特性等。它提供了一套丰富的工具和接口,使得用户可以方便地进行车载通信相关研究和开发。Veins也使用了TraCI接口,两个仿真器通过TCP套接字连接,允许道路交通和网络交通的双向耦合模拟。车辆在SUMO中的移动被映射为OMNeT++仿真中节点的移动。

Veins的主要特征

  • 可科学仿真多种车辆移动模式;
  • 支持IEEE802.11p和IEEE1609.4DSRC/WAVE网络层的详细模型,包括多信道操作、QoS信道接入噪声和干扰效应;
  • 支持用于蜂窝网络的模型,如LTE;
  • 可以从OpenStreetMap导入整个场景,包括建筑物、速度限制、车道数、交通灯、访问和转弯限制;
  • 支持模拟由建筑物或车辆造成的阴影模型。

Veins文件构成

antenna.xml:天线配置,定义了三种不同类型天线的样本数据,分别为:

  • monopole:单极天线,位于车顶
  • panorama:单极天线,位于全景玻璃车顶
  • patch:贴片天线,位于侧镜

config.xml:物理层无线电传播相关参数配置,Decider部分定义了用于 802.11p 通信的决策器模型,指定了物理层监听的中心频率(centerFrequency)。

  • SimplePathModel:一个基本的路径损耗模型,包含路径损耗指数(alpha)和载波频率(carrierFrequency)等参数
  • SimpleObstacleShadowing:一个简单的障碍物阴影模型,包括载波频率和障碍物类型(如建筑物)的特定衰减值参数

debug:记录仿真运行过程中的调试信息、日志或者其他相关数据。

erlangen.launchd.xml:建立与SUMO的通信。

erlangen.net.xml: SUMO路网文件,可替换为自己的地图。

erlangen.png:从OpenStreetMap导出的地图。

erlangen.poly.xml:用于描述SUMO中polyconvert工具的配置参数,用于将OpenStreetMap的数据转换为SUMO道路网络格式,生成的路网文件中包含所选地区的建筑物的信息。通过SUMO提供的OpenStreetMap的Web接口可生成记录这些建筑物形状、大小和位置信息的配置文件,来作为config.xml内信号衰落模型的输入,若不考虑建筑物对于信号传播的影响则无需此文件,要记得将config.xml内的信号衰落模型的配置删去。

erlangen.rou.xml:车辆的行驶路线和车流的信息。

  • vType元素:定义车辆类型,包括加速度、减速度、车辆长度、最小间距和最大速度等属性
  • route元素:定义车辆行驶的具体路线,使用边(edges)来指定路径
  • flow元素:定义车流,指定了车辆类型、行驶路线、开始时间、时间间隔和车辆数量

erlangen.sumo.cfg: 描述SUMO仿真的参数设置。

  • configuration:指定XML的命名空间和模式的位置
  • input:输入
    • <begin value="0"/>:指定仿真开始时间为0
    • <end value="1000"/>:指定仿真结束时间为1000
    • <step-length value="0.1"/> :指定仿真的时间步长为0.1,即每个仿真步长的时间间隔为0.1单位
  • report:设置是否生成仿真步骤日志的选项为true,表示不生成
  • gui_only:设置是否启动GUI界面的选项为true,表示启动SUMO仿真时显示GUI界面

memcheck:用于配置Valgrind工具的memcheck工具,以进行内存错误检查。

omnetpp.ini:OMNeT++运行文件,下文会详细介绍。

RSUExampleScenario.ned:因为Veins是一个基于OMNeT++的框架,.ned文件是OMNeT文件中网络描述模块,相当于C++中的类,下文会详细介绍。这个样例定义一个简单Veins仿真场景,只包含一个(Roadside Unit)RSU节点。通过使用Veins仿真框架,在此场景中模拟车辆通信系统的行为,例如车辆与RSU之间的通信,以及RSU提供的服务等。

run:文件是一个Shell脚本或者批处理脚本,用于启动和运行仿真。它的作用是执行一系列命令或者指令,以便配置和启动仿真环境,然后运行仿真程序。

OMNeT++

OMNeT++文件组成

模块组成

  • .ned文件,NED语言拓扑描述,用于描述带有参数、门等的模块结构。NED文件可以使用任何文本编辑器编写,但OMNeT++IDE 为双向图形和文本编辑提供了出色的支持。
  • .msg文件,消息定义,允许定义消息类型并向其中添加数据字段。OMNeT++ 会将消息定义转换为成熟的 C++类。
  • .h/.cc文件,C++文件,简单的模块源。

其他文件

  • .ini:定义网络的仿真环境。
  • .elog:仿真过程的时序图,和FPGA过程的时序图类似。
  • .anf:仿真结构保存,包含有.vec矢量文件和.sca标量文件。

  • src文件夹:存放源代码、.ned、C++
  • simulation文件夹:存放项目配置文件、节点网络

OMNeT++运行文件omnetpp.ini详解

--以veins样例中的.ini文件为例

网络仿真环境.ini文件的编辑有两种形式

(1)form

(2)source
[General]
cmdenv-express-mode = true                        # 使用命令行模式进行快速模拟
cmdenv-autoflush = true                           # 自动刷新输出
cmdenv-status-frequency = 1s                      # 每秒输出一次模拟状态
**.cmdenv-log-level = info                        # 设置命令行日志级别为info

ned-path = .                                       # 指定NED文件路径
image-path = ../../images                          # 指定图片文件路径

network = RSUExampleScenario                       # 指定使用的.ned文件,是整个网络,可替换。这里指定网络场景模型为RSUExampleScenario
仿真参数设置
##########################################################
#            Simulation parameters                       #
##########################################################
debug-on-errors = true                             # 出错时进行调试
print-undisposed = true                            # 打印未释放的对象
sim-time-limit = 200s                              # 模拟时间限制为200秒,即本次网络仿真模拟的时间达到200s时自动断开。

**.scalar-recording = true                         # 记录标量数据
**.vector-recording = true                         # 记录向量数据

**.debug = false                                   # 关闭调试模式
**.coreDebug = false                               # 关闭核心调试模式

*.playgroundSizeX = 2500m                          # 设置场地X轴尺寸为2500米
*.playgroundSizeY = 2500m                          # 设置场地Y轴尺寸为2500米
*.playgroundSizeZ = 50m                            # 设置场地Z轴尺寸为50米

注释参数设置

##########################################################
# Annotation parameters                                  #
##########################################################
*.annotations.draw = true                           # 在仿真过程中将所有的注释绘制出来
障碍物参数设置
##########################################################
# Obstacle parameters                                    #
##########################################################
*.obstacles.debug = false                           # 关闭障碍物调试
*.obstacles.obstacles = xmldoc("config.xml", "//AnalogueModel[@type='SimpleObstacleShadowing']/obstacles")
# 从XML文件中加载障碍物模型,从名为"config.xml"的XML文件中获取"SimpleObstacleShadowing"类型的模拟模型(AnalogueModel)的"obstacles"属性值,并将其应用于当前正在被配置的对象的障碍物属性。
交通参数配置

TraCIScenarioManager是用于管理和控制TraCI(Traffic Control Interface)仿真场景的模块。TraCI是一种用于仿真城市交通流量的接口,通过它可以从外部程序中控制和获取仿真场景的状态和参数。

##########################################################
#            TraCIScenarioManager parameters             #
##########################################################
*.manager.updateInterval = 1s                      # 设置TraCIScenarioManager更新间隔为1秒
*.manager.host = "localhost"                       # 设置TraCIScenarioManager主机为本地主机
*.manager.port = 9999                              # 设置TraCIScenarioManager端口为9999
*.manager.autoShutdown = true                       # 自动关闭TraCIScenarioManager
*.manager.launchConfig = xmldoc("erlangen.launchd.xml")
                                                   # 从XML文件加载启动配置
RSU配置   

        知识补充  

        信标(Beacon)是一种由车辆或路侧单元(RSU)发送的特定消息,通常用于在一定范围内广播车辆的身份、位置和其他相关信息。其作用类似于一个标识符,可以被其他车辆或RSU接收,从而提供关于周围车辆的实时信息。信标通常是在特定的时间间隔内周期性地发送,以便其他车辆或RSU能够感知到附近车辆的存在和状态。

        信标用户优先级和数据用户优先级是两个不同的参数,它们在Veins中分别用于不同的通信阶段。信标用户优先级主要用于信标传递阶段,而数据用户优先级主要用于数据传输阶段。

  • 信标用户优先级(Beacon User Priority)是指在信标传递过程中,用于确定哪个车辆可以发送信标的优先级。具有较高信标用户优先级的车辆更有可能被选中发送信标。
  • 数据用户优先级(Data User Priority)是指在数据传输过程中,用于确定哪个车辆可以发送数据的优先级。具有较高数据用户优先级的车辆更有可能被选中发送数据。

       

  • 信标传递阶段:在这个阶段,车辆或RSU通过DSRC技术向周围发送信标,信标包含了车辆的身份、位置等信息。其他车辆或RSU可以接收到这些信标,从而获取周围车辆的信息。信标传递阶段主要用于建立车辆间的通信连接,为后续的数据传输做准备。
  • 数据传输阶段:在建立了通信连接之后,车辆或RSU可以通过DSRC技术进行数据传输。数据传输阶段主要用于车辆之间或车辆与RSU之间交换各种信息,例如交通状况、行驶速度、行驶方向等。这个阶段通常需要设置数据用户优先级,以确定哪些车辆可以优先发送数据。
  • 消息传递阶段:除了实时的数据传输,车联网中还需要支持一些非实时的消息传递,例如紧急事件通知、交通公告等。消息传递阶段主要用于在较大的范围内广播这些消息,让所有车辆都能够接收到相关信息。

        信标用户优先级用于确定哪些车辆可以发送信标,而数据用户优先级用于确定哪些车辆可以发送数据。通过设置不同的优先级,可以控制车辆在通信过程中的行为,从而实现更高效、更安全的通信。


##########################################################
#                       RSU SETTINGS                     #
##########################################################
*.rsu[0].mobility.x = 2000                          # 第一个RSU的X坐标为2000
*.rsu[0].mobility.y = 2000                          # 第一个RSU的Y坐标为2000
*.rsu[0].mobility.z = 3                             # 第一个RSU的Z坐标为3

*.rsu[*].applType = "TraCIDemoRSU11p"               # 设置RSU应用类型为TraCIDemoRSU11p
*.rsu[*].appl.headerLength = 80 bit                 # 设置RSU应用头部长度为80比特
*.rsu[*].appl.sendBeacons = false                   # 关闭RSU发送信标
*.rsu[*].appl.dataOnSch = false                     # RSU不在时隙上发送数据
*.rsu[*].appl.beaconInterval = 1s                   # 设置RSU 信标间隔为1秒
*.rsu[*].appl.beaconUserPriority = 7                # 设置RSU 信标用户优先级为7
*.rsu[*].appl.dataUserPriority = 5                  # 设置RSU数据用户优先级为5
网卡参数设置

        11p specific parameters和NIC-Settings是两个不同的配置参数,nic包含两个子.ned(mac1609_4和phy80211p)

        11p specific parameters是与802.11p协议相关的参数,用于配置无线通信的特性。802.11p是一种无线通信标准,专门用于车辆网络(V2X通信),具有较高的传输速率和较低的延迟。这些参数包括调制方式、数据速率、信道带宽等,可以根据具体的应用场景进行调整。

        NIC是指网络接口卡,可以通过设置参数来模拟不同类型和配置的NIC、不同的网络环境和通信条件,以支持各种网络协议和仿真场景。。这些参数包括网络接口卡的类型、MAC地址、最大传输单元(MTU)等。

##########################################################
#            11p specific parameters                     #
##########################################################
*.connectionManager.sendDirect = true               # 使用直接发送模式,不通过多跳或路由
*.connectionManager.maxInterfDist = 2600m           # 最大干扰距离为2600米
*.connectionManager.drawMaxIntfDist = false         # 不绘制最大干扰距离

*.**.nic.mac1609_4.useServiceChannel = false        # 不使用服务信道

*.**.nic.mac1609_4.txPower = 20mW                   # 设置发送功率为20mW
*.**.nic.mac1609_4.bitrate = 6Mbps                  # 设置数据速率为6Mbps
*.**.nic.phy80211p.sensitivity = -89dBm             # 设置灵敏度为-89dBm

*.**.nic.phy80211p.useThermalNoise = true           # 使用热噪声
*.**.nic.phy80211p.thermalNoise = -110dBm           # 设置热噪声为-110dBm

*.**.nic.phy80211p.decider = xmldoc("config.xml")   # 从XML文件加载决策器
*.**.nic.phy80211p.analogueModels = xmldoc("config.xml")
                                                   # 从XML文件加载模拟模型
*.**.nic.phy80211p.usePropagationDelay = true       # 使用传播延迟

*.**.nic.phy80211p.antenna = xmldoc("antenna.xml", "/root/Antenna[@id='monopole']")
                                                   # 从XML文件加载天线模型
WaveAppLayer 移动车辆应用层设置
##########################################################
#                    WaveAppLayer                        #
##########################################################
*.node[*].applType = "TraCIDemo11p"                 # 设置节点应用类型为TraCIDemo11p
*.node[*].appl.headerLength = 80 bit                # 设置节点应用头部长度为80比特
*.node[*].appl.sendBeacons = false                  # 关闭节点发送beacons
*.node[*].appl.dataOnSch = false                    # 节点不在时隙上发送数据
*.node[*].appl.beaconInterval = 1s                  # 设置节点beacon间隔为1秒

移动节点Mobility
##########################################################
#                      Mobility                          #
##########################################################
*.node[*].veinsmobilityType.debug = true            # 打开节点移动模型调试模式
*.node[*].veinsmobility.x = 0                      # 设置节点初始X坐标为0
*.node[*].veinsmobility.y = 0                      # 设置节点初始Y坐标为0
*.node[*].veins
  • .node[].veinsmobility.setHostSpeed::设置或更改主机速度。
  • *.node[0].veinsmobility.accidentCount = 1: 发生一次事故的次数,这行代码的意思是将编号为0的节点的veinsmobility对象的accidentCount属性设为1,代表该节点会发生一次事故。
  • .node[0].veinsmobility.accidentStart = 73s: 事故开始的时间。
  • .node[*0].veinsmobility.accidentDuration = 50s:事故的持续时间。

OMNeT++简单使用

1.创建一个项目,File->New->OMNeT++Project...

2.给项目起名,我i这里就设置为MyFirstProject,点击Next

3.选择空项目,第二个是生成两个文件夹src以及simulations,两个文件夹具体存什么在上文中已经介绍了,这里不多赘述,然后点Finish。

4.左边可以看到创建好的项目目录,如下

5.创建一个简单模块,右键项目文件夹->New->Simple Moudle

6.选择A simple module->Finish

7.创建好以后工作区的界面是这样

如果工作区没有SimpleModule,可以在右侧Types栏中选择第一个(Simple Module--Create a simple module type),然后在左边生成一个简单模块

8.右键这个图标可以修改属性、参数、名称等等

9.点击在工作区左下角的Source,切换到source模式编辑

simple SimpleModule
{
    gates:
        input in;//添加一个接收门
        output out;//添加一个发送门
}

gates:门,实现模块的连接。

10.创建一个整体网络描述文件,用于.ini启动,右击MyFistProject->New->Network Description File(NED)

11.在右侧Types栏中选择第三个,在左侧生成Network

12.在右侧Submodules中选择SimpleModule,再在左侧Network内生成三个SimpleModule

13.修改他们的名字为S1、S2、S3

14.在右侧Plaette中选择Connection对几个SimpleModule进行连接,注意由于SimpleModule中只设置了一个输入门和一个输出门,因此每个SimpleModule只有一个箭头指出一个箭头指入

先后左击不同SimpleModule可以看到输入和输出的SimpleModule名称

15.切换到source模式,可以看到在design中编辑后source会出现相关代码

我们给SimpleModule的connections加入时延{delay=100ms;}以便观察仿真动画

network Network
{
    @display("bgb=417,304");
    types:
    submodules:
        S1: SimpleModule {
            @display("p=94,81");
        }
        S2: SimpleModule {
            @display("p=268,80");
        }
        S3: SimpleModule {
            @display("p=173,211");
        }
    connections:
        S1.out --> {delay=100ms;} -->  S2.in;
        S2.out --> {delay=100ms;} -->  S3.in;
        S3.out --> {delay=100ms;} -->  S1.in;//消息传输延迟100ms发送
}

16.在左侧目录中打开simpleModule.cc文件

void SimpleModule::initialize():初始化函数

void SimpleModule::handleMessage(cMessage *msg):消息处理函数,当该模块收到消息后所需要执行的操作

17.对这两个函数进行简单处理

#include "simpleModule.h"
 
Define_Module(SimpleModule);
 
void SimpleModule::initialize()
{
    // TODO - Generated method body
    if (strcmp("S1", getName()) == 0) {
              cMessage *msg = new cMessage("spMsg");
              send(msg, "out");
    }
 
}
 
void SimpleModule::handleMessage(cMessage *msg)
{
    // TODO - Generated method body
    send(msg, "out"); // send out the message
}

        在初始化过程中,如果该模块名字为S1,生成消息msg,并通过函数send()将该消息通过发送门out发送出去

        一旦从接收门in接收到消息,该模块将消息从发送门out发送出去

18.右击项目New->Initialization File(ini)生成文件omnetpp.ini文件

19.点击Next

20.选择Empty Ini File->Finish

打21.打开omnetpp.ini文件,点击左下角Source,输入网络名network=Network

22.点击Project->Build Project

23.等待操作完成,看到Build Finished开始下一步

24.右击omnetpp.ini->run as->OMNet++ simulation,运行MyFirstProject

25.出现弹框选择OK

选择OK

这个尽量都选No,不然可能会报错

26.出现仿真画面

后续可能会出tictoc1-9练习以及讲解~

SUMO(待修改)

“城市交通仿真”(SUMO)是一个开源、高度便携、微观和连续的交通仿真软件包,旨在处理大型网络。它允许包括行人在内的多式联运仿真,并配有一套用于场景创建的大型工具。它主要由德国航空航天中心运输系统研究所的员工开发。

SUMO是一个微观的,空间上连续,时间上离散的交通仿真软件,采用c++语言开发,其宏观特征包括带变道的多车道道路,基于道路交叉口的靠右侧行驶规则,支持动态路由,可以管理超过10000条街道的网络。其微观特征包括允许碰撞自由的车辆移动模式,支持单车路由。该软件特点是具有快速的OpenGL图形界面,支持多种网络格式输入,缺点是sumo本身不能提供网络仿真器所需要的轨迹文件。

sumo使用方法一(地图替换)

openstreetmap地图导出

1.进入官网,点击左上角导出,手动选择地图范围。

2.点击导出生成相应的map.osm文件,将移动到存在自己知道的位置可以更改文件名,注意使用英文字母。

3.

sumo使用方法二(nedit地图绘制)

参考资料

OMNeT++ Simulation Library

OMNeT++ Simulation Manual

CSDV:Veins入门知识-01

CSDN:omnet++ 快速入门 | 计算机网络仿真 | omnet++ 入门教程

目 录 第一章 无线传感器网络概述 6 概述 6 1.1 NS-2 6 1.2 OPNET 6 1.3 SensorSim 7 1.4 EmStar 7 1.5 GloMoSim 7 1.6 TOSSIM 7 1.7 PowerTOSSIM 8 第二章 OMNET++简介 9 概述 9 2.1 OMNeT++框架 9 2.1.1 OMNeT++组成 9 2.1.2 OMNeT++结构 10 2.2 OMNeT++的安装 11 2.3 OMNeT++语法 12 2.3.1 NED语言 12 2.3.1.1 NED总概述 12 2.3.1.2 Ned描述的组件 13 2.3.1.3函数 15 2.3.2 简单模块 17 2.3.2.1 OMNET++中离散事件 17 2.3.2.2 包传输模型 17 2.3.2.3定义简单模块 18 2.3.2.4 简单模块中的主要成员函数 20 2.3.3 消息 21 2.3.3.1 cMessage类 21 2.3.3.2 消息定义 21 2.3.3.3 消息的收发 22 2.3.4 模块参数、门及连接的访问 23 2.3.4.1消息参数的访问 23 2.3.4.2门和连接的访问 24 2.3.4.3门的传输状态 26 2.3.3.4连接的状态 26 2.4 仿真过程 27 2.5 配置文件omnetpp.ini 28 2.6 结果分析工具 29 2.6.1 矢量描绘工具Plove 29 2.6.2 标量工具Scalar 29 27、结束语 30 第三章 物理层仿真(信道) 32 3.1 UWB的基础知识 32 3.1.1 UWB信号的应用背景 32 3.1.2 UWB信号的定义 32 3.1.3 UWB的脉冲生成方式(高斯脉冲,非高斯脉冲) 34 3.1.4 UWB的调制方式 34 3.1.5 用功率控制多址接入方法来进行链路的建立控制 36 3.2 用OMNeT++对UWB进行仿真 37 3.2.1 算法仿真的概述 37 3.2.2 算法的具体流程 39 3.2.3 算法的主要代码 41 3.2.4 仿真结果分析 58 3.2.5 应用前景 58 参考文献 59 第四章 MAC层仿真 60 概述 60 4.1 无线传感器网络MAC层特性及分类 60 4.1.1 无线信道特性 60 4.1.2 MAC 设计特性分析 61 4.1.3 无线传感器网络典型MAC协议的分类 61 4.2 基于随机竞争的MAC协议 62 4.2.1 S-MAC协议[12] 62 4.2.2 T-MAC协议 64 4.2.3 AC-MAC协议 65 4.3 基于时分复用的MAC协议 65 4.3.1 D-MAC协议 65 4.3.2 TRAMA协议 66 4.3.3 AI-LMAC协议 66 4.4 其他类型的MAC协议 67 4.4.1 SMACS/EAR协议 67 4.4.2 基于CDMA技术的MAC协议 67 4.4.3 DCC-MAC 68 4.5 基于OMNeT++的MAC层协议仿真 69 4.5.1 S-MAC协议的仿真 69 4.5.2 S-MAC协议流程图 70 4.5.3 S-MAC协议的分析 71 4.6 小结 86 参考文献 86 第五章 网络层仿真 88 概述 88 5.1 无线传感器网络路由协议研究 88 5.1.1 无线传感器网络协议分类 88 5.1.2无线传感器网络中平面路由 90 5.1.3无线传感器网络中层次化路由 91 5.1.4 经典算法OMNET仿真 93 5.2 无线传感器网络路由协议研究的发展趋势 104 5.3 无线传感器网络层路由协议与OMNET++仿真 104 5.3.1 无线传感器网络层路由与OMNET++仿真的基本概念[19] 104 5.3.1.1 传感器网络的体系结构 105 5.3.1.1.1 传感节点的物理结构 105 5.3.1.1.2 传感器网络的体系结构与网络模型 106 5.3.2 传感器网络层路由协议的基本概念 106 5.3.2.1 网络通信模式[28] 106 5.3.2.1.1 单播: 107 5.3.2.1.2 广播: 107 5.3.2.1.3 组播: 108 5.3.2.2传感器网络层设计[29] 108 5.3.3 OMNET++仿真软件的基本概念 109 5.4 无线传感器网络路由协议介绍 110 5.4.1 泛洪法(Flooding)[32] 111 5.4.2 定向扩散(Directed Diffusion:DD)[33] 112 5.4.3 LEACH( Energy Adaptive Clustering Hierarchy)[34] 113 5.5. OMNET++仿真实例 114 5.5.1 泛洪法 114 5.5.2 gossiping协议 119 5.6 本章总结 121 参考文献 121 第六章 应用层仿真 125 6.1 无线传感器网络节点定位 125 6.1.1 节点定位的基本概念 125 6.1.1.1 节点定位的定义 125 6.1.1.2 节点定位的重要性 126 6.1.2 节点定位的研究 126 6.1.2.1 测距方法 126 6.1.2.2 节点定位原理 127 6.1.2.3 节点定位算法分类 128 6.1.2.3.1 锚节点分类 128 6.1.2.3.2 计算方式分类 129 6.1.2.3.3 测距分类 130 6.1.2.3.4 节点移动性分类 130 6.1.2.4 节点定位性能评价[37] 130 6.1.3基于OMNET++的DV—Hop定位算法仿真 132 6.1.3.1 DV—Hop定位算法的基本思想 132 6.1.3.2 DV—Hop定位算法仿真 133 6.2 网络管理 141 6.2.1概叙 141 6.2.1.1 wsn网络管理的定义及范畴 142 6.2.1.2 wsn网络管理系统的分类 143 6.2.1.3 wsn网络管理系统的设计标准 144 6.2.2 wsn网络管理系统 145 6.2.2.1 能量管理系统 145 6.2.2.1.1 SenOs[5] 145 6.2.2.2 拓扑控制系统 146 6.2.2.2.1 TopDisc 算法 146 6.2.2.3 可调试、可配置、可编程系统 148 6.2.2.2.1 sympathy 系统[42] 148 6.2.2.2.2 Agilla系统[7] 149 6.2.3典型网络管理算法Omnet 模拟 150 6.2.3.1 基于Wsn的一个简单拓扑查找算法算法模拟 150 6.2.4 结论 155 6.3 基于路由层安全协议的OMNeT++仿真 156 6.3.1 基础知识介绍 156 6.3.1.1无线传感器网络安全性的重要性和必要性 156 6.3.1.2 无线传感器网络的安全目标 156 6.3.1.3无线传感器网络中的路由协议概述 157 6.3.1.4无线传感器网络路由协议的攻击方法 157 6.3.1.5无线传感器网络中经典路由协议安全性分析 160 6.3.1.6 安全路由技术分析 162 6.3.1.6.1 密钥管理技术[20, 23, 24, 25] 162 6.3.1.6.2 安全路由协议 162 6.3.2 在OMNeT++ 中的仿真 163 6.3.3 总结 172 参考文献 172 第七章 实例(无线传感器网络移动节点定位仿真) 179 概述 179 7.1 移动定位算法介绍 179 7.1.1 室内移动节点定位算法 179 7.1.1.1 Active Badge系统 180 7.1.1.2 RADAR系统 180 7.1.1.3 Cricket系统 180 7.1.2 室外移动节点定位算法 181 7.1.2.1 基于静态定位的移动定位算法 181 7.1.2.2 纯移动定位算法 182 7.2 移动定位算法OMNeT++仿真 183 7.2.1 MCL(Monte Carlo Localization)定位算法简介 183 7.2.2 MCL(Monte Carlo Localization)的OMNeT++仿真 185 7.2.2.1 建立网络拓扑 185 7.2.2.2 编码阶段 190 7.3.总结和发展趋势 195 参考文献 195
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值