交通通信耦合仿真模块介绍

时间:2023-11-13

模块介绍:交通通信耦合仿真模块

一、耦合仿真模块架构体系

1、基础层

如图1,基础层的特点:

(1)定义了通信体必须具备的属性与功能。

(2)设计基础层为抽象类,只能作为接口使用。

(3)通过功能层的子类进行实例化。

                                 图1 基础层的参数与功能

2、功能层

特点:

(1)基于基础层进行通信体的功能划分。

(2)提供了有针对性、更加丰富的属性与功能

                                                                                         图2 功能层的参数与功能

3、应用层

特点:

(1)需要考虑交通相关的功能和属性,如路网拓扑、车辆拓扑、车流密度等。

(2)生成通信路由表和标准覆盖车辆数。

                           图3 应用层的参数与功能

二、可适配微观交通行为的通信等效模型

相比于传统的通信仿真器,本研究以数据+场景驱动的参数标定,简化通信过程建模。

通信等效模型主要包括:

(1)RSU信息服务区域定义;

(2)连通概率模型;

(3)时延模型。

敏捷开发需求的交通-通信耦合仿真工具

1、基于SUMO仿真平台嵌入RSU与OBU对象--实现基础参数配置

(1)在netedit编辑器中添加RSU个体,并生成(RSU.xml)文件。

①功能栏选择Network,进入其中的POI点设置。

                          图4 NETEDIT编辑器上设置POI示意图

②参数设置。

Ⅰ. 修改poi类型为RSU

Ⅱ. 设置对应的参数包括基础参数id(” RSU_XX”)、pos;

Ⅲ. 可视化相关参数有图标读取路径image、图标宽度width、图标高度height以及可视化图层layer。可视化图层layer默认设置为-1,以防止RSU图标覆盖路网图层。

Ⅳ. 设备参数。需要在Edit parameter中增加“设备参数”。包括发射功率emit_rate、comm_range通信范围、控制周期cont_cycle等。

Ⅴ. 环境参数。需要在Edit parameter中增加“设备参数”。包括路径损失系数arfa和高斯随机变量标准差theta。

                                                               图5 NETEDIT编辑器上设置RSU示意图  

③保存至附属设施(RSU.xml)文件中。

点击File选择Additionals and Shapes,通过save Additional as自动保存并生成RSU附属设施文件(.xml)。

(2)在(.rou)文件中添加OBUcar车辆类型,更新(rou.xml)文件。

 

添加OBUcar车辆类型,添加对应的参数。

Ⅰ. 设备参数。包括发射功率emit_rate、comm_range通信范围等。

Ⅱ. 环境参数。包括路径损失系数arfa和高斯随机变量标准差theta。

②根据场景需求设定车辆类型选择OBUcar。

 2、基于Traci接口导入等效通信模型---实现通信功能配置

(1)配置导sumosfg文件中,并使用已封装的RSU类对象实现案例测试。

import RSU_OBU 导入封装好的库

(2)使用功能函数:

①根据需求,选择功能对应的类及函数,例如,获取RSU与装载OBU车辆的通信数据,选择RSU(). comp_data()

②获取对应RSU的参数值,完成函数调用(实例化)。见案例

 

说明:该仿真模块代码的β1.0版本已开放在Code Ocean,链接地址为:https://doi.org/10.24433/CO.8068651.v1.

 

案例介绍:RSU与OBU的配置及其通信数据输出

一、数据输入与文件配置

1、输入路网及信号控制数据文件

     以安徽省宣城市路网(xuancheng.net.xml)及其真实信号控制数据(signal_new.add.xml)为输入文件。

                                                                图6 宣称路网SUMO仿真图

2、配置交通出行需求文件

    通过netedit模块设置出行需求文件(flows.rou.xml)为输入文件。

3、配置OBU设备

在车辆出行需求文件(.rou.xml)中,配置'OBUcar'类型,设置其基础功能参数

  4、配置RSU设备

