NS3和SUMO联合仿真浅析

NS3 SUMO的联合仿真主要分为两种类型,一种是单向的,根据车联网仿真场景中的道路拓扑、车辆分布及车辆运行状态等对 SUMO进行配置,SUMO 仿真运行完毕产生相应的轨迹文件,再将轨迹文件作为输入导入到 NS3中作为通信节点的移动轨迹, NS3仿真运行产生仿真结果;另一种是双向的,根据车联网仿真场景中的道路拓扑、车辆初始分布及运行状态对 SUMO进行配置,SUMO NS3进行实时动态的双向交互,仿真运行结束后产生联合仿真结果。

第一种类型的联合仿真,只需要运行相应的 SUMO命令,并在NS3 环境中实现处理 XML 或者 TCL格式的数据的脚本文件即可,虽然实现简单(NS3中已有处理TCL格式数目的脚本文件,相关博客有http://www.cnblogs.com/cyf1995/p/6595584.html),但是由于车辆运行轨迹是静态的输入数据,不可能随着车联网通信而改变,因而该类型仿真无法对车联网通信协议对车辆运行状态的影响进行仿真。

第二种类型的联合仿真,NS3每个时隙依据车联网通信协议对车辆通信节点进行模拟、通信、处理,并将车辆最新的驾驶行为及参数通过命令的形式发送给SUMOSUMO根据内部的跟驰模型以及换道模型等对车辆行为进行交通模拟,NS3再通过查询命令获取车辆节点最新的运行状态信息,如此循环,直到仿真结束,这样车辆运行轨迹总是动态的输入数据,且能够被车联网通信协议所影响。

TraCI(Traffic Control Interface)是一种基于 socketC/S 架构的中间件技术,它主要有两个功能,一个是实时的从连接的交通仿真器中获取仿真对象的运行状态;另一个是实时的改变连接的交通仿真器中仿真对象的运行状态。现阶段版本的SUMO已经绑定了TraCI的服务器端,只需要我们实现TraCI的客户端。Veins是基于C++实现的OMNeT++SUMO的联合仿真平台(http://veins.car2x.org/),在其Mobility模块中实现了TraCI的客户端(TraCIScenarioManager类等)。因而,实现第二种类型的仿真,可以通过参考VeinsTraCI客户端的代码进行。由于VeinsNS3的内核不同,因而,主要的工作量在于移植过程中使用NS3的功能函数替代Veins中的功能函数(比如随机数等)。

仅供参考。

 

你可能感兴趣的:(Tools)