劉宏建,王明孝,吳超輝,蔡中祥
(1.信息工程大學(xué) 地理空間信息學(xué)院, 鄭州 400052; 2. 32178部隊科創(chuàng)中心, 北京 100020)
常規(guī)武器裝備靶場試驗中,無人機、直升機、導(dǎo)彈等由地面測控網(wǎng)跟蹤、測量和控制的飛行目標(biāo)稱為高速測控目標(biāo)[1]。有別于常規(guī)運動目標(biāo),高速測控目標(biāo)的運動速度快,地面測控網(wǎng)測量獲得的武器目標(biāo)實時數(shù)據(jù)幀率高,單個試驗?zāi)繕?biāo)幀率可高達(dá)20幀/秒[2-3]。高速測控目標(biāo)視圖控制是指:在靶場指控顯示系統(tǒng)中,通過對目標(biāo)在地圖活動視圖進(jìn)行實時控制,使測控試驗?zāi)繕?biāo)在場景中獲得最佳顯示效果[1]。
高速測控目標(biāo)視圖自適應(yīng)控制是靶場試驗指控顯示系統(tǒng)的核心功能,目前國內(nèi)外對目標(biāo)視圖控制算法的研究歸納起來可總結(jié)如下:1) 大部分應(yīng)用基于不同的空間索引技術(shù)(四叉樹、BSP樹、KDB樹、CELL樹等),實現(xiàn)了單目標(biāo)視圖控制算法,但較少涉及多目標(biāo)全局視圖控制[4-7]。2) 有少部分應(yīng)用實現(xiàn)了單目標(biāo)和多目標(biāo)的視圖自適應(yīng)控制,但在實現(xiàn)時多采用單級地圖緩存和動態(tài)目標(biāo)顯示技術(shù)相結(jié)合的方法[8],這種方法在北斗、GPS動態(tài)監(jiān)控導(dǎo)航應(yīng)用中效果良好,但難以支持強實時性的高速測控目標(biāo)視圖控制應(yīng)用。因此,本文提出并實現(xiàn)了一種基于雙緩存模型的高速測控目標(biāo)視圖自適應(yīng)控制算法,較好地解決了上述方法的種種弊端,在實際應(yīng)用中具有較大意義。
高速測控目標(biāo)視圖實時控制包括兩種情況:一是焦點目標(biāo)跟蹤,即當(dāng)試驗?zāi)繕?biāo)接近當(dāng)前地圖活動視圖地理范圍的邊界時,根據(jù)目標(biāo)的運動趨勢,進(jìn)行地圖數(shù)據(jù)的預(yù)加載,當(dāng)運動目標(biāo)達(dá)到活動視圖邊界時,將目標(biāo)切換至視圖中央位置;二是多目標(biāo)全局視圖,即同時有多個被試或參試目標(biāo)時,既要保證所有目標(biāo)在當(dāng)前的地圖視圖內(nèi),又不能使其過于擁擠,需自適應(yīng)調(diào)整地圖顯示比例尺,從而使多目標(biāo)顯控達(dá)到最佳效果。
從靶場試驗指控顯示的具體需求來看,焦點目標(biāo)跟蹤和多目標(biāo)全局視圖是兩個不同的概念,操作方式也不相同,但在算法實現(xiàn)的過程中,可以將焦點目標(biāo)跟蹤和多目標(biāo)全局視圖算法進(jìn)行融合處理,即采用統(tǒng)一的地圖視圖自適應(yīng)算法進(jìn)行一致處理。其原因如下:1) 從本質(zhì)上來講,焦點目標(biāo)跟蹤是多目標(biāo)全局視圖的特殊形式。當(dāng)多目標(biāo)全局視圖模式中的目標(biāo)數(shù)量n=1時,多目標(biāo)全局視圖即退化成為焦點目標(biāo)跟蹤的情況。2) 不管是焦點目標(biāo)跟蹤還是多目標(biāo)全局視圖,其核心都是對地圖數(shù)據(jù)的快速調(diào)度算法,即通過快速的基礎(chǔ)地理數(shù)據(jù)調(diào)度與刷新顯示來進(jìn)行視圖的動態(tài)切換。
高速測控目標(biāo)視圖自適應(yīng)控制算法的主要思路是:首先從靶場試驗測控網(wǎng)解析實時目標(biāo)信息,并判斷當(dāng)前數(shù)據(jù)幀是否合法,然后通過目標(biāo)軌跡判斷目標(biāo)運動趨勢,確定目標(biāo)活動視圖是否需要調(diào)整,最后預(yù)加載地圖數(shù)據(jù),當(dāng)目標(biāo)達(dá)到視圖閾值參數(shù)時,切換當(dāng)前視圖窗口并刷新地圖。
本文以AE(ESRI ArcGIS Engine)為試驗開發(fā)平臺,在Intel Core i7 CPU,主頻2.70GHz,內(nèi)存16GB,Win7操作系統(tǒng)環(huán)境下,對上述算法進(jìn)行了統(tǒng)計,結(jié)果如表1、表2所示。
根據(jù)表1、表2的統(tǒng)計數(shù)據(jù),可發(fā)現(xiàn)兩種現(xiàn)象:1) 在焦點目標(biāo)跟蹤的情況下,初始的地圖活動視圖比例尺大小是影響算法性能的一個重要因素,當(dāng)初始地圖活動比例尺大于1∶50 000時,對內(nèi)存和CPU資源的消耗迅速增大,逐漸累積至地圖無法再進(jìn)行刷新,同時導(dǎo)致界面無任何響應(yīng)。當(dāng)初始地圖活動比例尺小于1∶250 000時,算法運行過程中地圖刷新不受影響。這是由于比例尺的減小使當(dāng)前地圖活動視圖的地理范圍變大,進(jìn)而使地圖刷新的頻率大大下降,但這造成的結(jié)果就是使目標(biāo)顯示時無法觀察細(xì)部的地形地物。2) 在多目標(biāo)全局視圖的情況下,如果參試目標(biāo)數(shù)量n≥3,視圖自適應(yīng)控制算法運行3~4 min就會崩潰,而且隨著參試目標(biāo)的增加,算法可正常執(zhí)行的時間會越來越短。

