随着我国经济、科技等各方面的迅猛崛起, 近年来高铁已经成为我国的一张靓丽名片. 2018年底, 我国高铁运营里程已经超过2.9万公里, 占全球高铁运营里程总和的三分之二以上, 位居世界第一. 2019年, 计划确保投产高铁新线3200公里[1].
近年来, 我国高铁网的覆盖面逐步扩大, 向西部地区延伸, 那么高铁建设面临的自然环境更加复杂,长大坡道地段比较多, 比如在建的格库、大西、西成等都存在这样的问题[2]. 当列车在上下坡时, 如果因为坡度过大或者坡长太长而导致列车速度的变化过于剧烈, 不仅会影响行车速度、行车安全、舒适度,还会因为频繁的加减速导致运行费用的增加[3]. 因此, 地理环境对高铁的影响也是不容忽视的. 另外, 面对复杂的地理环境和不良的气候条件, 给高铁的建设增加了难度, 不仅需要耗费大量的人力、物力去实地勘察, 而且还会增加时间周期, 从而带来更大的代价.
在文献[4]中, 唐金金开发了基于Web单列高速列车运行仿真系统, 并没有进行三维仿真. 文献[5]中, 基于OSG研究了道路三维场景组织与管理、道路建模等, 一方面渲染效果不佳, 另一方面没有现成的三维地理信息, 开发难度大. 另外, 一些研究者理论计算分析了列车在长大坡道上运行时坡度、列车运行速度、监控制动距离等的关系[2]. 还有一些仅仅给出了场景建模方法[6,7]. 那么, 虚幻引擎Unreal Engine拥有强大的功能、高质量逼真的渲染效果, 以极高的帧数渲染复杂场景, 对高铁模拟来说是一个非常好的工具.
1 虚拟高铁仿真模型在高铁的仿真系统设计过程中,仿真模型的建立是一项重要的工作, 建立的高铁仿真模型如图1所示.
高铁仿真模型主要包括几何模型、高铁动力学模型、Unreal Engine引擎和显示输出4部分. 几何模型包括高铁模型和场景模型, 其中场景模型包括列车行驶的场景、地形、植被等; 高铁动力学模型首先将高铁列车抽象为绳体模型, 再通过动力学分析来计算高铁速度与坡度和坡长的关系以及列车在变坡点的受力情况; 在Unreal Engine引擎中, 通过对高铁蓝图、UI控件蓝图的相关节点进行连接, 实现高铁的运行、相关参数显示、视角切换、小地图等, 再经过引擎渲染部署到VIVE沉浸式头盔中.
1.1 高铁模型构建高铁模型的构建包括高铁列车外壳模型、车内座椅以及操作台和高铁轨道建模. 另外, 对于车体、轨道等不同的材质, 还需要用不同的材质贴图来进行修饰. 对于建模工具, 采用Maya进行建模, 相比其他建模软件而言, 它的可移植性强、可拓展性强, 并且由于它在角色建模方面比较领先, 所以它的曲面建模会更好, 更适合高铁多曲面的特性. 图2、图3展示了高铁厢体模型和整列车体模型.
1.2 高铁动力学建模
鉴于高铁的质量分布比较均匀、动力分散较为均
衡, 为了尽可能的保留高铁列车的基本属性以保证列车运行仿真计算的精度, 那么采用一种绳体模型[4]. 该模型将高铁看作质量均匀、长为L且具有动力的绳体. 其中L为列车长度. 本文以凸坡为例进行分析.
1.2.1 非变坡点受力分析1)列车上坡
当列车上坡时, 受到列车牵引力F、运行阻力
$ R = F - f - {G_x} $ | (1) |
其中列车运行阻力仅考虑基本阻力, 不考虑空气阻力等.
2)列车下坡
当列车下坡时, 受到列车制动力F'、运行阻力f和列车自身重力沿运行方向的分力
$ R' = {G_x} - F' - f $ | (2) |
以CHR3动车组为例, 对CRH3动车组进行惰性阻力试验, 得出列车惰性单位阻力[8]为:
$ f = 0.42 + 0.0016v + 0.000\;1302{v^2} $ | (3) |
其中, 速度v的单位为km/h, f的单位为KN.
1.2.2 变坡点受力分析列车在变坡点的受力分析如图4. 假设F为列车总牵引力(不考虑曲线牵引力),O点为凸坡变坡点, α、β分别为下坡、上坡的坡度角, L1、L2分别为列车在α坡段和β坡段部分的长度, F1、F2分别为F分散在α坡段和β坡段的牵引力, 列车在α坡段和β坡段的重力分别为G1、G2,
$F = {F_1} + {F_2}$ | (4) |
$F_1' = {G_1}\sin \alpha = \frac{{{L_1}}}{L}mg\sin \alpha $ | (5) |
$F_2' = {G_2}\sin \beta = \frac{{{L_2}}}{L}mg\sin \beta $ | (6) |
根据绳体模型的特点, 列车在α坡段和β坡段的加速度大小相等, 假设列车加速度为a, 那么可得:
$\frac{{{F_2} - F_2' + {F_0}}}{{{m_2}}} = \frac{{{F_1} + F_1' - {F_0}\sin \alpha }}{{{m_1}}}$ | (7) |
$\frac{{{F_2} - F_2' + {F_0}}}{{{L_2}}} = \frac{{{F_1} + F_1' - {F_0}\sin \alpha }}{{{L_1}}}$ | (8) |
${F_0} = \frac{{{L_2}({F_1} + F_1') - {L_1}({F_2} - F_2')}}{{{L_1} - {L_2}\sin \alpha }}$ | (9) |
由于将列车看作动力分布均匀的绳体模型, 那么就可以将列车长度和列车动力分布视为成正比例关系, 可得:
${F_1} = \frac{{{L_1}}}{L}F$ | (10) |
${F_2} = \frac{{{L_2}}}{L}F$ | (11) |
将式(5)、式(6)、式(10)、式(11)代入式(9)中, 可得:
$\begin{split} {F_0} &= \dfrac{{{L_2}(\dfrac{{{L_1}}}{L}F + \dfrac{{{L_1}}}{L}mg\sin \alpha )}}{{{L_1} - {L_2}\sin \alpha }} - \dfrac{{{L_1}(\dfrac{{{L_2}}}{L}F + \dfrac{{{L_2}}}{L}mg\sin \beta )}}{{{L_1} - {L_2}\sin \alpha }} \\ & ={ \dfrac{{{L_1}{L_2}(\sin \alpha + \sin \beta )mg}}{{L({L_1} - {L_2}\sin \alpha )}}} \end{split} $ | (12) |
由于
$a = \frac{{({F_0} - F_2')L}}{{m{L_2}}}$ | (13) |
场景是高铁模型的载体. 为了便于测试, 在构建场景时, 先创建一组上、下斜坡以便测试, 再创建一些山地和植被. Unreal Engine引擎自带的Landscape系统可以创建山脉、起伏或倾斜的地面等大型开放的世界环境, 并且可以修改其形状和外观. 具体操作步骤为: ① 在引擎的模式面板中选择Landscape; ② 选择管理-选择-新建地貌, 创建基本地貌, 调整位置、分辨率等参数; ③ 选择雕刻-斜坡, 创建一个上下坡; ④ 选择雕刻-雕刻, 设置画刷等参数; ⑤ 使用画刷在创建的地貌上刷山地等其他地形; ⑥ 利用腐蚀等工具对创建的地形进行微调; ⑦ 创建地形材质, 在材质编辑器中添加纹理并连接相关节点, 然后将材质赋予地形. 图5为地形场景.
1.3.2 蓝图可视化脚本构建
Unreal Engine引擎中的蓝图可视化脚本系统是一套完整的游戏性脚本程序系统, 它使用基于蓝图节点, 包括实例、函数、变量、宏等, 来创建庞杂的游戏性元素去完成对对象的驱动. 蓝图包括关卡蓝图和蓝图类两大类. 其中, 每个关卡拥有一个关卡蓝图, 可以在关卡中引用并操作Actor、对关卡流送、检查点等相关事务进行管理, 还可与关卡中拖放的蓝图类进行交互, 从而触发相应的事件等; 蓝图类包含很多子类, 可以创建Actor类、Character类、Player Controller玩家控制器类、Game Mode游戏模式类以及用于UI显示的控件蓝图类等等.
(1)高铁蓝图
高铁是研究的主体, 在引擎中是主要的对象, 所以需要对高铁进行驱动来实现模拟仿真. 具体步骤如下: ① 创建一个Third Person的蓝图模板; ② 创建一个Character蓝图类; ③ 导入Maya构建的高铁模型并添加到Character蓝图类中作为被驱动对象; ④ 连接相关节点完成对象移动、鼠标等输入响应事件; ⑤ 创建速度、时间、距离变量, 连接变量及相关节点完成高铁驱动蓝图部分. 主要的蓝图程序如图6所示.
(2) UI控件蓝图
为了在头盔和显示器中显示高铁的实时数据和实现切换视角功能, 需要创建控件蓝图. 首先创建控件蓝图, 在控件蓝图中布局文本控件、按钮控件, 并将它们与相应的蓝图进行绑定, 图7所示是速度文本蓝图. 切换视角和退出蓝图如图8所示.
实现切换视角功能需要在高铁蓝图中添加不同视角的相机, 并且构建不同视角的蓝图脚本以便于在控件蓝图中调用. 侧面视角的蓝图脚本如图9所示.
1.3.3 引擎渲染Unreal Engine引擎具有实时逼真渲染的特点. 一方面由于具有基于物理的渲染技术、高级动态阴影选项、光线追踪功能、屏幕空间反射以及光照通道等; 另一方面, 引擎带有自动LOD生成系统, 可以自动决定
物体渲染的资源分配, 减少不重要物体的面数和细节度, 从而提高渲染效率.
2 结果分析
本文采用CRH3列车组的相关参数进行测试, 其中CRH3动车组为4拖4共8节编组, 车长200 m, 满载总质量为530 t, 牵引总功率为8800 kW, 再生制动功率为8250 kW, 最高运营速度350 km/h测试坡度为15°、20°.
1)根据前文分析得到的公式对坡道上速度随坡长和坡度的关系进行模拟测试.
本文采用以下算法规则: 假设列车运行单位长度的加速度不变, 把t0时刻的速度v0作为变坡点的初始速度分析列车的受力情况, 利用式(1)或式(2)结合式(3)及相关动力学方程式计算速度v1, 由于牵引力和阻力都与速度有关, 所以将v1作为下一单位长度的初始速度, 重复上述步骤, 以此类推.
列车上坡时, 处于牵引力运行状态, 将引擎中文本控件中的模拟值输出为数据表格绘制图表.
图10展示了在上坡度为15°、20°时列车速度随坡度、坡长的变化关系. 由图可以看出, 随着坡长的增大, 列车速度逐渐变小; 随着坡度的变大, 列车速度随着坡长的增大减小的越来越快.
列车下坡时, 处于制动力运行状态, 将引擎中文本控件中的模拟值输出为数据表格绘制图表.
图11展示了在下坡度为15°、20°时列车速度随坡度、坡长的变化关系. 由图可以看出, 随着坡长的增大, 列车速度逐渐变小; 随着坡度的增大, 列车速度随着坡长的增大减小的越来越慢.
综合上述结果另可知, 列车下坡时速度的变化比上坡速度的变化更加大. 由图11可以发现, 在列车下坡时, 当里程超过4 km时, 速度减小的越来越快, 并且当达到一定坡长的时候, 列车速度会为0, 理论上符合列车实际制动需要的情况.
另外, 通过将模拟得到的数据与理论计算得到的数据进行对比, 结果基本吻合, 而且从直观上也符合实际情况, 进一步说明仿真模型的可行性.
2) 系统运行实时帧率
为了检测系统运行的流畅情况, 实时显示系统运行帧率, 在引擎中执行键盘~键, 打开引擎控制台, 输入stat fps和stat unit命令, 屏幕上显示帧率等参数, 如图12.
根据实验显示, 帧率达到119 fps, 系统运行非常流畅, 也和看到的实际运行效果一致, 也证明引擎选择的正确性. 图13为切换视角上方的情况.
3 结论
本文提出了基于虚拟现实的高铁运动仿真模型, 通过Maya和Unreal Engine建立高铁模型和仿真场景模型. 将高铁抽象成绳体模型对其进行不同运动状态下的受力分析, 并在Unreal Engine中进行模拟, 得到相关数据, 与理论计算的数据进行对比, 误差非常微小, 其可行性得到验证, 为高铁的选线、参数调整等提供了很好的可视化方案, 具有一定的实用性和参考性. 为高铁研究和实际铺设提供可视化的方法, 也可以缩短周期和相应成本, 同时通过进一步开发也可以应用于培训等教学工作当中. 本文后续可研究将坡道和曲线线路结合的更为复杂的高铁仿真模拟.
[1] |
今年高铁投产新线3200公里. 人民网. http://www.gov.cn/xinwen/2019-01/04/content_5354663.htm. [2019-01-04].
|
[2] |
张守帅, 田长海. 高速铁路长大下坡地段列车运行速度相关问题研究. 中国铁道科学, 2017, 38(3): 124-129. DOI:10.3969/j.issn.1001-4632.2017.03.18 |
[3] |
尹国栋, 魏庆朝, 招阳. 高速列车在不同运行工况下速度变化与坡度和坡长的关系研究. 铁道建筑, 2010(10): 93-96. DOI:10.3969/j.issn.1003-1995.2010.10.029 |
[4] |
唐金金. 基于运行图的高速列车群运行过程全息优化仿真方法与系统研究[博士学位论文]. 北京: 北京交通大学, 2012.
|
[5] |
张昊, 蒲浩, 胡光常, 等. 基于OSG的铁路三维实时交互式可视化技术研究. 铁道勘察, 2010, 36(1): 3-7. DOI:10.3969/j.issn.1672-7479.2010.01.002 |
[6] |
徐阳. 列车视景仿真中三维建模技术的研究[硕士学位论文]. 长沙: 中南大学, 2011.
|
[7] |
宋晓伟. 地铁列车运行控制视景仿真系统中三维建模技术的研究与实现[硕士学位论文]. 北京: 北京交通大学, 2007.
|
[8] |
张曙光. 高速列车设计方法研究. 北京: 中国铁道出版社, 2009.
|