在NETEDIT编辑器或是RSU.xml(附属设施文档)中,配置RSU对象,设置其基础功能参数

5、形成配置文件(sim.sumocfg)

完成仿真场景配置,仿真场景示意图如下。

                                                                        图7 场景仿真示意图

二、仿真运行与数据输出

1、仿真启动

通过Traci接口,编写demo.py文件。通过命令traci.start(["sumo-gui", "-c", "sim.sumocfg"], port=7930)启动SUMO交通仿真软件

2、导入等效通信模型库

demo.py中导入'RSU_OBU'库,选择对应的类与功能函数。

   from RSU_OBU import RSU,OBU

3、RSU的基础参数

可以通过traci.poi.getxxx()相关函数获取RSU的基础参数。例如:

以'RSU_01'为例,

获取RSU的位置数据:RSU_position_01=traci.poi.getPosition('RSU_01')
获取RSU的发射功率数据:RSU_emit_rate_01=traci.poi.getParameter('RSU_01','emit_rate')

获取RSU的通信范围数据RSU_comm_range_01 = traci.poi.getParameter('RSU_01', 'comm_range')
获取RSU的路径损耗参数数据:RSU_theta_01 = traci.poi.getParameter('RSU_01', 'theta')
获取RSU的高斯随机变量标准差数据:RSU_arfa_01 = traci.poi.getParameter('RSU_01', 'arfa')
获取RSU的服务容量数据:RSU_capacity_01 = traci.poi.getParameter('RSU_01', 'capacity')
获取RSU的控制周期数据:RSU_cycle_01 = traci.poi.getParameter('RSU_01', 'cont_cycle')

4、OBU的基础参数

可以通过traci.vehicletype.getxxx()和traci.vehicle.getxxx()相关函数获取OBU的基础参数。例如:

以'OBU_01'为例,

获取OBU的位置数据:OBU_position_01 = traci.vehicle.getPosition('flow_2.2')

获取OBU的发射功率数据:OBU_emit_rate_01 = traci.vehicletype.getParameter('OBUcar', 'emit_rate')  # getParameter()
获取OBU的通信范围数据:OBU_comm_range_01 = traci.vehicletype.getParameter('OBUcar', 'comm_range')
获取OBU的路径损耗参数数据:OBU_theta_01 = traci.vehicletype.getParameter('OBUcar', 'theta')
获取OBU的高斯随机变量标准差数据:OBU_arfa_01 = traci.vehicletype.getParameter('OBUcar', 'arfa')

5、输出RSU与任一OBU的通信状态数据

例如:获取连通概率数据:RSU(id='RSU_01', pos=RSU_position_01, emit_rate=int(RSU_emit_rate_01), comm_range=int(RSU_comm_range_01), theta=float(RSU_theta_01), arfa=float(RSU_arfa_01),capacity=int(RSU_capacity_01), cont_cycle=int(RSU_cycle_01)).comp_data(pos_OBU)[1]

获取通信时延数据:RSU(id='RSU_02', pos=RSU_position_02, emit_rate=int(RSU_emit_rate_02), comm_range=int(RSU_comm_range_02), theta=float(RSU_theta_02), arfa=float(RSU_arfa_02),capacity=int(RSU_capacity_02), cont_cycle=int(RSU_cycle_02)).comp_data(pos_OBU)[1]

6、输出多个RSU下OBU通信状态数据

例如:多个RSU覆盖下OBU的通信对象选择及时延数据输出:OBU(id='flow_2.2', pos=traci.vehicle.getPosition('flow_2.2'), emit_rate=int(OBU_emit_rate_01),comm_range=float(OBU_comm_range_01),theta=float(OBU_theta_01), arfa=float(OBU_arfa_01)).comp_data_formul(RSUsp_list)[2]

 



本网站所有论文、数据等资源都由提供单位或个人负责,资源可供所有人免费下载使用,仅限用于非商业用途。
©2019   广东方纬科技有限公司  粤ICP备17163762号      管理员登陆