CTCS-3 级列控仿真系统的三维站场模拟平台设计与VR 实现

2021-04-14 05:12赵珩越邹喜华李毓磊
铁道通信信号 2021年2期
关键词:信号机站场道岔

赵珩越 邹喜华 邓 果 李毓磊

近年来,我国铁路里程和大型枢纽站场数量飞速增长,随之出现了许多极为复杂的线路和场站系统。由于铁路信号系统结构复杂,设备数量多,占地面积大,采用实地设备培训,成本高,学习和研究效率低下[1],不利于系统的研发、仿真和教培。

三维虚拟仿真技术可为用户提供多方面的感官模拟体验,如同身在场景之中观察和操作物体[2]。这种能够给实验人员带来真实沉浸感的技术能够更好地实现实际场景的复现,代替实际设备进行操作训练和故障维修训练,降低了训练的硬件成本,提升了训练效率[3]。随着轨道交通行业自动化程度的快速提高,目前虽然已经出现了各种铁路信号设备或场站设备的三维场景仿真系统[4-5],但大多是无车状态下的车站场景演示,或者是单独的列车操作,不具备车地通信的功能。

本文基于Unity3D 引擎,设计了一个三维站场模拟平台,采用桌面三维和虚拟现实(VR)方式,展示车站和区间线路的实际线路环境,以及铁路设备和列车运行的状态;通过与CTCS-3 级列控仿真系统数据交互进行车地通信的仿真试验,实现对列控系统更有效的教学和研究[6-7]。

1 三维站场模拟平台架构及功能

1.1 平台架构及功能

本文选取CTCS-3 级列控仿真系统中的调度集中控制(CTC) 系统和车载设备进行三维站场模拟仿真功能的设计。三维站场模拟平台软件结构见图1。

图1 三维站场模拟平台软件结构

CTC 系统主要对车站及区间的进路、道岔和信号机进行联锁控制,实现进路的建立和解锁,控制列车的运行。其上位机大屏显示为车站的调度集中控制界面[8][14]。

车载系统主要控制线路中列车的增减,与CTC 系统进行数据交互,显示每一辆列车的位置、速度等运行状态,其上位机显示为增减列车的界面以及列车人机交互DMI 显示界面[9]。

本文设计的三维站场模拟平台将实现以下功能:①根据列控车站和区间的线路情况,构建三维站场,实现场景漫游;②借助基于TCP Socket 协议的网络模块,实时接收列控仿真系统中CTC 系统和车载系统传来的数据;③根据CTC 系统的数据,在三维站场中实时显示信号机、道岔、进路等车站设备的状态;④根据业务流程和车载系统的位置、速度等列车运行状态,实现列车增减和机车运行情况的模拟,以三维动画的方式展现在三维场景中[10-12]。

1.2 三维站场与CTC 和车载系统的通信协议

三维站场模拟平台作为系统的服务端,CTC系统(唯一连接)和车载系统(多个连接)作为客户端。CTC 系统以500 ms 的周期向三维站场发送站场表示信息,每个车载系统均以100 ms 的周期向三维站场发送列车运行状态信息。

三维站场与CTC 以及车载之间进行数据交互时,字节转换均采用大端模式,CTC 发送的数据包结构如表1 所示,车载发送的数据包结构如表2所示。每个信号机的信息由3 个字节表示,每个字节分别为该信号机在设备表里的编号、点灯颜色和断丝状态;每个道岔由3 个字节表示,每个字节分别为编号、道岔转换状态(无表示、定位、反位)和道岔单锁情况;每段轨道区段信息由4 个字节表示,每个字节分别为编号、占用状态、锁闭状态以及分路不良情况。

表1 站场表示信息的数据包结构

表2 列车运行状态信息的数据包结构

2 三维站场模拟平台的软件设计

根据真实线路和设备资料进行三维站场软件的开发,制作模型以及规划线路,设计流程如图2 所示。首先,使用Maya进行三维建模,并导入至Unity3D 引擎中,编辑线路并搭建场景;其次,在Unity3D 的mono 平台下使用C#语言编写交互逻辑[13],包括数据读取、动画控制、信号机和道岔的状态变化,以及列车运行逻辑等;最后,进行软件联合调试,实现列控系统在三维场景中的真实复现。

