劉 祎,蔣大明,張曉峰
(1.北京交通大學(xué) 電子信息工程學(xué)院, 北京 100044;2.北京中鐵通電務(wù)技術(shù)開發(fā)有限公司, 北京 100166)
列車位置的精確定位是實(shí)現(xiàn)最優(yōu)列車信號調(diào)度的基本參數(shù)。目前,針對鐵路列車定位,各國采用的方式有所不同,法國ASTREE系統(tǒng)采用多普勒雷達(dá)進(jìn)行定位;北美ARES、PTC、PTS系統(tǒng)采用GPS進(jìn)行定位;歐洲ETCS、日本CARAT系統(tǒng)采用查詢/應(yīng)答器和里程計進(jìn)行定位;德國LZBX系統(tǒng)采用軌間電纜進(jìn)行定位[1]。
全球衛(wèi)星導(dǎo)航定位系統(tǒng)是一種可發(fā)送高精度、全天候、連續(xù)實(shí)時的導(dǎo)航、定位和授時信息系統(tǒng)。目前正在進(jìn)行的基于衛(wèi)星導(dǎo)航系統(tǒng)的鐵路列車控制的試驗(yàn)表明:不斷降低成本和改進(jìn)性能的衛(wèi)星導(dǎo)航系統(tǒng)具有提高運(yùn)輸能力和改善安全性的特點(diǎn),并且能夠節(jié)省大量的道旁信號設(shè)備,增加了運(yùn)輸能力,改進(jìn)了性能,降低了道旁設(shè)備的安裝和維護(hù)成本[2]。
本文通過“北斗”衛(wèi)星信號,在已知部分軌跡的情況下,采用卡爾曼濾波處理數(shù)據(jù),通過最小二乘法擬合手段,實(shí)現(xiàn)了列車位置判定。
根據(jù)“北斗”衛(wèi)星在某線上的數(shù)據(jù),通過卡爾曼濾波處理,采用最小二乘法的擬合手段不斷迭代運(yùn)算,最終實(shí)現(xiàn)列車位置的判定。經(jīng)過卡爾曼濾波處理的列車運(yùn)行軌跡如圖1所示。
圖1 卡爾曼濾波處理的列車運(yùn)行軌跡
數(shù)據(jù)是軌道在A站到B站區(qū)間所在位置的部分經(jīng)緯度信息,它是通過放置在列車上的接收機(jī)根據(jù)其接收到的衛(wèi)星數(shù)據(jù)而確定的。因?yàn)榻邮諜C(jī)在接收數(shù)據(jù)時有時間間隔,所以不能掌握全部的軌跡信息。在已知部分軌跡之后,假設(shè)以A站之前一點(diǎn)為原點(diǎn),則軌跡上的任一點(diǎn)距A站都有一定的距離,只要能根據(jù)接收到的經(jīng)緯度信息確定當(dāng)前列車到原點(diǎn)的距離,就可以通過比較兩個值的大小來判斷列車所在位置的情況。
接收機(jī)以一定的速度每隔1 s接收一次數(shù)據(jù),從A站到B站共采集到52 137個數(shù)據(jù),列車沿軌道行進(jìn),接收到軌道經(jīng)緯度。設(shè)距原點(diǎn)的抽象距離為S,經(jīng)度為ylon,緯度為ylat,將每個采樣點(diǎn)調(diào)整系數(shù),同乘以0.001作為其對應(yīng)原點(diǎn)的抽象距離值,并存入到數(shù)組中。
這樣做有2個原因:(1)列車沿軌道行進(jìn),其所走距離隨著時間線性增長,方便一一對應(yīng)。(2)經(jīng)緯度的值是兩位數(shù),如果不乘以0.001,則后面在進(jìn)行方程擬合時精度會有問題。
設(shè)A站距原點(diǎn)的抽象距離為 S=0.001,則終點(diǎn)B站距原點(diǎn)為S=52.137,通過最小二乘法的擬合方式,分別設(shè)立ylon與S、yla t與S的一元二次方程。利用方程,通過給定的列車實(shí)際經(jīng)緯度值,求出擬合的S,值。因?yàn)镾與ylat,ylon都是一一對應(yīng)的,所以可以用擬合的S,找出其對應(yīng)的ylon加,和ylat,。通過比較與真實(shí)值間的誤差最小,獲得最優(yōu)的S值。
利用VS2008編程環(huán)境建立控制臺程序,編程語言為面向?qū)ο蟮腃++語言,結(jié)合mATLAB擬合函數(shù)最終達(dá)到功能實(shí)現(xiàn)。
MATLAB擬合程序[3]:
(1)將軌道數(shù)據(jù)的經(jīng)緯度值載入到MATLAB中。(2)劃分19個區(qū),利用曲線的最小二乘法分別進(jìn)行函數(shù)擬合,擬合的曲線選擇一元二次方程。并將最終擬合出來的一元二次方程的各項系數(shù)輸出到TXT文檔中。(3)調(diào)用cftoo l工具箱,查看擬合的精度是否符合要求。選擇任意區(qū)間進(jìn)行驗(yàn)證,圖2和圖3是針對第13區(qū)間的檢測結(jié)果。
相關(guān)系數(shù)R-square達(dá)到0.99以上,符合標(biāo)準(zhǔn)。
圖2 針對第13區(qū)的擬合曲線
圖3 針對第13區(qū)的擬合誤差
VS2008控制臺編程部分:數(shù)據(jù)讀入read_file函數(shù)。其功能是將所有數(shù)據(jù)讀入到動態(tài)二維數(shù)組f_data[idx][]中,其中idx表示位置S,f_data[idx][0],f_data[idx][1],f_data[idx][2]分別存儲擬合方程的二次項、一次項和常數(shù)項系數(shù)。
判斷列車所在區(qū)域的Suretrain函數(shù)。因?yàn)槊總€數(shù)據(jù)的經(jīng)緯度不同,根據(jù)這一特點(diǎn),利用不同的整數(shù)和小數(shù)進(jìn)行判定,只有在兩者都符合判定條件時,才能確定其所在區(qū)域。
給出所在區(qū)域的范圍read_fileZone函數(shù)。這部分主要是為了一旦實(shí)際給出的經(jīng)緯度值和數(shù)據(jù)庫里的值重合的話,就可以直接得到位置信息進(jìn)而省去擬合。此函數(shù)會根據(jù)所判定的區(qū)域給出開始和結(jié)束值,從而可以使程序在判斷位置時縮短范圍,由原來的50 000多條縮至最多4 213條數(shù)據(jù),最少103條數(shù)據(jù)(根據(jù)所在區(qū)域大小而定),大大節(jié)約了時間。
方程系數(shù)FitEqu函數(shù)。其功能是將mATLAB擬合好的方程各項系數(shù)調(diào)入到程序中供主程序?qū)崿F(xiàn)其具體算法。
判定列車方向的VECTOR函數(shù)。將列車實(shí)時讀取的數(shù)據(jù)存入到VECTOR中,通過前后數(shù)據(jù)的比對,判斷列車的行進(jìn)方向。如果S值增大,則代表方向是由A站到B站,反之亦然。
(1)將采集到的50 000多條數(shù)據(jù)讀入。(2)給定經(jīng)緯度值,先判定是否為采集的數(shù)據(jù)里面的點(diǎn),如果是則給出位置值并退出,如果不是則進(jìn)行擬合,直到求出最為精確的位置值為止。列車定位流程如圖4所示。
圖4 列車定位流程圖
定義二維動態(tài)數(shù)組f_datalon、f_datalat,令f_datalon[x][0],f_datalon[x][1],f_datalon[x][2]分別存一元二次方程的二次項、一次項和常數(shù)項系數(shù),而x則對應(yīng)這一經(jīng)緯度所在的S值。這樣通過一個數(shù)組就可以實(shí)現(xiàn)S,ylat, ylon的對應(yīng)了。具體的對應(yīng)方法如圖5所示。
圖5 列車位置與經(jīng)緯度的對應(yīng)方法
(1)根據(jù)卡爾曼濾波對數(shù)據(jù)進(jìn)行處理,把其中的盲點(diǎn)刪除。根據(jù)軌跡的經(jīng)緯度信息,按照其整數(shù)部分與小數(shù)部分的區(qū)別,將數(shù)據(jù)劃分為19個數(shù)據(jù)區(qū)。(2)給定一個數(shù)據(jù),判斷其所屬區(qū)域,在小區(qū)域中進(jìn)行擬合判定。
定義在A站前方的一點(diǎn)為坐標(biāo)原點(diǎn),其它的點(diǎn)都是路徑距離。則可判定,如果都是從A站到B站,則S值大者為前車,否則為后車。如果從B站到A站,則S值小者為前車,否則為后車。
對于列車的行進(jìn)方向,是通過容器接收到的列車值的變化趨勢來判定的。如果趨勢是增大的趨勢,則證明是從A站到B站,反之亦然。
列車位置的確定是通過在每個區(qū)間上根據(jù)其所持有的數(shù)據(jù)按照緯度與S,經(jīng)度與S分別采用最小二乘法擬合曲線方程,經(jīng)過根的不斷篩選逼近來實(shí)現(xiàn)的。其中擬合函數(shù)是通過MATLAB實(shí)現(xiàn)的。
曲線擬合[4]的基本思想是根據(jù)已知的數(shù)據(jù)點(diǎn)yi=f(xi)(i=0, 1, …, n)選擇可以進(jìn)行擬合的函數(shù)類,再通過最小二乘法最終確定所要使用的擬合函數(shù)。其構(gòu)造原理如下。
設(shè)所需要的函數(shù)為 :
為確定上式系數(shù)a0, a1, …, am的值,需要考慮f(x)與x)在節(jié)點(diǎn)x0, x1, …, xn處差的平方加權(quán)和:
式(3)中,wk(k=0, 1, …, n)為給定的數(shù)。通過極值的必要條件可知:化簡后得到a0, a1,…, am的線性方程組的值:
其對應(yīng)方程為公式(8)。
多項式回歸的判斷準(zhǔn)則是保證實(shí)際數(shù)據(jù)域計算數(shù)據(jù)之間差的平方和最小。
方程擬合完成以后,根據(jù)對應(yīng)關(guān)系,找到s對應(yīng)的ylat, ylon,然后根據(jù)擬合方程ylat =f(s),求出解s1,, s2,,并通過對應(yīng)關(guān)系分別找到對應(yīng)的ylat,, ylon, ,比較(ylon,-ylon,)2+ (ylat,-ylat,)2,最小的值即為所求S值,經(jīng)度與緯度采用的方法是相同的。
目前,測試的數(shù)據(jù)只通過緯度擬合就能精確地求出列車位置,采用同樣的辦法,將經(jīng)度與緯度的擬合結(jié)果進(jìn)行比對,可以求出精確的位置值。
該設(shè)計是根據(jù)在已知部分不完整軌跡的情況下,通過最小二乘法擬合,采用自身算法實(shí)現(xiàn)的列車定位,只利用了列車的經(jīng)緯度信息。
對于列車方向的判定是通過 值的變化趨勢實(shí)現(xiàn)的。本方法所求得的S值只是抽象意義上的,但是因?yàn)槠鋵?yīng)了實(shí)際的經(jīng)緯度值,所以真實(shí)的位置是可以確定的。
在保證列車能夠精確地獲得經(jīng)緯度的情況下,此種方法可以延伸應(yīng)用到其它軌跡已知的鐵路上。
[1]李 凱.青藏線列車衛(wèi)星定位系統(tǒng)技術(shù)方案研究[J]. 鐵道通信信號應(yīng)用,2003,39(4):18-20.
[2] 蘇曉聲.基于衛(wèi)星導(dǎo)航系統(tǒng)的列車控制[J].鐵道知識,2005(4):30-31.
[3] 高會生,劉童娜,李聰聰. MATLAB實(shí)用教程[M]. 2版.北京:電子工業(yè)出版社,2011:356-364.
[4] 王兵團(tuán),張作泉,趙平福.數(shù)值分析簡明教程[M].北京:北京交通大學(xué)出版社,2011:97-99.