表1 焦點目標(biāo)跟蹤運行統(tǒng)計表

表2 多目標(biāo)全局視圖運行統(tǒng)計表
產(chǎn)生這兩種現(xiàn)象的根本原因在于地圖的調(diào)度與刷新機制,AE的地圖刷新機制如下:首先獲取屏幕區(qū)域的地理范圍,利用空間索引從地理數(shù)據(jù)庫中快速獲取當(dāng)前屏幕范圍內(nèi)的地理實體要素,再將地理實體要素的坐標(biāo)轉(zhuǎn)換為屏幕坐標(biāo),然后用當(dāng)前屏幕窗口對地理實體數(shù)據(jù)進(jìn)行剪裁,剔除不需要繪制的地理實體,并將經(jīng)過剪裁的地物直接繪制至當(dāng)前屏幕。這種地圖調(diào)度與刷新機制,在實時性要求不是很高的情況下是可行的,但對于高速測控目標(biāo)視圖自適應(yīng)控制,目標(biāo)數(shù)據(jù)幀率高、運動速度快、視圖切換非常頻繁,就導(dǎo)致了地圖數(shù)據(jù)的調(diào)度和刷新成為算法的瓶頸。
綜上分析,AE的地圖調(diào)度與刷新機制已不適應(yīng)于高速測控目標(biāo)的視圖控制要求,為解決上述問題,本文提出并實現(xiàn)了基于雙緩存技術(shù)的目標(biāo)視圖自適應(yīng)控制算法。
顯示緩存技術(shù)的實質(zhì)是將大量數(shù)據(jù)的渲染從CPU端轉(zhuǎn)移到顯卡上,以充分利用顯卡的性能,減少CPU處理負(fù)荷,使得大量的動態(tài)數(shù)據(jù)以及高頻率刷新的操作可以在瞬間完成[2]。本文將顯示緩存分為地圖顯示緩存M和虛擬顯示緩存D1、D2。地圖顯示緩存M并不是一個實際的存儲區(qū)域,而是一個屏幕顯示接口指針,其作用是在緩存之間進(jìn)行切換。D1、D2是兩個和活動視圖屏幕顯示范圍相同的顯示緩存空間,如圖1所示。

