如何使用PTV VISUM模拟无人驾驶车辆

来源:PTV交通软件

1 前言

无人驾驶的研究一直是近几年的热点话题,在过去五年间,社会对于无人驾驶技术的认知历经了戏剧般的转变:从“或许可能”到“完全可能”再到当前的“必然趋势”,它代表了汽车技术和产业化的重要发展方向(www.Linghan.net)。

在宏观模型创建中,我们开始考虑加入无人驾驶车辆在路网中的模拟。那么无人驾驶车辆与传统车辆有哪些不同呢?

首先,与传统车辆不同的是,无人驾驶是车辆作为运载工具智能化、网联化发展的核心应用,通过车联网实现车与车、车与路等的互联和信息交互,进行协同感知并帮助车辆进行决策和控制。因此,无人驾驶车辆的驾驶行为本质上取决于驾驶的自动化水平和车联网的核心技术。

其次,在支持车与车或车与路通信的路段上,无人驾驶车辆可以相互通信并以固定距离行驶或形成车队;而在不支持通信的路段上,无人驾驶车辆的行为与传统车辆相似。

图1 [1]:智能化的无人驾驶车辆

那么,我们在建模中针对无人驾驶车辆都要做哪些设置呢?

2 无人驾驶的技术核心[1]

无人驾驶的整个流程归结起来有三个部分,首先,是通过雷达、像机、车载网联系统等对外界的环境进行感知识别;然后,在传感感知融合信息基础上,通过智能算法学习外界场景信息,规划车辆运行轨迹,实现车辆拟人化控制融入交通流中;其次,跟踪决策规划的轨迹目标,控制车辆的油门、刹车和转向等驾驶动作,调节车辆行驶速度、位置和方向等状态,以保证汽车的安全性、操纵性和稳定性。

无人驾驶的系统将驾驶认知形式化,利用驾驶认知的图表达语言,设计通用的无人驾驶软件架构。在这一架构中,智能决策模块并不直接与传感器信息发生耦合,而是基于多传感器的感知信息、驾驶地图和车联网通信等先验信息综合形成的驾驶态势完成自主决策。多传感器信息处理模块,由驾驶认知的图表达语言统一输出构成驾驶态势实时信息;驾驶地图的信息,则根据车辆实时位置及朝向,映射到驾驶态势中,与驾驶态势实时信息融合,形成全面反映当前驾驶态势的公共数据池;车联网通信信息,利于V2X 系统使得车与车、车与基站之间能够通信互联,获得周边交通流实时路况、路口标识、交通灯标示信息以及来自外部云服务器的超视距路况信息;决策控制模块,以这行驶环境信息数据池为基础,综合考虑交通规则、驾驶经验、全局路径等先验知识,完成决策。

图2:无人驾驶的工作原理示意图

3 无人驾驶宏观建模要求

建模中必须要满足以下 两个要求

要求1:在支持车与车或车与基站通信的路段上,无人驾驶的车辆驾驶行为与传统车辆不同,因此需要对路网对象进行特别定义,便于区分该路段上的无人驾驶车辆行驶特点。

要求2:默认假设情况不同:传统建模中假设交通系统中的车辆在整个路网中表现出相同的驾驶行为。而无人驾驶的车辆行为要受到通行能力、出行时间和路线选择等方面的影响,在不同路段中驾驶行为也不同。

基于以上两个要求,今天重点讲解无人驾驶车辆在静态交通分配中的模拟。

4 静态交通分配4.1 出行时间定义

在静态交通分配中,分配方法都是建立在最短路算法的基础上完成,而决定最短路的主要因素是出行时间。出行时间基于VD函数计算得到,在输入路段车流量、通行能力、车速等信息内容后完成计算。

无人驾驶车辆在车联网通信系统下,无人驾驶车辆中需要考虑车辆与车辆之间固定的车距和信息传递的交互影响。因此,它的出行时间公式更为复杂。

1)传统车辆出行时间计算

2)无人驾驶车辆出行时间计算

4.2 用户自定义VDF函数的嵌入

从出行时间定义中可以看到无人驾驶车辆用到的路段延误函数VDF并非使用自带的配置文件,因此需要嵌入DLL文件,得到自定义的VDF文件。

嵌入方法如下:

1)查看项目路径文件下默认路径

点击文件——项目路径——编辑项目路径,在项目路径界面下,点击打开,将显示项目路径默认的文件位置。

图3:项目路径位置界面示意图

图4:编辑项目路径文件界面示意图

图5:项目路径文件默认位置

2)复制编辑好的VDF的DLL文件到指定文件夹下

大家需要把编辑好的dll文件放在UserVDF-DLLs

5 操作实践5.1 案例文件

如果大家想进一步练习该操作内容,可以参考VISUM安装程序自带案例Static.ver,案例名称和位置如下:

