Veins(车载通信仿真框架)入门教程

Veins(车载通信仿真框架)⼊门教程
Veins⼊门教程——教你如何下⼿研究
⽬录
注意:写着写着发现要讲的实在太多了,实在没精⼒了,后⾯就只会提重点了,可能显得虎头蛇尾,但本⽂只是提点⼊门,最重要的还是⾃⼰去琢磨,不可能⼀篇博客就包教会。还有学之前先学会C++。
Veins是⼀款⽤于车载移动环境下⽆线通信仿真的开源框架,其对于车载⽆线⽹的底层结构,如物理层、MAC层等基于802.11p协议已基本开发完善,因此在此基础上进⾏⼆次开发,如改进MAC层协议或者路由协议等研究都是⾮常便携的。甚⾄如果是进⾏应⽤层上的研究,如车联⽹环境下的车辆⾃动驾驶、编队⾏驶、路径规划、信号灯区域协调等则更加⽅便,因为底层的结构可以直接使⽤,不必再浪费时间精⼒在这些并不是需要主要研究但却⼜对仿真结果影响重⼤的部分。
Veins的好处很多,⼀旦掌握可以节省⼤量的开发时间,得到更加准确的仿真实验结果,为⾃⼰的理论提供更加权威可靠的⽀持。但是Veins的相关教程却寥寥⽆⼏,除了官⽹上的⼀份运⾏其外很难再寻到其他相关教程,因此很多⼈打开Veins后⾯对密密⿇⿇的C++代码难以下⼿,望⽽却步。博主因为学业所需对其进⾏过⼀段时间的研究,真是万分痛苦!在此将⾃⼰的研究经验经过整理得到⼀份⼊门级教程奉献给⼤家,愿⼤家都能早⽇脱离苦海。
看教程之前先确定⾃⼰已经把官⽹上的运⾏成功了。
废话少说!
⾸先在OMNeT++的IDE左侧有如下图所⽰的窗⼝,打开veins的项⽬(博主拿⼆次开发过的程序在讲解,可能会⽐纯净版多出⼀些⽂件,⼤家不要在意),veins内置的⽰例就在⽂件夹examples内:
做出配置,不⽤管;
<?xml version="1.0" encoding="UTF-8"?>
<root>
<AnalogueModels>
<AnalogueModel type="SimplePathlossModel">
<parameter name="alpha"type="double"value="2.0"/>
<parameter name="carrierFrequency"type="double"value="5.890e+9"/>
</AnalogueModel>
<AnalogueModel type="SimpleObstacleShadowing">
<parameter name="carrierFrequency"type="double"value="5.890e+9"/>
<obstacles>
<type id="building"db-per-cut="9"db-per-meter="0.4" />
</obstacles>
</AnalogueModel>
本振泄露打孔文件夹</AnalogueModels>
番茄采摘机<Decider type="Decider80211p">
<!-- The center frequency on which the phy listens-->
<parameter name="centerFrequency"type="double"value="5.890e9"/>
</Decider>
</root>
debug:调试信息,不⽤管;
l:建⽴与SUMO的通信,不能更改;
l:如果SUMO路⽹⽂件是由地图转化⽽来的,如从OpenStreetMap导⼊的,则路⽹⽂件中还将包含所选地区的建筑物的信息,通过SUMO提供的OpenStreetMap Web接⼝便可⽣成记录这些建筑物形状、⼤⼩和位置信息的配置⽂件,作为l内信号衰落模型的输⼊;如果不考虑建筑物对于信号传播的影响则⽆需此⽂件,当然l内的信号衰落模型的配置也要删去;
<?xml version="1.0" encoding="UTF-8"?>
<root>
<AnalogueModels>
<AnalogueModel type="SimplePathlossModel">
<parameter name="alpha"type="double"value="2.0"/>
<parameter name="carrierFrequency"type="double"value="5.890e+9"/>
</AnalogueModel>
</AnalogueModels>
<Decider type="Decider80211p">
<!-- The center frequency on which the phy listens-->
<parameter name="centerFrequency"type="double"value="5.890e9"/>
</Decider>
</root>
erlangen.sumo.cfg: SUMO运⾏⽂件,可对运⾏时长等运⾏参数进⾏配置;
omnetpp.ini: OMNeT++运⾏⽂件,后⽂重点讲解;
[General]
cmdenv-express-mode = true
cmdenv-autoflush = true
cmdenv-status-frequency = 1s
**.cmdenv-log-level = info
ned-path = .
image-path = ../../images
network = RSUExampleScenario
讲解omnetpp.ini!(挑关键的)
network:⾮常关键的参数,需要替换成⾃⼰的network级ned⽂件;
sim-time-limit: ⽹络仿真时间限制,注意与SUMO⽣成的交通流运⾏时长对应;
RSU SETTINGS: 对d中的路侧单元ned中的参数做出设置。其中最重要的就是applType,它指定了RSU的应⽤层,也就是RSU会做什么。其实RSU也是⼀个ned⽂件,⽐network级低,它是由另外⼏个更低级的ned组成的,包括作为应⽤层的ned(appl),作为MAC层的ned(nic),作为移动驱动的ned(mobility)。applType指定的就是应⽤层的ned,⽽应⽤层ned的功能⼜由其同名且在同⼀个⽂件夹的C++⽂件定义,这样RSU的功能也就确定了,做应⽤层研究的要改变的就是这个应⽤层的ned与对应的C++⽂件。⾄于后⾯那些参数都是对于应⽤层ned中的⼀些参数做出设置,⽐如.rsu[*].appl.beaconUserPriority = 7就是令所有RSU 应⽤层的信标优先级为7,这个就不要再问了,做车联⽹的这个还不懂就别玩了。
>>>>>>>>>>>###
#                      RSU SETTINGS                    #
#                                                        #
#                                                        #
>>>>>>>>>>>###
*.rsu[0].mobility.x = 2000
*.rsu[0].mobility.y = 2000
*.rsu[0].mobility.z = 3
*.rsu[*].applType = "TraCIDemoRSU11p"
*.rsu[*].appl.headerLength = 80 bit
*.rsu[*].appl.sendBeacons = true
铅笔加工
*.rsu[*].appl.dataOnSch = false
*.rsu[*].appl.beaconInterval = 1s
*.rsu[*].appl.beaconUserPriority = 7
*.rsu[*].appl.dataUserPriority = 5
11p specific parameters NIC-Settings:对MAC层ned(nic)相关参数做出设置,nic包含两个⼦ned(mac1609_4和phy80211p)。⾄于connectionManager基本保持不变,如果要研究信号传播范围的影响的话,需要改变maxInterfDist;
>>>>>>>>>>>###
#            11p specific parameters                    #
#                                                        #
#                    NIC-Settings                        #
>>>>>>>>>>>###
*.connectionManager.sendDirect = true
*.connectionManager.maxInterfDist = 2600m
*.connectionManager.drawMaxIntfDist = false
*.**.nic.mac1609_4.useServiceChannel = false
*.**.nic.Power = 20mW
*.**.nic.mac1609_4.bitrate = 6Mbps
*.**.nic.phy80211p.sensitivity = -89dBm
*.**.nic.phy80211p.useThermalNoise = true
*.**.nic.phy80211p.thermalNoise = -110dBm
迪克静脉*.**.nic.phy80211p.decider = xmldoc("l")
*.**.nic.phy80211p.analogueModels = xmldoc("l")
*.**.nic.phy80211p.usePropagationDelay = true
*.**.nic.phy80211p.antenna = xmldoc("l", "/root/Antenna[@id='monopole']")
WaveAppLayer: 对移动节点(车辆)的应⽤层做出设置,和RSU⼀个道理;
>>>>>>>>>>>###
#                    WaveAppLayer                        #
>>>>>>>>>>>###
*.node[*].applType = "TraCIDemo11p"
*.node[*].appl.headerLength = 80 bit
*.node[*].appl.sendBeacons = true
*.node[*].appl.dataOnSch = false
*.node[*].appl.beaconInterval = 1s
Mobility: 对移动节点的移动模块做出设置。其中accidentCount、accidentStart、accidentDuration这三个参数是对移动节点发⽣事故的事件做出设置,这是veins的examples演⽰的功能(事故预警消息的传播),我们⽤不到直接令accidentCount=0即可。
>>>>>>>>>>>###碎片文件
#                      Mobility                          #
>>>>>>>>>>>###
*.node[*].veinsmobilityType.debug = true
*.node[*].veinsmobility.x = 0
*.node[*].veinsmobility.y = 0
*.node[*].veinsmobility.z = 1.895
*.node[*0].veinsmobility.accidentCount = 1
*.node[*0].veinsmobility.accidentStart = 75s
*.node[*0].veinsmobility.accidentDuration = 50s
讲解d!
这⾥只挑最重要的讲,其余的⾃⼰看ned⽂件的import、extends往上慢慢捋就⾏。
看代码可以发现RSUExampleScnario内加⼊了⼀个RSU单元。

本文发布于:2024-09-23 06:37:35,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/121288.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:可能   信号   做出
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议