圖1 雙緩存模型結(jié)構(gòu)框圖
TargetsExtent和TargetsExtent’為范圍小于虛擬屏幕的一個內(nèi)邊界。以焦點目標(biāo)跟蹤為例,假設(shè)地圖顯存M指向虛擬顯存D1,則當(dāng)試驗?zāi)繕?biāo)移動到TargetsExtent邊界時,通過遍歷試驗?zāi)繕?biāo)圖形緩存容器Graphics Containter中的軌跡數(shù)據(jù),計算其相對于目標(biāo)視圖邊界的運動趨勢,如果目標(biāo)仍然向視圖邊界繼續(xù)運動,則通過IScreenDispaly接口開始重新組織地理數(shù)據(jù),并將其放入虛擬顯存D2;同時,在緩存D1上,試驗?zāi)繕?biāo)的移動仍然在進(jìn)行,當(dāng)試驗?zāi)繕?biāo)移動到地地圖活動視圖范圍GeoExtent0時,虛擬顯存D2上新的地理數(shù)據(jù)組織已經(jīng)準(zhǔn)備完畢,此時將地圖顯存M指向虛擬顯存D2,就可以實現(xiàn)地圖視圖的快速切換(見圖2)。對于多目標(biāo)全局視圖,其過程類似,但在判斷目標(biāo)運動趨勢時,需要考慮兩個邊界,即目標(biāo)邊界TargetsExtent和目標(biāo)視圖最小邊界TargetsExtent’。

圖2 緩存切換與調(diào)度過程框圖
基于雙緩存的視圖自適應(yīng)控制算法實現(xiàn)流程如圖3所示。

圖3 目標(biāo)視圖自適應(yīng)控制算法流程框圖
步驟1利用UDP組播協(xié)議從靶場試驗測控通信網(wǎng)獲取目標(biāo)實時數(shù)據(jù)幀,解析目標(biāo)當(dāng)前數(shù)據(jù)幀,獲取試驗?zāi)繕?biāo)的目標(biāo)編號、經(jīng)緯度坐標(biāo)、靶場坐標(biāo)、姿態(tài)角、數(shù)據(jù)時間等信息;判斷實時數(shù)據(jù)幀是否合法,并進(jìn)行野值剔除與數(shù)據(jù)平滑(野值點剔除是通過對不同數(shù)據(jù)段設(shè)定不同的“振蕩閾值”,去除隨機測量誤差和野值點對算法的影響[2];平滑處理是利用正交函數(shù)系最小二乘擬合的方法[3]對實時數(shù)據(jù)幀進(jìn)行平滑,野值剔除與數(shù)據(jù)平滑的目的是為了提高算法魯棒性)。
步驟2計算目標(biāo)視圖范圍TargetsExtent,方法如下:
① 獲取地圖活動視圖范圍GeoExtent0,得到四個角點{G1,G2,G3,G4}={ (b1,l1),(b2,l2),(b3,l3),(b4,l4)},均為地理坐標(biāo)系中的坐標(biāo),需將其轉(zhuǎn)換為屏幕坐標(biāo)系下的像素坐標(biāo),設(shè)其為{S1,S2,S3,S4}= {(x1,y1),(x2,y2),(x3,y3),(x4,y4)},設(shè)目標(biāo)視圖范圍TargetsExtent在屏幕上的像素寬度和高度為ws,hs,則:
(1)
式(1)中的dw和dh是指目標(biāo)地圖符號的寬度和高度,由于目標(biāo)符號占據(jù)有一定大小的屏幕區(qū)域,GeoExtent0的范圍要大于TargetsExtent的范圍。在多目標(biāo)情況下,dw和dh取所有試驗?zāi)繕?biāo)地圖符號寬度和高度的最大值。