5.2 操作步骤总览

步骤1:添加无人驾驶的交通方式

步骤2:导入自定义路段延误函数VDF的属性

步骤3:定义针对路段延误函数用户自定义属性

步骤4:对支持车与车或车与基站通信的路段进行定义

步骤5:设置针对无人驾驶小汽车的PCU因子

步骤6:调整计算通用设置,运行分配

5.3 添加无人驾驶的交通方式

1)实现目标

创建两种不同车型的无人驾驶的交通方式,分别为AV1和AV2。

2)操作步骤

打开文件Static.ver,点击需求——交通系统/出行方式/需求组成。

图6:交通系统/出行方式/需求组成位置示意图

点击创建,添加交通系统AV1,特征属性中选择从小汽车获得路网的特征属性。

图7:交通系统创建界面示意图

图8:创建交通系统示意图

图9:出行方式和需求组成创建示意图

同理,创建交通方式AV2。

5.4 创建用户自定义属性

1)实现目标

创建与无人驾驶相关的多个用户自定义属性。

2)实现方法

手动依次创建或者 把预先编辑好的文件进行导入。在本案例中,由于用户自定义属性已经提前创建完毕,并存为 *.NET文件,导入到文件中即可。其中里面包含用户自定义属性的编码、名称、数值类型、最小值、最大值、默认值、小数位数、编辑公式和子属性等内容。

图10:用户自定义属性的net文件内容

各用户自定义属性的含义如下表所示:

表1:属性名称及含义

注:

3)操作步骤

把CX_UDA_Static.net文件拖入编辑界面中,出现读取路网的界面,点击确定,进入附加读取路网数据页面,点击确定,可以看到用户自定义属性都已经导入路网中。

图11:读取路网界面

图12:附加读取路网数据界面

图13:导入后用户自定义属性的列表

5.5 创建矩阵

1)实现目标

基于已有的矩阵Matrix1计算CAR矩阵、AV1矩阵和AV2矩阵。

计算公式如下:

Matrix Car=Matrix 1×CAR的分担比率

Matrix AV1=Matrix 1×AV1的分担比率

Matrix AV2=Matrix 1×AV2的分担比率

2)操作步骤

首先,创建矩阵。点击菜单需求——矩阵——输入,分别创建CAR,AV1和AV2三个需求矩阵。由于要创建与矩阵MATRIX1的关系,因此数据来源类型为公式矩阵。

图14:创建矩阵界面示意图

同上,创建AV1和AV2,公式分别输入和。

注:编辑公式矩阵的最大 优势数据的联动性。如果我们在用户自定义属性中调整 CX_Share_AV1、CX_Share_AV2的值,AV1和AV2的值也立即调整。大家可以尝试一下。

其次,点击菜单——列表——OD需求——矩阵,在需求组成部分编码中填写相应内容,如图16粉色框所示,为了在需求数据中,能够自动对应找到分配的矩阵。

图15:矩阵列表位置示意图

图16:矩阵列表

然后,点击菜单需求——需求数据,编辑矩阵,使用根据特性选择矩阵,关联不同交通方式的分配矩阵。

图17:需求数据位置示意图

图18:OD需求数据中矩阵选择

最后,给CX_Share_AV1、CX_Share_AV2赋值。由于CX_Share_CAR可以根据公式计算求得,因此会自动算出。

图19:用户自定义属性公式

假设:CX_Share_AV1=0.3, CX_Share_AV2=0.1,则CX_Share_CAR=1-0.3-0.1=0.6。

问题:那么如何更改CX_Share_AV1和CX_Share_AV2的属性值呢?

答:笔者尝试在自定义属性列表中点击CX_Share_AV1,将默认数值改为0.3,同理,CX_Share_AV2采用上述操作,将默认数值改为0.1。但是并没有发现AV1、AV2和CAR的矩阵数据随着变化。

笔者尝试通过路段列表中关于列出CX_Share_AV1和CX_Share_AV2,直接进行更改,如下所示。

点击菜单列表——路网——路段,添加属性CX_Share_AV1、CX_Share_AV2和CX_Share_CAR,在列表中直接更改。

注:大家发现,如果这个数值更改好,需求矩阵同时变动。

图20:添加路段属性示意图

图21:更改属性值示意图

图22:需求矩阵值同步变动示意图

5.6 添加自定义VDF函数

1)实现目标

在模型中添加自定义的VDF函数。

2)操作步骤

预先把案例中定义好的VDF函数文件复制到项目路径中默认的路径下(默认项目路径如何打开,请查看第5部分)。

图23:项目路径中默认路径

点击菜单计算——计算流程的通用设置——PrT设置——路段VD函数,创建新的VDF函数,选择自定义的延误函数CX_AV_2TSYS_PCU_CONST_BPR,调整参数b=4,其他选择默认值。

