楊 城, 陳榮武, 王懷松
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 611756)
基于MSTS的三維仿真演示系統(tǒng)外部接口的研究與實(shí)現(xiàn)
楊 城, 陳榮武, 王懷松
(西南交通大學(xué) 信息科學(xué)與技術(shù)學(xué)院,成都 611756)
以微軟開發(fā)的MSTS(Microsoft Train Simulation)為基礎(chǔ),利用其模型庫以及底層引擎,結(jié)合微軟發(fā)布的專業(yè)三維引擎開發(fā)套件XNA Framework 為框架和工具,以O(shè)R(Open Rails)開源項(xiàng)目為依托,為已創(chuàng)建好的三維仿真線路環(huán)境創(chuàng)建接口,使得外部系統(tǒng)可通過該接口與三維仿真線路環(huán)境進(jìn)行數(shù)據(jù)交互。通過對(duì)數(shù)據(jù)的處理和相關(guān)功能函數(shù)的執(zhí)行,實(shí)現(xiàn)外部系統(tǒng)對(duì)三維仿真線路環(huán)境中模型的控制,如車輛、道岔、信號(hào)機(jī)等。該接口為三維仿真線路環(huán)境與其他仿真系統(tǒng),如ATS監(jiān)控系統(tǒng),車站區(qū)間聯(lián)鎖等仿真系統(tǒng)實(shí)現(xiàn)信息交互,控制命令執(zhí)行提供了實(shí)現(xiàn)基礎(chǔ),增強(qiáng)了三維仿真線路環(huán)境的可操控性與真實(shí)性 。
MSTS; XNA; 三維仿真; 接口
近年來,在軌道交通領(lǐng)域,三維仿真技術(shù)在實(shí)現(xiàn)線路場(chǎng)景的三維重建,模擬事故場(chǎng)景復(fù)原,以及在模擬列車駕駛等諸多方面,已經(jīng)得到了廣泛的應(yīng)用。針對(duì)不同的仿真技術(shù)方案,其仿真實(shí)現(xiàn)平臺(tái)與實(shí)現(xiàn)工具也種類繁多,以北京交通大學(xué)開發(fā)的基于Vega的北京地鐵一號(hào)線三維視景仿真平臺(tái)[1]為代表,該仿真方案使用 multigen creator 工具進(jìn)行建模,C/C++進(jìn)行控制,基本實(shí)現(xiàn)了地鐵線路的部分三維仿真的功能,但是從細(xì)節(jié)上看,還有諸多缺陷,比如建模的周期長(zhǎng),難度大,模型精度,美觀性,復(fù)用性不高。另一方面,Vega,multigen creator軟件掌握難度較高,且實(shí)現(xiàn)的效果一般。因此該技術(shù)在軌道交通領(lǐng)域應(yīng)用的并不廣泛。而微軟開發(fā)的MSTS是一款成熟的軌道交通領(lǐng)域三維仿真產(chǎn)品,其逼真的展示效果,以及強(qiáng)大的可編輯與可擴(kuò)展性,使其成為一款優(yōu)秀針對(duì)軌道交通領(lǐng)域的三維場(chǎng)景創(chuàng)建和編輯的工具,該工具為軌道交通領(lǐng)域的三維仿真線路環(huán)境的搭建[2-3]提供了極大的便利,然而,MSTS所創(chuàng)建的三維仿真線路環(huán)境并沒有提供外部接口,該環(huán)境是封閉的。仿真線路中的模型,如道岔,信號(hào)機(jī),車輛等不能通過外部系統(tǒng)控制,限制了仿真模型的可操作性與仿真效果的真實(shí)性,而且也和現(xiàn)實(shí)的業(yè)務(wù)邏輯不相符。為了使MSTS創(chuàng)建的仿真線路環(huán)境中的車輛、道岔、信號(hào)機(jī)等模型能夠根據(jù)需要被外部仿真系統(tǒng)如站場(chǎng)聯(lián)鎖仿真系統(tǒng)等控制,以實(shí)現(xiàn)更高級(jí)別的視景與業(yè)務(wù)邏輯層級(jí)的仿真效果??梢詣?chuàng)建相關(guān)的接口,通過系統(tǒng)間的通信,調(diào)用相關(guān)功能函數(shù)實(shí)現(xiàn)這些接口,最終實(shí)現(xiàn)了預(yù)期的仿真效果。
MSTS創(chuàng)建的三維仿真線路環(huán)境只是一個(gè)底層的模型環(huán)境,除了模型實(shí)體外,還包括一系列記錄各類參數(shù)信息的配置文件,想要實(shí)現(xiàn)基本的仿真效果,需要將模型與文件載入到對(duì)應(yīng)的運(yùn)行環(huán)境中。這里以基于微軟XNA Framework技術(shù)框架[4],C#為編程語言開發(fā)的三維仿真演示系統(tǒng)OR(Open Rails)為仿真實(shí)現(xiàn)平臺(tái),在安裝有.net Framework 3.5及其以上版本運(yùn)行庫的Windows操作系統(tǒng)下,能夠正常運(yùn)行該三維仿真演示系統(tǒng)。
三維仿真演示系統(tǒng)通過調(diào)用MSTS底層的模型文件與對(duì)應(yīng)的配置文件實(shí)現(xiàn)對(duì)車輛,以及線路上相關(guān)聯(lián)鎖設(shè)備的控制,如信號(hào)機(jī),道岔等。因?yàn)橥獠肯到y(tǒng)是無法直接控制三維仿真線路中MSTS底層模型的。所以,外部系統(tǒng)只能通過三維仿真演示系統(tǒng)來間接對(duì)MSTS底層模型進(jìn)行控制。因此,兩個(gè)系統(tǒng)間需要建立起通信,實(shí)現(xiàn)數(shù)據(jù)的互聯(lián)互通。三維仿真演示系統(tǒng)在接受到來外部系統(tǒng)的數(shù)據(jù)后,需要對(duì)數(shù)據(jù)進(jìn)行分析,判定該數(shù)據(jù)是否滿足根據(jù)兩個(gè)系統(tǒng)制定的通信協(xié)議。判定無誤后,將數(shù)據(jù)進(jìn)行處理,再將處理后得到的運(yùn)算值作為參數(shù)傳遞給已經(jīng)寫好外部接口實(shí)現(xiàn)函數(shù)。該函數(shù)在運(yùn)行時(shí),再執(zhí)行相關(guān)的功能函數(shù),最后完成對(duì)MSTS底層模型的驅(qū)動(dòng)。從而完成了外部系統(tǒng)通過三維仿真演示系統(tǒng)控制MSTS底層模型[4],實(shí)現(xiàn)預(yù)期的仿真效果與目的。通過對(duì)數(shù)據(jù)流向與業(yè)務(wù)邏輯的分析,三維仿真演示系統(tǒng)與外部系統(tǒng)建立通信后,作為三維仿真功能的具體實(shí)現(xiàn)系統(tǒng),三維仿真演示系統(tǒng)應(yīng)當(dāng)作為Socket通信的客戶端,外部仿真系統(tǒng)應(yīng)作為Socket通信的服務(wù)器端,控制指令由服務(wù)器端下發(fā)至客戶端。仿真系統(tǒng)層級(jí)結(jié)構(gòu)如圖1所示。
圖1 仿真系統(tǒng)層級(jí)結(jié)構(gòu)示意圖Fig.1 Hierarchical structure diagram of the simulation system
4.1 對(duì)模型進(jìn)行更進(jìn)一步的抽象
以微軟XNA Framework為技術(shù)框架,以C#作為編程語言,將MSTS底層模型進(jìn)行進(jìn)一步的抽象,增加相關(guān)模型的屬性。在三維仿真演示系統(tǒng)中,對(duì)應(yīng)模型被抽象為一個(gè)具體的模型類的對(duì)象,模型的特征通過該對(duì)象的屬性體現(xiàn)。結(jié)合相關(guān)配置文檔,在MSTS以及三維演示系統(tǒng)環(huán)境中才能被加載并使用,這里以道岔對(duì)象為例,在MSTS底層文件中,有對(duì)道岔模型的基本描述,如狀態(tài),類型,標(biāo)識(shí)(Uid號(hào)),因此在對(duì)道岔模型這個(gè)類進(jìn)行抽象時(shí),應(yīng)當(dāng)保留以上全部屬性,而且應(yīng)當(dāng)根據(jù)需求適當(dāng)增加屬性,在模型庫中,道岔的種類繁多,如圖2所示。
4.2 道岔模型抽象過程
圖2展示了三維演示系統(tǒng)中城市軌道交通線路里常見的道岔對(duì)象,分別是右開道岔(圖2左)、左開道岔(圖2中)、交渡道岔(圖2右),在對(duì)這些種類繁多的道岔模型進(jìn)行抽象時(shí),實(shí)際上只要對(duì)最簡(jiǎn)單的道岔種類進(jìn)行抽象,而復(fù)雜的道岔對(duì)象可以看作是多個(gè)簡(jiǎn)單道岔對(duì)象的組合。如果將道岔看作線路的節(jié)點(diǎn),那么這個(gè)虛擬線路就是通過節(jié)點(diǎn)的有向連接形成的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),而節(jié)點(diǎn)的連接方向即是道岔當(dāng)前的定/反位狀態(tài)(復(fù)雜道岔如三開、交渡道岔等分解為單個(gè)的左開或者右開道岔處理)。整個(gè)線路的拓?fù)浣Y(jié)構(gòu)信息被保存在MSTS底層的軌道數(shù)據(jù)庫*.tdb文件中,通過逐行讀取該文件,當(dāng)發(fā)現(xiàn)有節(jié)點(diǎn)對(duì)象時(shí),對(duì)應(yīng)生成一個(gè)道岔類的對(duì)象,對(duì)象的屬性,如決定道岔定/反位狀態(tài)的初始值也通過讀取該文件獲取,本文提出的接口正是間接通過自定義相關(guān)功能函數(shù)改變對(duì)應(yīng)道岔或信號(hào)機(jī)對(duì)象的狀態(tài)值來實(shí)現(xiàn)外部系統(tǒng)對(duì)三維仿真演示系統(tǒng)中對(duì)應(yīng)的道岔和信號(hào)進(jìn)行控制,從而達(dá)到仿真目的。
4.3 為道岔模型增加屬性
在前文中提到,MSTS為了區(qū)分線路中的道岔對(duì)象,在生成的線路數(shù)據(jù)庫文件中為每一個(gè)道岔對(duì)象分配了一個(gè)Uid(unique identifier)號(hào),理論上,通過搜索這個(gè)Uid號(hào)就可以找到唯一與這個(gè)Uid號(hào)關(guān)聯(lián)的道岔對(duì)象,但是這個(gè)默認(rèn)生成的Uid號(hào)過長(zhǎng),并且不同對(duì)象的Uid號(hào)沒有聯(lián)系,不方便后期接口功能的具體的實(shí)現(xiàn),因此,在不改變對(duì)應(yīng)道岔模型類結(jié)構(gòu)的前提下,為該類新添加一個(gè)SwitchID屬性,當(dāng)系統(tǒng)載入軌道數(shù)據(jù)庫文件*.tdb時(shí),每讀取到一個(gè)節(jié)點(diǎn),新添加屬性的道岔模型類就創(chuàng)建一個(gè)對(duì)象,并且為該對(duì)象的SwitchID屬性賦上一個(gè)int類型的值,該值用于唯一標(biāo)識(shí)線路中的所有道岔對(duì)象并且依次遞增,同樣的,也可對(duì)信號(hào)機(jī)模型做同樣的處理。最終當(dāng)系統(tǒng)載入完整個(gè)*.tdb文件時(shí),所有的道岔對(duì)象都被添加了唯一的一個(gè)表示屬性SwitchID,且SwitchID屬性的值在同一條線路里唯一。滿足了我們的具體使用需求。
圖2 常見道岔種類示意圖Fig.2 Sketch Map of common type of switches
4.4 通過Socket與其他仿真系統(tǒng)建立通信
三維仿真演示系統(tǒng)的道岔、信號(hào)機(jī)、車輛等模型要實(shí)現(xiàn)被外部系統(tǒng)的訪問和控制,必然要通過通信來實(shí)現(xiàn),這里基于TCP/IP協(xié)議,采用Socket技術(shù)進(jìn)行通信。由于三維演示仿真系統(tǒng)中道岔、信號(hào)機(jī)等模型作為被控對(duì)象,因此在進(jìn)行通信的兩個(gè)系統(tǒng)中,這里以三維仿真演示系統(tǒng)與ATS監(jiān)控仿真系統(tǒng)為例,三維仿真系統(tǒng)應(yīng)作為客戶端。ATS監(jiān)控仿真系統(tǒng)應(yīng)作為服務(wù)器端。由服務(wù)器端下發(fā)調(diào)度指令,如進(jìn)路排列命令,或者道岔單獨(dú)控制命令等。
三維仿真演示系統(tǒng)要實(shí)現(xiàn)對(duì)指定對(duì)象如道岔、信號(hào)機(jī)或其它模型的控制應(yīng)當(dāng)接收到由服務(wù)器端發(fā)送的對(duì)應(yīng)控制命令。因此需要統(tǒng)一通信的幀格式,如圖3所示。
圖3 幀結(jié)構(gòu)示意圖Fig.3 Schematic diagram of frame structure
其中,幀頭用于區(qū)分控制命令的種類,如道岔控制命令和信號(hào)機(jī)控制命令以‘S’作為幀頭,代表SWI(switch道岔簡(jiǎn)寫)、SIG(signal信號(hào)機(jī)簡(jiǎn)寫);幀內(nèi)容是具體的控制命令,包含了要操控的對(duì)象編號(hào),要求控制對(duì)象的當(dāng)前狀態(tài),幀尾為命令結(jié)束標(biāo)志,用于間隔其他幀信息。如幀信息“SWI0031/”,代表該命令為道岔操作命令;動(dòng)作對(duì)象SwitchID號(hào)為003的道岔,道岔要實(shí)現(xiàn)的狀態(tài)為反位(道岔狀態(tài)中,0代表定位,1代表反位)。
4.5 相關(guān)功能函數(shù)執(zhí)行過程
以站場(chǎng)控制類函數(shù)為例,當(dāng)三維仿真演示系統(tǒng)接收到ATS監(jiān)控仿真系統(tǒng)發(fā)送的命令后,首先檢查幀頭,如果滿足站場(chǎng)控制命令(控制道岔或信號(hào)機(jī)的命令)的格式,則將該命令字符串作為參數(shù)交給站場(chǎng)控制函數(shù)處理,而站場(chǎng)控制函數(shù)將該字符串進(jìn)行拆分,以“SWI0031/”為例,將該字符串拆分為“SWI”,“003”,“1”三個(gè)字符串;“SWI”表示將后面的兩個(gè)字符串交由道岔命令處理函數(shù)執(zhí)行,道岔命令處理函數(shù)接收到“003”,“1”后,驅(qū)動(dòng)底層模型,將003號(hào)道岔的狀態(tài)改變?yōu)榉次?。同?處理信號(hào)機(jī)控制命令和進(jìn)路排列控制命令(多個(gè)道岔控制命令和信號(hào)機(jī)控制命令的組合)執(zhí)行流程如圖4所示。
圖4 函數(shù)執(zhí)行流程示意圖Fig.4 Execution flow of function
為了保證ATS監(jiān)控系統(tǒng)對(duì)線路上所有設(shè)備的正確監(jiān)控,需要將ATS系統(tǒng)監(jiān)控界面中的道岔和信號(hào)機(jī)對(duì)象與三維仿真演示系統(tǒng)中對(duì)應(yīng)道岔或信號(hào)機(jī)對(duì)象對(duì)應(yīng)。如圖5所示,ATS系統(tǒng)通過監(jiān)控界面,將P0106號(hào)道岔操作到反位。
此時(shí)ATS監(jiān)控系統(tǒng)會(huì)將對(duì)應(yīng)的道岔控制命令通過Socket通信網(wǎng)絡(luò)發(fā)送給三維仿真演示系統(tǒng),發(fā)送信息內(nèi)容為“SWI0331”;相關(guān)函數(shù)接收到該命令后,按照?qǐng)D4的執(zhí)行過程最終動(dòng)作底層模型。效果如圖6所示。
通過ATS監(jiān)控界面不僅可以對(duì)三維仿真演示系統(tǒng)中的道岔和信號(hào)機(jī)設(shè)備進(jìn)行單獨(dú)控制,還可以通過設(shè)置進(jìn)路的方式,將與該進(jìn)路相關(guān)聯(lián)的所有信號(hào)機(jī)和道岔設(shè)備進(jìn)行集中控制如圖7所示。
進(jìn)路排列成功后,該條進(jìn)路以及相關(guān)敵對(duì)區(qū)段顯示為綠色,同時(shí)將對(duì)應(yīng)的控制命令以通信協(xié)議約定的格式發(fā)送至三維仿真演示系統(tǒng)。
圖5 單獨(dú)操作道岔示意圖Fig.5 Schematic diagram of Separating switch operation
圖6 道岔定/反位狀態(tài)改變圖Fig.6 State transitions of switch
圖8中的命令行字符串表示與辦理該條進(jìn)路相關(guān)的所有信號(hào)機(jī)和道岔設(shè)備的控制命令,三維仿真演示系統(tǒng)接收到該命令字符串后,按照格式進(jìn)行拆分,將該命令字符分解為單個(gè)控制命令字符串,然后根據(jù)命令類型傳遞給對(duì)應(yīng)的信號(hào)機(jī)或道岔狀態(tài)控制函數(shù)逐條執(zhí)行。當(dāng)在監(jiān)控界面辦理該條進(jìn)路后,三維仿真演示系統(tǒng)對(duì)應(yīng)信號(hào)設(shè)備狀態(tài)和ATS監(jiān)控界面上進(jìn)路顯示的狀態(tài)相同;S0108信號(hào)機(jī)與三維仿真演示系統(tǒng)中ID號(hào)為055的信號(hào)機(jī)對(duì)象對(duì)應(yīng),此時(shí)信號(hào)機(jī)狀態(tài)為綠色,表示進(jìn)路開放如圖9信號(hào)機(jī)顯示示意圖所示。
圖7 設(shè)置進(jìn)路示意圖Fig.7 Schematic diagram ofset route
同樣的,三維仿真演示系統(tǒng)中,ID號(hào)為007,008,009,010的道岔對(duì)象以及ID號(hào)為046的信號(hào)機(jī)對(duì)象分別與ATS監(jiān)控界面中的P0104,P0101,P0102,P0103號(hào)道岔以及S0101信號(hào)機(jī)匹配。這樣就實(shí)現(xiàn)了ATS監(jiān)控系統(tǒng)通過網(wǎng)絡(luò)對(duì)三維仿真演示系統(tǒng)中虛擬線路的信號(hào)設(shè)備進(jìn)行間接控制。
圖8 ATS監(jiān)控系統(tǒng)命令發(fā)送示意圖Fig.8 Schematic diagram of ATS sending commands
圖9 信號(hào)機(jī)顯示示意圖Fig.9 Schematic diagram of signal display
以MSTS底層環(huán)境為基礎(chǔ),以三維仿真演示系統(tǒng)為實(shí)現(xiàn)平臺(tái),通過創(chuàng)建外部系統(tǒng)可訪問的接口與相關(guān)功能函數(shù)為實(shí)現(xiàn)途徑,將之前獨(dú)立的,封閉的軌道交通線路場(chǎng)景仿真環(huán)境與其他相關(guān)的仿真系統(tǒng)整合起來,形成了一個(gè)更大,更具體,功能和展示效果都有更大提升的軌道交通三維仿真體系結(jié)構(gòu)。同時(shí),該接口為以后其他系統(tǒng)如車站連鎖仿真等系統(tǒng)的連入提供了實(shí)現(xiàn)基礎(chǔ)。通過對(duì)該接口的繼續(xù)擴(kuò)展,還可實(shí)現(xiàn)更高級(jí)、更具體的仿真功能,如對(duì)列車的模擬駕駛控制等??傊?通過該方式,將三維仿真演示系統(tǒng)的精美的展示效果與其他系統(tǒng)較好地結(jié)合了起來,豐富了實(shí)現(xiàn)平臺(tái)的功能特性。在針對(duì)軌道交通領(lǐng)域的仿真項(xiàng)目中,具較大的應(yīng)用空間。
[1] 宋曉偉.地鐵列車運(yùn)行控制視景仿真系統(tǒng)中三維建模技術(shù)的研究與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2007.
SONG Xiaowei.Research and Implement of 3D modeling Technology in Scene Simulation System of Subway Trains Operation[D].Beijing:Beijing Jiaotong University,2007.
[2] 楊城,陳榮武,王懷松.基于MSTS與DEM數(shù)據(jù)的線路地形仿真與實(shí)現(xiàn)[J].系統(tǒng)仿真技術(shù),2015,11(4):323-326,330.
YANG Cheng,CHEN Rongwu,WANG Huaisong.Simulation and Implementation of Route Terrain Based on MSTS and DEM data[J].System Simulation Technology,2015,11(4):323-326,330.
[3] 李柯.高速列車虛擬仿真中三維特效的設(shè)計(jì)與實(shí)現(xiàn)[D].成都:西南交通大學(xué),2013.
LI Ke.The design and implementation of 3D effects in high-speed train virtual simulation[D].Chengdu:Southwest Jiao Tong University,2013.
[4] 杜霄.唐濤.地鐵列車運(yùn)行仿真系統(tǒng)中三維視景建模和簡(jiǎn)化[J].系統(tǒng)仿真學(xué)報(bào),2006,18(6):1724-1728.
DU Xiao.TANG Tao.Analysis and modeling of three-dimension visual of subway trains operation simulation system[J].Journal of System Simulation,2006,18(6):1724-1728.
楊 城 男(1990-),四川達(dá)州人,碩士研究生,主要研究方向?yàn)榻煌ㄐ畔⒐こ碳翱刂啤?/p>
陳榮武 男(1971-),湖南東安人,高級(jí)工程師,主要研究領(lǐng)域?yàn)榻煌ㄐ畔⒐こ碳翱刂啤⒂?jì)算機(jī)應(yīng)用。
Research and Implementation of External Interface of 3D SimulationSystem Based on MSTS
YANGCheng,CHENRongwu,WANGHuaisong
(School of Information Science & Technology,South West Jiaotong University,Chengdu 611756,China)
Based on the underlying engine and model base of MSTS (Microsoft Train Simulation) which developed by Microsoft,combined with XNA Framework for frameworks and tools,relying on OR (Open Rails) open source project,an interface for the virtual 3D simulation line environment is created.The external system can interact with the virtual simulation environment through this interface.Through data processing and execution of related functions,the external system could control the model in the 3D simulation line environment,such as switches,signals,locomotives etc.This interface provides a foundation for interaction and command execution between this 3D simulation envirenment and other simulation systems,like ATS simulation system,station interlocking simulation system etc.Furthemore,this interface enhances the validity and maneuverability of the 3D simulation environment.
MSTS (Microsoft Train Simulation); XNA; 3D Simulation; Interface
TP 391.9
A