步驟3通過接口查詢獲取當(dāng)ActiveMapView的地圖顯示緩存控制接口和屏幕緩存控制接口初始化D1、D2,為D1、D2分配存儲存儲空間,并通過地圖顯示緩存控制接口,將當(dāng)前活動地圖窗口所有地理實體要素像素化,存入D1。
步驟4判斷當(dāng)前模式是焦點目標(biāo)跟蹤或是多目標(biāo)全局視圖,如果是焦點目標(biāo)跟蹤模式,轉(zhuǎn)步驟5處理;如果是多目標(biāo)全局視圖模式,則轉(zhuǎn)步驟8處理;如果未啟動地圖自適應(yīng)控制,則轉(zhuǎn)步驟1。
步驟5將當(dāng)前目標(biāo)數(shù)據(jù)幀中的目標(biāo)編號和焦點目標(biāo)編號進(jìn)行比對,如果當(dāng)前目標(biāo)是焦點目標(biāo),則遍歷試驗?zāi)繕?biāo)圖形緩存容器(Graphics Containter),獲取并更新目標(biāo)運動的位置數(shù)據(jù)和軌跡數(shù)據(jù)。
步驟6通過接口查詢,獲取當(dāng)前活動視圖范圍的空間拓?fù)洳僮魉阕?ITopyOperator接口對象),利用空間拓?fù)洳僮魉阕优袛嘣囼災(zāi)繕?biāo)是否在目標(biāo)視圖的地理范圍區(qū)域內(nèi)。如果目標(biāo)在TargetsExtent之內(nèi),轉(zhuǎn)步驟1;否則,計算焦點目標(biāo)軌跡的切線(偏航角),從而判斷試驗?zāi)繕?biāo)的運動趨勢,如果試驗?zāi)繕?biāo)繼續(xù)向TargetsExtent之外移動,則轉(zhuǎn)步驟7。
步驟7利用GeoExtent0的寬度、高度以及當(dāng)前目標(biāo)位置重新構(gòu)造地圖視圖活動范圍,并轉(zhuǎn)步驟11;
步驟8設(shè)武器裝備試驗?zāi)繕?biāo)數(shù)量為n,遍歷試驗?zāi)繕?biāo)圖形緩存容器,獲取所有目標(biāo)的當(dāng)前位置信息序列{P0,P1,P2,…,Pn},利用點集構(gòu)造多邊形Polygon,并計算其外接矩形Env′。獲取n個試驗?zāi)繕?biāo)的運動軌跡曲線,同時計算所有試驗?zāi)繕?biāo)偏航角序列{φ1,φ2,…,φn}。
步驟9獲取Env′的空間拓?fù)洳僮魉阕樱袛郋nv′同目標(biāo)視圖范圍TargetsExtent的關(guān)系,循環(huán)遍歷n個試驗?zāi)繕?biāo),判斷是否需要進(jìn)行虛擬顯存D1和D2的切換,方法如下:
①Env′ TargetsExtent,這種情況下,需判斷Env′與TargetsExtent的面積比值,本文從多次試驗中總結(jié)出了比例閾值為1/15,即外接矩形大小占據(jù)目標(biāo)視圖范圍的比例小于1/15時,則轉(zhuǎn)步驟10,啟動數(shù)據(jù)預(yù)加載;
②Env′ TargetsExtent,這種情況說明至少有一個目標(biāo)飛出了當(dāng)前視圖閾值邊界,繼續(xù)根據(jù)偏航角φ判斷目標(biāo)運動趨勢,進(jìn)而確定是否需要進(jìn)行地圖數(shù)據(jù)組織和顯示緩存切換。
步驟10啟動后臺線程,利用IScreenDisplay接口的地圖數(shù)據(jù)調(diào)度方法開始組織新的地理數(shù)據(jù),并將其拷貝至D2;
步驟11變換地圖緩M存指向的顯示緩存對象由D2指向D1,自動調(diào)整地圖比例尺,算法結(jié)束。
表3及表4是優(yōu)化后視圖自適應(yīng)控制算法的運行統(tǒng)計數(shù)據(jù)。

表3 優(yōu)化后焦點目標(biāo)跟蹤運行統(tǒng)計數(shù)據(jù)

表4. 優(yōu)化后多目標(biāo)全局視圖運行統(tǒng)計數(shù)據(jù)
1) 在焦點目標(biāo)跟蹤的情況下,經(jīng)過雙緩存算法優(yōu)化,初始地圖活動視圖比例尺同算法性能沒有明顯相關(guān)性,其對資源的累積消耗現(xiàn)象也得到了消除。
2) 在多目標(biāo)全局視圖的情況下,參試目標(biāo)數(shù)量n的大小同算法性能也無明顯相關(guān)性,不會隨著目標(biāo)的增多使算法變得不穩(wěn)定(相同硬件條件下,系統(tǒng)最大可承載參試目標(biāo)數(shù)量n≥8)。
3) 經(jīng)過雙緩存技術(shù)的優(yōu)化,目標(biāo)視圖自適應(yīng)控制算法在資源的初始消耗上有一定增加,這是用內(nèi)存資源換取地圖刷新時間的結(jié)果,這個代價是完全可以接受的。
4) 經(jīng)優(yōu)化后,目標(biāo)視圖自適應(yīng)控制算法魯棒性大大增強,8個目標(biāo)情況下,連續(xù)運行240 min,共顯示2 304 000個軌跡點,PF使用率從282 M增至301 M,增速平緩,整個過程中CPU使用率一直在20%上下浮動。