更改所有路段类型的VDF函数类型都为此函数,更改方法是将Cr编号改为2即可。

图24:路段延误函数设置位置界面

图25:添加新的路段延误函数界面

图26:路段延误函数设置

图27:路段类型选择Cr编号

5.7 定义路段

1)实现目标

区分是否支持车与车或车与基站通信的路段。

2)操作步骤

对于支持车与车或车与基站通信的路段需要勾选CX_AV-Ready,在这里,我们假设所有的路段都支持车与车或车与基站通信。(属性CX_AV-Ready在5.4中已经创建完成,属性内容解释见表1)

点击路网编辑器中的工具栏,框选所有路段,然后右击多重编辑,CX_AV-Ready赋值为1。

图28:编辑路段界面示意图

点击菜单窗口——Links:Inputs 输入,添加属性CX-AV-ready,可以看到所有路段此时CX-AV-ready都被勾选完成。

图29:路段输入列表

图30:AV路段图形展示

5.8 PCU因子赋值

1)实现目标

关于PCU相关的因子一共有六个,分别是如下表所示:

表2:PCU相关的属性表

其中,VDF函数用到的属性分别为CX_PCU_AV1、CX_PCU_AV2、CX_PCU_AV1_Default、CX_PCU_AV2_Default。

注:CX_PCU_AV1_Default和CX_PCU_AV2_Default主要用于在不具备车或车与基站通信的路段上,默认自动驾驶车辆与传统车辆相同,所以PCU因子默认值为1,而支持车或车与基站通信的路段上,PCU因子偏小,由于车联网系统下无人驾驶车距较小,即同样路段长度上无人驾驶在同一时间内在同一断面通过的车辆较多,因此采用的PCU因子可以进行折减。

图31:VDF函数中所使用的因子示意图

2)操作步骤

在5.4中我们也定义了PCU因子的用户自定义属性CX_PCU_AV1和CX_PCU_AV2,这里赋值CX_PCU_AV1=0.8,CX_PCU_AV2=0.9。同样采用多重编辑设置属性值的方法完成。

图32:PCU因子属性编辑界面

而CX_VOL_PCU_AV1和CX_VOL_PCU_AV2主要是用于存放最终在VDF函数中到底使用了哪个数值,便于用户查看。如果CX_AV-READY=1,CX_VOL_PCU_AV1= CX_PCU_AV1;如果CX_AV-READY=0,CX_VOL_PCU_AV1=CX_PCU_AV1_Default。

5.9 运行分配

设置计算流程,对传统小汽车CAR和无人驾驶车辆AV1和AV2进行分配。

图33:计算流程设置示意图

使用文件夹中已有的Result_Static.gpa图形参数文件,查看路网中流量分布情况。

图34:AV-ready车流量分布

通过路段列表查看各路段的不同交通方式的车流量,如图34所示。

图35:路段列表-各交通方式的车流量

5.10方案对比

1)方案介绍

通过分配对比有支持车与车或车与基站通信的路段(简称AV-ready)和无支持车与车或车与基站通信的路段(Non AV-ready)的车流量分配情况。

注:支持车与车或车与基站通信的路段,只需要所有路段的CX_AV-Ready属性定义为0即可,对应的VDF函数涉及到参数也会相应变化,如CX_CALCPCU_AV1何CX_CALCPCU_AV2。

2)方案对比

运行了无支持车与车或车与基站通信的路段情况下分配结果,如图35中左图所示。

图36:左图为NonAV-ready车流量分布,右图为AV-ready车流量分布

从上述两张图中很难看出流量的差异,因此使用菜单中路网比较功能进行比对模型。

图37:方案比较位置界面示意图

分别对比传统小汽车、AV1和AV2三种交通方式在不同方案下的路线选择,可以看出在有支持车与车或车与基站通信的路段的情景方案下,AV-Ready的路段将吸引更多的车流量选择该路段。这是因为在有AV-Ready的路段的AV的PCU小于常规路段的PCU因子,在同样通行能力的情况下,AV-Ready比Non AV-Ready的出行时间更少。

图38:AV-ready与Non AV-ready的CAR流量对比

图39:AV-ready与Non AV-ready的AV1流量对比

图409:AV-ready与Non AV-ready的AV2流量对比

6 小结

从上述模型中我们构建了无人驾驶的分配模型,考虑了支持车与车或车与路通信的路段上车流相互影响的因素,这样才能更加真实的反映无人驾驶车辆在道路上的行驶特征。

此外,大家可以根据该方法项目中实际情况选择合适的参数进行敏感性测试,可以考虑不同方案下各参数所适用的情况。

公司名称:合肥市春华起重机械有限公司
主营产品:门式起重机