“XMU IOV Simulator” 项目简介

1 总体介绍

随着汽车技术的发展,车辆数量迅速增长,交通状况日益恶化,为加强车辆之间的信息交互,减少车辆事故,车联网(IOV)的概念应运而生。XMU IOV Simulator是一个高效的模拟器,以模拟IOV节点的移动性和应用。

车联网模拟器的主要设计思路如下:

  • 三层模型,将网络分为三层,分别是车辆节点,雾节点和云节点。 具有计算能力的雾节点可以与车辆节点和云节点通信,可以减轻云节点的压力;车辆与雾节点的通信相当于车联网中V2I的形式。
  • 包括流量模拟器和网络模拟器功能:两个子系统的紧密耦合有助于及时进行交互和反馈,提高系统性能。仿真器可以导入和显示不同的城市地图,并根据不同的路由协议和调度算法对车辆的机动性进行仿真和可视化,

图1   基于雾节点的车联网示意图

 

 

图2 模拟器界面

 

2 模拟器设计

车联网模拟器主要用于模拟城市中车辆的行驶。 整个模拟器分为三层,图1显示了模拟器的节点结构。 顶层作为整体调度部署在云中,第二层是边缘节点层。 根据网格划分城市,并在网格中设置边缘节点。 作为基础计算节点,边缘节点可以快速响应城市中的请求并执行有效的部署。 底层是车辆所在的节点,是路网部署的实体。

图3 模拟器节点架构

 

图4 模拟器类图

 

模拟器希望以JavaFX来开发可视化界面,它比Java Swing和AWT更快,并且在Java的开发中将得到更多支持。模拟器的功能预期可分为以下五点:1)导入并显示城市地图; 2)建立三层节点; 3)设置节点之间的通信协议; 4)在路网中生成并部署请求; 5)展示车辆运动情况;6)统计运行效果(响应速度,丢包率等)

2.1 生成地图

地图的显示是模拟器最直观的功能。 它可以根据不同的导入文件显示不同城市的道路网络,从而使模拟器能够适应多个城市的交通状况,具有通用性。

地图的导入分为三个步骤,1)导入DIMACS文件,2)调用循环清除功能,3)绘制地图。

2.1.1 导入DIMACS文件

道路网络由图形表示,因此导入的地图采用DIMACS格式。 p开头的字段是描述性语言,以n开头的字段是节点的信息,以e开头的字段是描述边的信息。

DIMACS是源自离散数学和理论计算机科学的首字母缩写。 DIMACS格式是一种图形数据格式,以纯文本或二进制形式存储,存储单个无向图,这是图形的常用交换格式。

2.1.2 清除环路

道路网络地图包含大量节点和边线。 导出的DIMACS文件中有大量的回路和连接的子图,这使整个道路网络变得多余和混乱,因此删除了较小的连接子图和孤立的回路。 将整个道路网络连接起来,便于界面展示,也便于后期车辆轨迹的规划和操作。

特定的清除逻辑是遍历图中的每个顶点,将所有连接的顶点存储在数组中,然后将它们导出到新的数据文件中作为用于显示地图的数据。

2.1.3 地图绘制

通过GraphDrawer类对处理DIMACS文件后得到的graph进行绘制,并将结果展现在界面上。

 

2.2 节点设置

模拟器中的基本单元称为节点。 它包含基本的通讯功能。 根据模拟器的三个级别将其分为三个不同的节点,即调度节点,边缘节点和车辆节点。 这三个节点在不同级别上不同。 角色也不同。

2.2.1 调度节点

作为顶级节点,调度节点通常部署在云中以调度边缘节点。 调度节点的功能主要是管理边缘节点的分布和启用与否。 边缘节点的分布是由调度节点根据城市地图网格划分生成的。 该节点存储当时处于活动状态的边缘节点的图形。 同时,“调度节点”会根据路网的整体情况调整是否启用“边缘节点”。 当车辆和请求的数量较少时,可以适当减少边缘节点的数量,以节省计算资源。

2.2.2 边缘节点

作为基础计算节点,边缘节点部署在非常靠近车辆的道路一侧。 由于调度的车辆是整个城市的车辆,因此数量很大,直接计算顶部节点将导致压力过高而无法加载相应的计算量。 因此,请使用分层模型,添加一层计算层,部署Edge Node进行边缘计算,并减轻主服务器的压力。

边缘节点负责将每个请求分配给相应的车辆。 该请求由节点提供,根据该节点在请求范围内管理边缘节点。 边缘节点在所有受管理车辆中找到最接近请求且未执行请求的车辆节点,并使用Dijkstra算法来计划车辆的行驶轨迹。

2.2.3 车辆节点

车辆节点是道路网络中最小的单元,代表城市中的每辆车辆。每个车辆节点都归属于边缘节点管理,并且每个车辆节点都由ID标识。每个车辆节点仅接受一个请求。

由于每个边缘节点都具有ID和统一的辐射半径,因此将半径内的车辆节点作为车辆节点进行管理。如果边缘节点范围内的车辆已部署到管理范围之外的节点,则根据调度节点存储的边缘节点活动图,找到最近的边缘节点以确定该车辆是否在其管理范围内(如果有)在该范围内,车辆在该节点附近,如果不在该范围内,则找到与原始节点第二近的Edge节点以做出相同的判断,依此类推。如果所有周围的节点都无法管理车辆,则将管理车辆的边缘节点的ID设置为-1。 30秒后,在车辆附近找到离它最近的边缘节点,以确定它是否可以由该节点管理。如果在范围内,则将边缘节点ID设置为管理车辆的边缘节点的ID。否则,每30秒执行一次相同的操作,直到找到管理节点。

2.3 路由

由于当前节点之间的通信只需要满足节点的打开和关闭以及请求的分配,该功能相对简单,因此当前采用的路由协议是直接传递。 采用节点之间的直接通信。 上级节点直接分配下级节点,并且这些节点也具有直接消息传输。 无需设置消息格式。

预期未来的模拟器能够为路由协议设置路由接口,这有助于扩展路由协议。 随着后来的模拟器功能逐渐复杂,可以通过实现接口来添加其他更复杂的协议,例如DTN路由协议和5G路由协议。

2.4 请求生成

模拟车辆的部署主要包括两个方面,一个是部署中所涉及的车辆的状况,另一个是请求的情况。

2.4.1 车辆设置

模拟器需要设置要部署的车辆数,即车辆节点数。 未分配请求时,车辆的初始分布静止。

车辆的初始位置被随机分配给一个随机数。 导入地图时,运动轨迹从初始位置开始沿连接顺序移动。

2.4.2 请求设置

请求设置主要包括建立请求的数量,请求的时间,出发点和出发点。 以多线程方式,每2000毫秒生成一个新请求,并且最多同时并行生成10个请求。

2.5 分配任务

为了处理请求,模拟器以多态方式调用接口。 默认情况下,模拟器使用最近距离原理。 距离请求起点越近,就将请求分配给车辆,并将Dijkstra算法用于从起点到终点的路径规划。

2.6 车辆运行

车辆的运动是多线程的,可以同时操作多辆车辆,并且接口每1000毫秒刷新一次。

模拟器预期在在运行时将设置车辆数量,并按如下运行:1)车辆随机行驶。 2)从配置文件导入车辆行驶轨迹。 车辆经过的节点依次记录在配置文件中。

 

3 未来计划

将在车辆移动时考虑诸如交通密度和车辆交互作用等因素,并且将为模拟器实现更复杂的移动模型。我们将为模拟器实现其他更复杂的协议,例如DTN路由协议,5G路由协议,并使模拟器适合更多场景。