首页 > 代码库 > ns3加入模块之vanet-highway
ns3加入模块之vanet-highway
在网上搜了下加入模块的教程,搜到了一个帖子:ns3加入模块 ,可是这个帖子只给出了如何加入的步骤。我认为写的比較简单,当我们须要加入别的模块时就不知道如何操作了。
所以,我写这个帖子,会将非常多遇到的细节问题和原因展现出来。
vanet-highway,这个模块是Bradley Dupont在Arbabi, Weigle的基础上进行改进的模块代码,使用了xml文件以及增加了很多其它的场景因素,详细能够參见相关文档。代码文档和介绍文档能够在google code中下载:谷歌code下载链接 ,有些不能FQ的同学下载不了,我上传一份到csdn上:csdn代码下载 。这份代码来自于谷歌的ns3论坛:谷歌论坛代码下载,相对于google code中的代码更加符合module的目录分类。
分模块编译,能够參考这个帖子:ns3模块编译,用一个简单的样例。教你如何加入模块。ns3的官方也有教程。在ns3-manual中。ns3.20是在第18.2节:Adding a New Module to ns-3. 详细就不翻译了,非常好的參考资料。有一个python文件能够帮助你生成模块的相关文件和文件夹:
./create-module.py new-module
vanet-highway中是给了样例的。为了跑这个样例。在加入好模块之后(直接新建一个文件,然后将上述压缩文件拷贝进去就能够了)。然后须要使用waf来编译模块,在编译模块的过程中。因为ns3版本号的不断升级,ns3.15的使用方法和ns3.20的使用方法已经产生了一些改变,如今把编译过程中的一些问题(编译使用./waf),依照先后问题,做记录,以作參考:
1.(.text+0x18):对‘main’没有定义的引用。这个是我自己加入測试模块时。main函数拼写错误造成,还有可能是文件有没有保存。
2.BuildContext‘ object has no attribute ‘new_task_gen‘,对照一下文件,就知道新版的wscript的写法做了改变。例如以下改动就可以:
#headers = bld.new_task_gen(features=['ns3header']) headers = bld(features='ns3header')
3.../src/vanet-highway/model/WifiConfigurationXml.h:50:36: error: ‘WIFI_PHY_STANDARD_80211p_CCH’ was not declared in this scope
使用谷歌搜索,搜索到了这个文件:http://www.nsnam.org/~pdbarnes/doxygen/wifi-phy-standard_8h_source.html,依照这个文件把这两个变量加入进去就可以。注意改动src中的代码。否则cleanproject之后又会丢掉。
4.../src/vanet-highway/model/Highway.cc:255:85: error: ‘min’ was not declared in this scope
查看这个文件。math.h中没有这个函数,用fmin函数取代这个函数。
或者使用#include <algorithm>,然后用std::min来取代
5../src/vanet-highway/model/Highway.cc:83:28: error: expected type-specifier before ‘list’
在list前面加一个std::list。
6.程序的执行方式,能够自己阅读样例程序。也能够參见:https://code.google.com/p/ns-3-highway-mobility/wiki/HighwayMobilityAndVehicularNetworksInNs3#How_To_Run
7.生成了文件vehicleTrace.csv和networkTrace.csv,详细含义。也能够在wiki中查看。
剩下的是分析代码,以及尝试用netanim来绘出车辆的运动轨迹。google code中还提供了一个vehicle viewer代码。能够尝试使用下。
ns3加入模块之vanet-highway