劉宏建,王明孝,吳超輝,蔡中祥
(1.信息工程大學(xué) 地理空間信息學(xué)院, 鄭州 400052; 2. 32178部隊(duì)科創(chuàng)中心, 北京 100020)
常規(guī)武器裝備靶場(chǎng)試驗(yàn)中,無(wú)人機(jī)、直升機(jī)、導(dǎo)彈等由地面測(cè)控網(wǎng)跟蹤、測(cè)量和控制的飛行目標(biāo)稱(chēng)為高速測(cè)控目標(biāo)[1]。有別于常規(guī)運(yùn)動(dòng)目標(biāo),高速測(cè)控目標(biāo)的運(yùn)動(dòng)速度快,地面測(cè)控網(wǎng)測(cè)量獲得的武器目標(biāo)實(shí)時(shí)數(shù)據(jù)幀率高,單個(gè)試驗(yàn)?zāi)繕?biāo)幀率可高達(dá)20幀/秒[2-3]。高速測(cè)控目標(biāo)視圖控制是指:在靶場(chǎng)指控顯示系統(tǒng)中,通過(guò)對(duì)目標(biāo)在地圖活動(dòng)視圖進(jìn)行實(shí)時(shí)控制,使測(cè)控試驗(yàn)?zāi)繕?biāo)在場(chǎng)景中獲得最佳顯示效果[1]。
高速測(cè)控目標(biāo)視圖自適應(yīng)控制是靶場(chǎng)試驗(yàn)指控顯示系統(tǒng)的核心功能,目前國(guó)內(nèi)外對(duì)目標(biāo)視圖控制算法的研究歸納起來(lái)可總結(jié)如下:1) 大部分應(yīng)用基于不同的空間索引技術(shù)(四叉樹(shù)、BSP樹(shù)、KDB樹(shù)、CELL樹(shù)等),實(shí)現(xiàn)了單目標(biāo)視圖控制算法,但較少涉及多目標(biāo)全局視圖控制[4-7]。2) 有少部分應(yīng)用實(shí)現(xiàn)了單目標(biāo)和多目標(biāo)的視圖自適應(yīng)控制,但在實(shí)現(xiàn)時(shí)多采用單級(jí)地圖緩存和動(dòng)態(tài)目標(biāo)顯示技術(shù)相結(jié)合的方法[8],這種方法在北斗、GPS動(dòng)態(tài)監(jiān)控導(dǎo)航應(yīng)用中效果良好,但難以支持強(qiáng)實(shí)時(shí)性的高速測(cè)控目標(biāo)視圖控制應(yīng)用。因此,本文提出并實(shí)現(xiàn)了一種基于雙緩存模型的高速測(cè)控目標(biāo)視圖自適應(yīng)控制算法,較好地解決了上述方法的種種弊端,在實(shí)際應(yīng)用中具有較大意義。
高速測(cè)控目標(biāo)視圖實(shí)時(shí)控制包括兩種情況:一是焦點(diǎn)目標(biāo)跟蹤,即當(dāng)試驗(yàn)?zāi)繕?biāo)接近當(dāng)前地圖活動(dòng)視圖地理范圍的邊界時(shí),根據(jù)目標(biāo)的運(yùn)動(dòng)趨勢(shì),進(jìn)行地圖數(shù)據(jù)的預(yù)加載,當(dāng)運(yùn)動(dòng)目標(biāo)達(dá)到活動(dòng)視圖邊界時(shí),將目標(biāo)切換至視圖中央位置;二是多目標(biāo)全局視圖,即同時(shí)有多個(gè)被試或參試目標(biāo)時(shí),既要保證所有目標(biāo)在當(dāng)前的地圖視圖內(nèi),又不能使其過(guò)于擁擠,需自適應(yīng)調(diào)整地圖顯示比例尺,從而使多目標(biāo)顯控達(dá)到最佳效果。
從靶場(chǎng)試驗(yàn)指控顯示的具體需求來(lái)看,焦點(diǎn)目標(biāo)跟蹤和多目標(biāo)全局視圖是兩個(gè)不同的概念,操作方式也不相同,但在算法實(shí)現(xiàn)的過(guò)程中,可以將焦點(diǎn)目標(biāo)跟蹤和多目標(biāo)全局視圖算法進(jìn)行融合處理,即采用統(tǒng)一的地圖視圖自適應(yīng)算法進(jìn)行一致處理。其原因如下:1) 從本質(zhì)上來(lái)講,焦點(diǎn)目標(biāo)跟蹤是多目標(biāo)全局視圖的特殊形式。當(dāng)多目標(biāo)全局視圖模式中的目標(biāo)數(shù)量n=1時(shí),多目標(biāo)全局視圖即退化成為焦點(diǎn)目標(biāo)跟蹤的情況。2) 不管是焦點(diǎn)目標(biāo)跟蹤還是多目標(biāo)全局視圖,其核心都是對(duì)地圖數(shù)據(jù)的快速調(diào)度算法,即通過(guò)快速的基礎(chǔ)地理數(shù)據(jù)調(diào)度與刷新顯示來(lái)進(jìn)行視圖的動(dòng)態(tài)切換。
高速測(cè)控目標(biāo)視圖自適應(yīng)控制算法的主要思路是:首先從靶場(chǎng)試驗(yàn)測(cè)控網(wǎng)解析實(shí)時(shí)目標(biāo)信息,并判斷當(dāng)前數(shù)據(jù)幀是否合法,然后通過(guò)目標(biāo)軌跡判斷目標(biāo)運(yùn)動(dòng)趨勢(shì),確定目標(biāo)活動(dòng)視圖是否需要調(diào)整,最后預(yù)加載地圖數(shù)據(jù),當(dāng)目標(biāo)達(dá)到視圖閾值參數(shù)時(shí),切換當(dāng)前視圖窗口并刷新地圖。
本文以AE(ESRI ArcGIS Engine)為試驗(yàn)開(kāi)發(fā)平臺(tái),在Intel Core i7 CPU,主頻2.70GHz,內(nèi)存16GB,Win7操作系統(tǒng)環(huán)境下,對(duì)上述算法進(jìn)行了統(tǒng)計(jì),結(jié)果如表1、表2所示。
根據(jù)表1、表2的統(tǒng)計(jì)數(shù)據(jù),可發(fā)現(xiàn)兩種現(xiàn)象:1) 在焦點(diǎn)目標(biāo)跟蹤的情況下,初始的地圖活動(dòng)視圖比例尺大小是影響算法性能的一個(gè)重要因素,當(dāng)初始地圖活動(dòng)比例尺大于1∶50 000時(shí),對(duì)內(nèi)存和CPU資源的消耗迅速增大,逐漸累積至地圖無(wú)法再進(jìn)行刷新,同時(shí)導(dǎo)致界面無(wú)任何響應(yīng)。當(dāng)初始地圖活動(dòng)比例尺小于1∶250 000時(shí),算法運(yùn)行過(guò)程中地圖刷新不受影響。這是由于比例尺的減小使當(dāng)前地圖活動(dòng)視圖的地理范圍變大,進(jìn)而使地圖刷新的頻率大大下降,但這造成的結(jié)果就是使目標(biāo)顯示時(shí)無(wú)法觀察細(xì)部的地形地物。2) 在多目標(biāo)全局視圖的情況下,如果參試目標(biāo)數(shù)量n≥3,視圖自適應(yīng)控制算法運(yùn)行3~4 min就會(huì)崩潰,而且隨著參試目標(biāo)的增加,算法可正常執(zhí)行的時(shí)間會(huì)越來(lái)越短。
表1 焦點(diǎn)目標(biāo)跟蹤運(yùn)行統(tǒng)計(jì)表
表2 多目標(biāo)全局視圖運(yùn)行統(tǒng)計(jì)表
產(chǎn)生這兩種現(xiàn)象的根本原因在于地圖的調(diào)度與刷新機(jī)制,AE的地圖刷新機(jī)制如下:首先獲取屏幕區(qū)域的地理范圍,利用空間索引從地理數(shù)據(jù)庫(kù)中快速獲取當(dāng)前屏幕范圍內(nèi)的地理實(shí)體要素,再將地理實(shí)體要素的坐標(biāo)轉(zhuǎn)換為屏幕坐標(biāo),然后用當(dāng)前屏幕窗口對(duì)地理實(shí)體數(shù)據(jù)進(jìn)行剪裁,剔除不需要繪制的地理實(shí)體,并將經(jīng)過(guò)剪裁的地物直接繪制至當(dāng)前屏幕。這種地圖調(diào)度與刷新機(jī)制,在實(shí)時(shí)性要求不是很高的情況下是可行的,但對(duì)于高速測(cè)控目標(biāo)視圖自適應(yīng)控制,目標(biāo)數(shù)據(jù)幀率高、運(yùn)動(dòng)速度快、視圖切換非常頻繁,就導(dǎo)致了地圖數(shù)據(jù)的調(diào)度和刷新成為算法的瓶頸。
綜上分析,AE的地圖調(diào)度與刷新機(jī)制已不適應(yīng)于高速測(cè)控目標(biāo)的視圖控制要求,為解決上述問(wèn)題,本文提出并實(shí)現(xiàn)了基于雙緩存技術(shù)的目標(biāo)視圖自適應(yīng)控制算法。
顯示緩存技術(shù)的實(shí)質(zhì)是將大量數(shù)據(jù)的渲染從CPU端轉(zhuǎn)移到顯卡上,以充分利用顯卡的性能,減少CPU處理負(fù)荷,使得大量的動(dòng)態(tài)數(shù)據(jù)以及高頻率刷新的操作可以在瞬間完成[2]。本文將顯示緩存分為地圖顯示緩存M和虛擬顯示緩存D1、D2。地圖顯示緩存M并不是一個(gè)實(shí)際的存儲(chǔ)區(qū)域,而是一個(gè)屏幕顯示接口指針,其作用是在緩存之間進(jìn)行切換。D1、D2是兩個(gè)和活動(dòng)視圖屏幕顯示范圍相同的顯示緩存空間,如圖1所示。
圖1 雙緩存模型結(jié)構(gòu)框圖
TargetsExtent和TargetsExtent’為范圍小于虛擬屏幕的一個(gè)內(nèi)邊界。以焦點(diǎn)目標(biāo)跟蹤為例,假設(shè)地圖顯存M指向虛擬顯存D1,則當(dāng)試驗(yàn)?zāi)繕?biāo)移動(dòng)到TargetsExtent邊界時(shí),通過(guò)遍歷試驗(yàn)?zāi)繕?biāo)圖形緩存容器Graphics Containter中的軌跡數(shù)據(jù),計(jì)算其相對(duì)于目標(biāo)視圖邊界的運(yùn)動(dòng)趨勢(shì),如果目標(biāo)仍然向視圖邊界繼續(xù)運(yùn)動(dòng),則通過(guò)IScreenDispaly接口開(kāi)始重新組織地理數(shù)據(jù),并將其放入虛擬顯存D2;同時(shí),在緩存D1上,試驗(yàn)?zāi)繕?biāo)的移動(dòng)仍然在進(jìn)行,當(dāng)試驗(yàn)?zāi)繕?biāo)移動(dòng)到地地圖活動(dòng)視圖范圍GeoExtent0時(shí),虛擬顯存D2上新的地理數(shù)據(jù)組織已經(jīng)準(zhǔn)備完畢,此時(shí)將地圖顯存M指向虛擬顯存D2,就可以實(shí)現(xiàn)地圖視圖的快速切換(見(jiàn)圖2)。對(duì)于多目標(biāo)全局視圖,其過(guò)程類(lèi)似,但在判斷目標(biāo)運(yùn)動(dòng)趨勢(shì)時(shí),需要考慮兩個(gè)邊界,即目標(biāo)邊界TargetsExtent和目標(biāo)視圖最小邊界TargetsExtent’。
圖2 緩存切換與調(diào)度過(guò)程框圖
基于雙緩存的視圖自適應(yīng)控制算法實(shí)現(xiàn)流程如圖3所示。
圖3 目標(biāo)視圖自適應(yīng)控制算法流程框圖
步驟1利用UDP組播協(xié)議從靶場(chǎng)試驗(yàn)測(cè)控通信網(wǎng)獲取目標(biāo)實(shí)時(shí)數(shù)據(jù)幀,解析目標(biāo)當(dāng)前數(shù)據(jù)幀,獲取試驗(yàn)?zāi)繕?biāo)的目標(biāo)編號(hào)、經(jīng)緯度坐標(biāo)、靶場(chǎng)坐標(biāo)、姿態(tài)角、數(shù)據(jù)時(shí)間等信息;判斷實(shí)時(shí)數(shù)據(jù)幀是否合法,并進(jìn)行野值剔除與數(shù)據(jù)平滑(野值點(diǎn)剔除是通過(guò)對(duì)不同數(shù)據(jù)段設(shè)定不同的“振蕩閾值”,去除隨機(jī)測(cè)量誤差和野值點(diǎn)對(duì)算法的影響[2];平滑處理是利用正交函數(shù)系最小二乘擬合的方法[3]對(duì)實(shí)時(shí)數(shù)據(jù)幀進(jìn)行平滑,野值剔除與數(shù)據(jù)平滑的目的是為了提高算法魯棒性)。
步驟2計(jì)算目標(biāo)視圖范圍TargetsExtent,方法如下:
① 獲取地圖活動(dòng)視圖范圍GeoExtent0,得到四個(gè)角點(diǎn){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)地圖符號(hào)的寬度和高度,由于目標(biāo)符號(hào)占據(jù)有一定大小的屏幕區(qū)域,GeoExtent0的范圍要大于TargetsExtent的范圍。在多目標(biāo)情況下,dw和dh取所有試驗(yàn)?zāi)繕?biāo)地圖符號(hào)寬度和高度的最大值。
步驟3通過(guò)接口查詢獲取當(dāng)ActiveMapView的地圖顯示緩存控制接口和屏幕緩存控制接口初始化D1、D2,為D1、D2分配存儲(chǔ)存儲(chǔ)空間,并通過(guò)地圖顯示緩存控制接口,將當(dāng)前活動(dòng)地圖窗口所有地理實(shí)體要素像素化,存入D1。
步驟4判斷當(dāng)前模式是焦點(diǎn)目標(biāo)跟蹤或是多目標(biāo)全局視圖,如果是焦點(diǎn)目標(biāo)跟蹤模式,轉(zhuǎn)步驟5處理;如果是多目標(biāo)全局視圖模式,則轉(zhuǎn)步驟8處理;如果未啟動(dòng)地圖自適應(yīng)控制,則轉(zhuǎn)步驟1。
步驟5將當(dāng)前目標(biāo)數(shù)據(jù)幀中的目標(biāo)編號(hào)和焦點(diǎn)目標(biāo)編號(hào)進(jìn)行比對(duì),如果當(dāng)前目標(biāo)是焦點(diǎn)目標(biāo),則遍歷試驗(yàn)?zāi)繕?biāo)圖形緩存容器(Graphics Containter),獲取并更新目標(biāo)運(yùn)動(dòng)的位置數(shù)據(jù)和軌跡數(shù)據(jù)。
步驟6通過(guò)接口查詢,獲取當(dāng)前活動(dòng)視圖范圍的空間拓?fù)洳僮魉阕?ITopyOperator接口對(duì)象),利用空間拓?fù)洳僮魉阕优袛嘣囼?yàn)?zāi)繕?biāo)是否在目標(biāo)視圖的地理范圍區(qū)域內(nèi)。如果目標(biāo)在TargetsExtent之內(nèi),轉(zhuǎn)步驟1;否則,計(jì)算焦點(diǎn)目標(biāo)軌跡的切線(偏航角),從而判斷試驗(yàn)?zāi)繕?biāo)的運(yùn)動(dòng)趨勢(shì),如果試驗(yàn)?zāi)繕?biāo)繼續(xù)向TargetsExtent之外移動(dòng),則轉(zhuǎn)步驟7。
步驟7利用GeoExtent0的寬度、高度以及當(dāng)前目標(biāo)位置重新構(gòu)造地圖視圖活動(dòng)范圍,并轉(zhuǎn)步驟11;
步驟8設(shè)武器裝備試驗(yàn)?zāi)繕?biāo)數(shù)量為n,遍歷試驗(yàn)?zāi)繕?biāo)圖形緩存容器,獲取所有目標(biāo)的當(dāng)前位置信息序列{P0,P1,P2,…,Pn},利用點(diǎn)集構(gòu)造多邊形Polygon,并計(jì)算其外接矩形Env′。獲取n個(gè)試驗(yàn)?zāi)繕?biāo)的運(yùn)動(dòng)軌跡曲線,同時(shí)計(jì)算所有試驗(yàn)?zāi)繕?biāo)偏航角序列{φ1,φ2,…,φn}。
步驟9獲取Env′的空間拓?fù)洳僮魉阕?,判斷Env′同目標(biāo)視圖范圍TargetsExtent的關(guān)系,循環(huán)遍歷n個(gè)試驗(yàn)?zāi)繕?biāo),判斷是否需要進(jìn)行虛擬顯存D1和D2的切換,方法如下:
①Env′ TargetsExtent,這種情況下,需判斷Env′與TargetsExtent的面積比值,本文從多次試驗(yàn)中總結(jié)出了比例閾值為1/15,即外接矩形大小占據(jù)目標(biāo)視圖范圍的比例小于1/15時(shí),則轉(zhuǎn)步驟10,啟動(dòng)數(shù)據(jù)預(yù)加載;
②Env′ TargetsExtent,這種情況說(shuō)明至少有一個(gè)目標(biāo)飛出了當(dāng)前視圖閾值邊界,繼續(xù)根據(jù)偏航角φ判斷目標(biāo)運(yùn)動(dòng)趨勢(shì),進(jìn)而確定是否需要進(jìn)行地圖數(shù)據(jù)組織和顯示緩存切換。
步驟10啟動(dòng)后臺(tái)線程,利用IScreenDisplay接口的地圖數(shù)據(jù)調(diào)度方法開(kāi)始組織新的地理數(shù)據(jù),并將其拷貝至D2;
步驟11變換地圖緩M存指向的顯示緩存對(duì)象由D2指向D1,自動(dòng)調(diào)整地圖比例尺,算法結(jié)束。
表3及表4是優(yōu)化后視圖自適應(yīng)控制算法的運(yùn)行統(tǒng)計(jì)數(shù)據(jù)。
表3 優(yōu)化后焦點(diǎn)目標(biāo)跟蹤運(yùn)行統(tǒng)計(jì)數(shù)據(jù)
表4. 優(yōu)化后多目標(biāo)全局視圖運(yùn)行統(tǒng)計(jì)數(shù)據(jù)
1) 在焦點(diǎn)目標(biāo)跟蹤的情況下,經(jīng)過(guò)雙緩存算法優(yōu)化,初始地圖活動(dòng)視圖比例尺同算法性能沒(méi)有明顯相關(guān)性,其對(duì)資源的累積消耗現(xiàn)象也得到了消除。
2) 在多目標(biāo)全局視圖的情況下,參試目標(biāo)數(shù)量n的大小同算法性能也無(wú)明顯相關(guān)性,不會(huì)隨著目標(biāo)的增多使算法變得不穩(wěn)定(相同硬件條件下,系統(tǒng)最大可承載參試目標(biāo)數(shù)量n≥8)。
3) 經(jīng)過(guò)雙緩存技術(shù)的優(yōu)化,目標(biāo)視圖自適應(yīng)控制算法在資源的初始消耗上有一定增加,這是用內(nèi)存資源換取地圖刷新時(shí)間的結(jié)果,這個(gè)代價(jià)是完全可以接受的。
4) 經(jīng)優(yōu)化后,目標(biāo)視圖自適應(yīng)控制算法魯棒性大大增強(qiáng),8個(gè)目標(biāo)情況下,連續(xù)運(yùn)行240 min,共顯示2 304 000個(gè)軌跡點(diǎn),PF使用率從282 M增至301 M,增速平緩,整個(gè)過(guò)程中CPU使用率一直在20%上下浮動(dòng)。