轉載
https://blog.csdn.net/xiaoxiao123jun/article/details/79406654
veins內置的示例在文件夾examples內:
- Binaries:二進制文件
- antenna.xml:對車輛天線做出配置,不用管;
- config.xml:配置物理層無線電傳播相關參數,如示例中將信號路徑衰落的模型配置為“SmiplePathlossModel”,障礙物引起的信號衰落模型設置為“SimpleObstacleShadowing”,一般使用默認的即可;
- debug:調試信息,不用管;
- erlangen.launchd.xml:建立與SUMO的通信,不能更改;
- erlangen.net.xml: SUMO路網文件,跑自己的仿真時需要替換,至於如何生成請參考SUMO官網文檔;
- erlangen.poly.xml:如果SUMO路網文件是由地圖轉化而來的,如從OpenStreetMap導入的,則路網文件中還將包含所選地區的建築物的信息,通過SUMO提供的OpenStreetMap Web接口便可生成記錄這些建築物形狀、大小和位置信息的配置文件,作為config.xml內信號衰落模型的輸入;如果不考慮建築物對於信號傳播的影響則無需此文件,當然config.xml內的信號衰落模型的配置也要刪去;
- erlangen.rou.xml:交通流文件,如何生成也請查閱SUMO官網文檔,不再贅述;
- erlangen.sumo.cfg: SUMO運行文件,可對運行時長等運行參數進行配置;
講解omnetpp.ini!(挑關鍵的)
- network:非常關鍵的參數,需要替換成自己的network級ned文件;
- sim-time-limit: 網絡仿真時間限制,注意與SUMO生成的交通流運行時長對應;
- RSU SETTINGS: 對RSUExampleScnario.ned中的路側單元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。
- 11p specific parameters NIC-Settings:對MAC層ned(nic)相關參數做出設置,nic包含兩個子ned(mac1609_4和phy80211p)。至於connectionManager基本保持不變,如果要研究信號傳播范圍的影響的話,需要改變maxInterfDist;
- WaveAppLayer: 對移動節點(車輛)的應用層做出設置,和RSU一個道理;
- Mobility: 對移動節點的移動模塊做出設置。其中accidentCount、accidentStart、accidentDuration這三個參數是對移動節點發生事故的事件做出設置,這是veins的examples演示的功能(事故預警消息的傳播),我們用不到直接令accidentCount=0即可。
講解RSUExampleScnario.ned!
看代碼可以發現RSUExampleScnario內加入了一個RSU單元。
那么下面官網上的示例動圖里的移動節點是怎么加入的呢?
其實是通過TraCIScenarioManagerLaunchd.ned這個模塊加入的
其中下面一行代碼定義了RSUExampleScnario.ned這個network中加入的移動節點。往上一層層捋就很容易發現,RSUExampleScnario繼承自Scnario,Scnario又import了TraCIScenarioManagerLaunchd。
string moduleType = default("org.car2x.veins.nodes.Car");