2.1 三维站场中的模型制作

图2 三维站场模拟平台软件设计流程

三维站场模型主要有高铁列车、轨道、转辙机、信号机、车站站台、接触网等。其中:列车模型采用CRH380B 型动车组;转辙机采用ZD6 和S700K 两种型号;信号机采用高柱五显示的进站信号机、矮柱三显示的出站信号机和通过信号机,以及矮柱二显示的调车信号机[14];轨道采用高铁的无砟轨道,应用18、42、62 号道岔[15],类型分为直线轨道、单开道岔轨道和单式渡线道岔轨道;轨道模型中将尖轨与转辙机模型组合在一起,方便制作转辙动画。

2.2 三维站场中轨道线路的编辑

2.2.1 单位轨道预制体的制作

制作轨道预制体时,要沿着轨道的走向生成路径点集,使列车可以沿着路径点移动。

在Unity3D 引擎中,根据导入的轨道模型,以模型起点为父节点坐标,沿轨道走向计算出间隔为1m 的点集坐标。

如图3 所示,点O 为道岔轨道模型的父节点,点N 为路径点,直线部分为ON0,侧线部分由直线ON1、弧线N1N2、直线N2N3构成[12]。已知对应型号道岔中的直线段长l0、l1、l3,圆弧弧长l2,圆弧半径R 以及辙叉角α,即可计算出该轨道点集中每个点的局部坐标。

图3 轨道路径示意图

设l 为列车从O 点开始行驶的距离。当N 在直线路径中时,N 点坐标为(l,0)。当N 点在侧线路径中时,若0≤l≤l1,则N 点坐标为(l,0);若l1<l≤l2,则N 点 坐标 如 式(1) 所示;若l2<l≤l3,则N 点坐标如式(2)所示。

式中,“±”代表不同的侧线转辙方向,转辙向左时为“+”,转辙向右时为“-”。

在每个点的坐标位置生成一个空物体(GameObject 类型)作为轨道预制体的子物体,即列车行驶所需的路径点集。每个生成的路径点上需要挂载一个结构体,存放邻接点数据,即当前点、前邻接点和后邻接点的GameObject 类型数据,这样相当于将所有的点存放在一个双向链表中,任意一个点都能直接找到其前、后邻接的点。另外,在一段轨道点集的头点和尾点上做接口标记,其头点的前邻接点和尾点的后邻接点为空,用于轨道之间的拼接。

2.2.2 线路编辑器

对于不同车站,其轨道线路有所不同,因此设计了一个线路编辑工具,用来制作任意站场和线路的三维模型。

线路编辑工具界面见图4。使用时先将轨道模型栏中的多个轨道拖入场景,使一个轨道模型的端点靠近另一个轨道模型的端点处,则其自动拼接到被靠近的轨道模型上,再将轨道路径点的头、尾点结构体中的邻接点数据也相应添加,并在界面右侧UI 中设置该轨道的编号。

界面下侧的模型选择栏中添加了不同类型、不同方向、不同尺寸的道岔轨道、直线轨道及其组合模型。另外,转辙机和色灯信号机的模型也列入其中,可以摆放在轨道线路的对应位置。在Unity3D引擎中使用该工具,即可将制作的单位轨道按需求拼接成完整的线路。

2.3 三维站场的搭建和信息交互

2.3.1 站场资源的导入

将制作好的整段线路轨道预制体的Transform信息存储在一个json 文件中。在三维站场的场景中读取此json 文件,根据文件中的Transform 信息,将制作好的线路模型加载到场景中。

2.3.2 桌面三维视角的场景漫游

图4 线路编辑工具界面

三维站场采用了4 个切换视角,分别为宏观视角、跟车定位视角、第一人称漫游视角和第三人称漫游视角。三维站场的4 个视角见图5。

图5 三维站场的视角

宏观视角采用在场景中的主摄像机上挂载控制脚本,使用鼠标中键平移、右键旋转、滚轮缩放的方式,对三维站场的全景场景进行全方位的观察;第一人称与第三人称漫游视角添加了角色控制器(Character Controller),使用WASD 键移动角色,并将相机绑定在角色上进行跟随;场景中添加列车时,可以将摄像机绑定在列车上,切换至列车跟车定位视角,方便观察某一辆列车的运行状态。

2.3.3 VR 视角的实现

为了提高用户的沉浸感,本系统增加了一个VR 视角的版本,采用Vive Input Utility 的插件来编写VR 人机交互功能脚本。在场景中添加插件的ViveCameraRig 预制,预制中包含camera 相机,代表VR 头盔显示器,RightHand 和LeftHand 分别代表2 只手柄控制器。使用ViveInput.GetPressDown选择控制器以及控制器按钮进行交互逻辑的编辑;使用手柄Grip 侧握键进行地面视角和行车视角切换。在地面视角中,添加ViveCurvePointers 组件,使用圆盘键进行位置瞬移;在行车视角中,ViveCameraRig 切换至列车驾驶舱,模拟司机驾驶的视角。司机视角的VR 画面见图6。

图6 司机VR 视角

2.3.4 信号数据接收

三维站场作为服务器端,数据接收模块采用Socket 编程接口、TCP 网络协议接收客户端数据。编写一个Client 类作为接入的客户端,每接入一个客户端,即创建一个Client 实例,实时接收数据包,判断数据包的帧头和帧尾的帧长,以确定客户端类型(CTC 站场信息或车载运行状态)。将数据解析之后得到场景所需的信息(如信号机、转辙机的状态,列车的编号和位置信息等),更新对应的结构体(StationData,TrainData)中的数据信息,随即进行相应的逻辑处理。数据处理逻辑框架见图7。

图7 数据处理逻辑框架

2.3.5 信号机与转辙机的逻辑控制

CTC 中心定时500 ms 向三维站场发送站场表示信息,在StationData 中进行更新。数据包中,信号机点灯的数据解析为0~14 的整型数据,分别代表不同的色灯显示,且色灯显示需要结合信号机类型和点灯数据信息。

场景中信号机都贴有暗色的贴图,每一个色灯上添加一个Spot Light 组件,即聚光灯组件。每次接收数据都会更新一次站场中所有信号机的色灯显示,若对应编号的信号机点灯数据发生变化,则改变相应色灯的Spot Light 的Intensity(灯光强度)属性;若数据不变,则保持色灯不变。

数据包中的道岔转换状态分为0x00 (无表示)、0x01(定位)和0x02(反位)[4]。每次接收数据后,在站场中更新转辙机的状态,若对应道岔状态发生变化,则控制播放对应转辙机的转辙动画,将尖轨扳到相应位置。转辙动画使用Animaton 制作移向反位和移向定位2 个动画片段AnimationClip,由动画状态机Animator 控制Animation-Clip 实现转辙机状态的切换。同时,在道岔轨道的头或尾端路径点结构体中,邻接点也进行相应的切换,确保链表中的路径点集与站场中的进路一致。

2.3.6 列车运行逻辑控制

每当一个车载接入系统中,数据接收模块对车载数据进行解析后,便实例化一个TrainData,每次接收数据更新一次TrainData 中的数据。列车运行控制逻辑流程见图8。

第一次接收数据时,根据数据包中的信息初始化列车。其中,列车设备编号和车次号作为列车的标识;列车长度决定初始化的车厢数量;列车运行方向决定正向或反向;列车所在的线路号决定下行或上行;而列车位置,即列车所在位置的公里标(double 类型,强转为float 类型,以兼容Unity3D中的Vector3 坐标类型),将其映射为Unity3D 场景中的三维坐标,找到轨道路径点集中与其最接近的一个点作为该列车车头所在的坐标点。

每次收到的位置信息(公里标)作为列车车头所要达到的位置,对比上一帧,若公里标增加,则列车向下行方向运行;公里标减少,列车向上行方向运行;公里标不变,则列车停车。根据行车方向不同,在路径点的双向链表中,向不同的方向获取其邻接路径点,作为当前车头所在路径点的下一路径点,并以相同的方向,依次找到每一节车厢头部所在的路径点以及车尾所在的路径点,存储到全局的List 集合m_next 中。

DoTween 是一种快速、高效、安全的面向对象的动画引擎。根据当前列车速度计算到达下一个点所需的时间,在Unity3D 中使用DoTween 插件中的DoMove 函数,在路径点集之间做补间动画,使列车沿着轨道线路平滑移动[16]。由于使用DoTween 插件做连续补间动画时,会产生10 ms 以上的延时,因此列车实际运行速度会低于理论速度。为弥补这个延时,需计算公里标位置和当前列车所在位置的距离,若距离在一个可接受的误差范围a 之内,则不对补间动画做处理;若距离大于a,则车头位置直接移向下一点,代替补间动画,以补偿误差距离。在车头位置移动后,使用DoMove 函数将每一节车厢移动到m_next 中对应路径点上,并使用DoLookAt 函数,将车头和每一节车厢的尾端朝向后面相邻车厢的头端点,最后一节车厢朝向车尾,这样完成列车运行时车厢跟车的效果。

图8 列车运行控制逻辑流程

在三维站场中,根据列控系统的实际调车需求可同时在场景中出现多辆列车,每辆列车的设备编号和车次号都会添加在界面中的UI 中,点击对应的车次号,即可切换相机位置,移动到跟车视角进行行车跟踪观察[19]。

3 平台场景的展示与测试

3.1 三维站场的展示

以主干为郑西线的华山北站至临潼东站一段连续高铁线路为例,其轨道线路以1:1 的比例再现于三维场景中,该三维站场数据采集自国家级实验教学示范中心的CTCS-3 级列控仿真系统。华山北站虚拟场景见图9。

图9 三维站场模拟平台中的华山北站虚拟场景图

3.2 三维站场与列控仿真系统的联合调试

1)将三维站场平台软件与CTCS-3 级列控仿真系统接入同一局域网内,三维站场作为服务器端[17-18]。

2)接入CTC 中心系统,将华山北站的下行正向设为侧线接车状态,下行正向进站信号机为双黄闪,出站通过,亮绿灯。CTC 大屏如图10(a)所示,对应的三维场景如图10(b)所示。

3)接入车载系统,在下行正向进站前公里标为947000 的位置增加一辆列车,车次号为G103,施加牵引使列车行驶,列车受到列控仿真系统的控制,进行进站和出站的作业。

4)列车占用轨道区段时,CTC 大屏上对应的区段为红光带显示。图11 为该次列车在华山北站上行咽喉处出站时的运行状态。三维场景中列车也位于同一个区段内,列车的位置和速度与DMI 显示一致,体现了该三维站场与列控仿真系统保持通信的实时性。

图10 华山北站列车下行正向侧线接车的联合调试

4 总结

本文设计的三维站场模拟平台软件和CTCS-3级列控仿真系统配合使用,通过设计的线路编辑器搭建真实站场的轨道线路,实现真实线路的场站设备控制、联锁控制、行车控制,以及场景多视角漫游等功能。以三维VR 的技术展现了列控仿真系统的工作方式,以一种新颖的方式模拟了车地通信中各个岗位的工作场景。在后续平台开发中,结合列控仿真系统和车载系统,还可逐步实现更复杂的轨道交通系统的仿真。

图11 华山北站上行咽喉处G103 次列车运行的联合调试

猜你喜欢
信号机站场道岔
贝雷梁在道路下穿铁路站场工程中的应用
烟台站轨道结构优化引起的道岔改造信号过渡方案探讨
微型注浆钢管桩在高铁站场软基加固中的应用研究
油气站场甲烷排放检测技术及量化方法
输气站场危险性分析
铁路信号机一体化的双灯设计
LKJ基础数据中信号机公里标与距离不一致问题分析
计算机联锁系统带动道岔选路存在问题及改进措施
联锁表的带动道岔、防护道岔设计方法
驼峰信号机与驼峰辅助信号机显示不一致问题分析