李彥龍,劉 建,孟 凡
(1.91404部隊裝備部,河北 秦皇島066001;2.中國船舶重工集團(tuán)公司第七二四研究所,南京211153)
?
基于OpenGL事件驅(qū)動的雷達(dá)目標(biāo)仿真系統(tǒng)
李彥龍1,劉建2,孟凡2
(1.91404部隊裝備部,河北 秦皇島066001;2.中國船舶重工集團(tuán)公司第七二四研究所,南京211153)
簡要介紹了OpenGL核心庫、實用工具函數(shù)庫在雷達(dá)目標(biāo)仿真系統(tǒng)中的應(yīng)用。提出一種基于事件驅(qū)動的雷達(dá)目標(biāo)仿真系統(tǒng)的實現(xiàn)方法。應(yīng)用該方法實現(xiàn)的仿真案例不僅具有友好的人機交互,而且在多任務(wù)操作系統(tǒng)中運行性能更加穩(wěn)定。
事件驅(qū)動; 雷達(dá)目標(biāo)仿真;OpenGL
在近現(xiàn)代戰(zhàn)爭中,雷達(dá)在遠(yuǎn)距離發(fā)現(xiàn)和定位目標(biāo)方面發(fā)揮著越來越重要的作用,被譽為現(xiàn)代戰(zhàn)爭的“眼睛”。雷達(dá)的顯控分系統(tǒng)實時顯示探測到目標(biāo)的原始視頻,實時刷新目標(biāo)的方位、距離等重要信息。同時,顯控分系統(tǒng)作為整個雷達(dá)的終端還需要完成對整部設(shè)備內(nèi)各分系統(tǒng)的控制,是整個雷達(dá)系統(tǒng)和操作員的交互平臺[1]。因此,雷達(dá)顯控分系統(tǒng)的仿真不僅可以作為雷達(dá)模擬器通過對雷達(dá)系統(tǒng)的虛擬操作完成訓(xùn)練任務(wù),也可以作為雷達(dá)系統(tǒng)的重要仿真系統(tǒng),與作戰(zhàn)系統(tǒng)其他設(shè)備配合完成各種作戰(zhàn)任務(wù)[2]。
近年來,雷達(dá)系統(tǒng)仿真技術(shù)不斷發(fā)展,其需求量不斷增大。目標(biāo)模擬功能在雷達(dá)顯控分系統(tǒng)中發(fā)揮出越來越重要的作用。該功能可以為驗證數(shù)據(jù)處理算法提供理想的模擬試驗環(huán)境。目前,在用的早期開發(fā)的一些仿真系統(tǒng)存在運行資源調(diào)度不合理、操作繁瑣、可靠性差等問題。本文采用OpenGL的事件驅(qū)動交互功能,設(shè)計了雷達(dá)目標(biāo)仿真系統(tǒng)。實現(xiàn)的系統(tǒng)可靠性高,通用性強,有很好的可移植性。通過此方法模擬出的目標(biāo)更加接近于真實目標(biāo)。同時,該方法開發(fā)的成本低廉。
所謂事件驅(qū)動,即跟隨當(dāng)前時間點上出現(xiàn)的事件,調(diào)用可用資源執(zhí)行相關(guān)的任務(wù),使出現(xiàn)的任務(wù)得以解決。從事件的角度來說,事件驅(qū)動程序的基本結(jié)構(gòu)由事件收集器、事件發(fā)送器和事件處理器組成。事件收集器專門負(fù)責(zé)收集所有事件,如鍵盤、鼠標(biāo)事件。事件發(fā)送器負(fù)責(zé)將收集器收集到的事件分發(fā)到目標(biāo)對象中。事件處理器做具體的事件響應(yīng)工作。對于框架使用者來說,能看到的是事件處理器。
由于windows本身是基于事件驅(qū)動模型的,所有的窗體和程序所對應(yīng)的類都有一個事件表,用來綁定事件和被調(diào)用函數(shù)。近年來隨著信息技術(shù)的飛速發(fā)展,事件驅(qū)動機制廣泛應(yīng)用于計算機軟件編程領(lǐng)域。本文應(yīng)用了該機制并結(jié)合OpenGL的事件驅(qū)動交互功能設(shè)計了一種雷達(dá)目標(biāo)仿真方法。
OpenGL的全稱是“OpenGraphicsLibrary”,即“開放性圖形庫”。它為程序開發(fā)人員定義了一個跨編程語言、跨平臺的編程接口規(guī)格的專業(yè)的圖形程序接口,是一個功能強大、調(diào)用方便的底層3D圖形函數(shù)庫。OpenGL具有高圖形質(zhì)量、高性能、高穩(wěn)定性的特點,并具有充分的可擴(kuò)展性。其中,OpenGL的GLUT(OpenGLUtilityToolkit,OpenGL實用函數(shù)工具包)函數(shù)庫可以設(shè)置各種消息處理函數(shù),而且與平臺無關(guān),主要包括窗口初始化功能、事件處理、窗口和菜單管理、回調(diào)函數(shù)注冊和幾何建模功能[3-4]。
在GLUT中有20個回調(diào)函數(shù)用于響應(yīng)用戶事件。最重要的回調(diào)函數(shù)是glutDisplayFunc。當(dāng)GLUT認(rèn)為需要重新顯示窗口內(nèi)容時都將執(zhí)行這一函數(shù)注冊的回調(diào)函數(shù)。另外一些重要的回調(diào)函數(shù)注冊函數(shù)有:函數(shù)glutReshapeFunc用于注冊窗口大小改變這一事件發(fā)生時GLUT將調(diào)用的函數(shù),glutKeyboardFunc和glutMouseFunc用于注冊鍵盤和鼠標(biāo)事件發(fā)生時的回調(diào)函數(shù)。這兩個函數(shù)主要用于人機交互處理。在沒有其他事件處理時,GLUT將調(diào)用函數(shù)glutldleFunc注冊的函數(shù),而函數(shù)glutTimerFunc則注冊處理定時器事件的函數(shù)。
1.1基于事件驅(qū)動的交互控制實現(xiàn)原理
雷達(dá)仿真系統(tǒng)中,人機的交互通常借助于鍵盤、鼠標(biāo)或操縱球等硬件輸入方式。在OpenGL程序中,交互設(shè)備輸入有GLUT中的子程序處理。GLUT中有響應(yīng)從標(biāo)準(zhǔn)輸入設(shè)備事件的函數(shù),對每一種設(shè)備指定一個回調(diào)函數(shù)來處理從該設(shè)備發(fā)生的輸入。本方案通過事件驅(qū)動方式調(diào)用GLUT函數(shù)庫響應(yīng)鍵盤、鼠標(biāo)事件,實現(xiàn)人機交互。
對某一區(qū)域開窗顯示是雷達(dá)目標(biāo)仿真系統(tǒng)的一個重要功能。該仿真系統(tǒng)中使用開窗功能可以更加清楚地觀察到模擬目標(biāo)運行的軌跡。當(dāng)雷達(dá)操作員需要重點放大顯示某一區(qū)域時,可以根據(jù)當(dāng)前鼠標(biāo)位置和鍵盤輸入執(zhí)行開窗顯示(B顯)功能。假設(shè)當(dāng)前鼠標(biāo)位置為(xm,ym),當(dāng)操作人員單擊鍵盤的Ctrl+↑,可實現(xiàn)以(xm,ym)為中心的扇形區(qū)域N倍放大。
對于鍵盤輸入,本仿真系統(tǒng)用以下函數(shù)指定當(dāng)鍵盤上的一個鍵被按下時調(diào)用的函數(shù):glutKeyboardFunc(keyFun)。被指定的函數(shù)有3個參數(shù):keyFun(GLubytekey、GLintxMouse和GLintyMouse),其中參數(shù)key為鍵盤字符值或?qū)?yīng)的ASCII碼,(xMouse,yMouse)為當(dāng)前鼠標(biāo)位置。當(dāng)指定的鍵被按下后就可以用鼠標(biāo)位置來調(diào)用開窗顯示的功能。交互控制實現(xiàn)流程圖如圖1所示。
圖1 交互控制實現(xiàn)流程圖
系統(tǒng)通過設(shè)置GLUT函數(shù)庫的鍵盤回調(diào)注冊函數(shù)來實現(xiàn)對鍵盤事件的響應(yīng)。系統(tǒng)內(nèi)部通過OpenGL幾何變換函數(shù)實現(xiàn)對相應(yīng)扇形區(qū)域的放大顯示。OpenGL中的幾何變換是通過齊次坐標(biāo)系下變換矩陣來實現(xiàn)的。上述N倍放大扇形區(qū)域采用的變換矩陣為
(1)
OpenGL核心庫中提供了距離單元和方位單元上的平移、縮放和旋轉(zhuǎn)的變換控制函數(shù)。開窗顯示可以基于OpenGL的幾何變換函數(shù)來實現(xiàn):首先通過函數(shù)glTranslatef(-xm,-ym,0)將扇形區(qū)域中心點(xm,ym)平移到坐標(biāo)原點位置;然后通過函數(shù)glScalef(N,N,1.0)將扇形區(qū)域參照坐標(biāo)原點放大N倍,N根據(jù)具體需要設(shè)置;最后通過函數(shù)glTranslatef(xm,ym,0)將扇形區(qū)域中心點平移到原來位置
1.2仿真系統(tǒng)坐標(biāo)變換
雷達(dá)顯示器的種類很多,其中使用最廣泛的是平面顯示器。平面顯示器提供了360°范圍內(nèi)全部平面信息,因此也叫全景顯示器或環(huán)視顯示器,簡稱PPI(平面位置顯示)顯示器或P型顯示器。對于雷達(dá)PPI顯示器,一般以正北方向為0°,掃描線沿順時針旋轉(zhuǎn)。 因此,雷達(dá)掃描的坐標(biāo)系如圖2所示,目標(biāo)參數(shù)表示為(D,θ),其中D表示目標(biāo)距離,θ 表示目標(biāo)方位角[5]。
圖2 雷達(dá)掃描坐標(biāo)系
屏幕中心為原點(0, 0,0),x軸水平向右,y軸垂直向上, z軸正向指向屏幕外側(cè)。對于兩坐標(biāo)雷達(dá)來說,使用二維笛卡爾坐標(biāo)系,即屏幕中心坐標(biāo)為(0,0),窗口范圍是(-1,-1)到(1,1),如圖3所示。
圖3 OpenGL二維笛卡爾坐標(biāo)系
在雷達(dá)PPI顯示器上顯示目標(biāo),首先需要實現(xiàn)雷達(dá)掃描坐標(biāo)系到OpenGL二維笛卡爾坐標(biāo)系的變換。假設(shè)雷達(dá)掃描坐標(biāo)系中目標(biāo)參數(shù)為(D,θ),則對應(yīng)到OpenGL的二維笛卡爾坐標(biāo)系中的(x,y)值的轉(zhuǎn)換公式如下:
(2)
其中Dmax為雷達(dá)當(dāng)前量程。
1.3目標(biāo)仿真的實現(xiàn)步驟與結(jié)果
雷達(dá)目標(biāo)仿真系統(tǒng)中目標(biāo)的仿真為試驗雷達(dá)系統(tǒng)各項功能的驗證提供了基本平臺,尤其適用于驗證數(shù)據(jù)處理不同算法的運行效果。根據(jù)上述原理在本系統(tǒng)中模擬出了多種比較典型的運動目標(biāo)航路。
利用OpenGL核心庫中的繪圖函數(shù)進(jìn)行目標(biāo)的仿真繪制。繪制步驟如下:
(1) 設(shè)定目標(biāo)初始值;
(2) 根據(jù)運動學(xué)公式(3)、(4)、(5)、(6),對模擬目標(biāo)在各個時刻的參數(shù)進(jìn)行計算,最后得出一個輸出結(jié)果。
(3)
(4)
(5)
(6)
其中,Sx表示目標(biāo)切向位移,Sy表示目標(biāo)法向位移,Vx表示目標(biāo)切向速度,Vy表示目標(biāo)法向速度,ax表示目標(biāo)切向加速度,ay表示目標(biāo)法向加速度。瞬時的法向速度永遠(yuǎn)為0,因此不需要計算。
(1) 在計算出模擬目標(biāo)的各個時刻的參數(shù)后,將目標(biāo)的方位、距離參數(shù)以消息的方式傳給CPU;
(2) 根據(jù)實際需要設(shè)置目標(biāo)顯示的顏色和大小,通過GLUT調(diào)用繪制函數(shù),根據(jù)接收到的參數(shù)信息完成對目標(biāo)的繪制。其相應(yīng)仿真代碼框架如下:
glBegin(GL_POINTS);//開始繪制點集
glVertex2f(x1,y1);
……
glVertex2f(xn,yn);
glEnd();
在本試驗中,目標(biāo)初始方位300°,初始距離為22.3km,x方向速度為300m/s,y方向速度為0m/s,分別模擬了勻速直航和蛇形運動兩種運動形式。
首先根據(jù)初始值在MATLAB環(huán)境中實現(xiàn)了目標(biāo)航跡的仿真,效果如圖4、圖5所示。將目標(biāo)的初始值應(yīng)用于本案例中,實現(xiàn)的效果如圖6、圖7所示。通過
圖4 采用本文方法實現(xiàn)勻速直航仿真圖
圖5 采用本文方法實現(xiàn)蛇形運動仿真圖
圖6 采用本文方法的勻速直航實現(xiàn)效果圖
圖7 采用本文方法的蛇形運動實現(xiàn)效果圖
在仿真環(huán)境和真實案例中的應(yīng)用效果可以看出該方法可行。試驗表明,本文提出的實現(xiàn)方法在多任務(wù)操作系統(tǒng)下可以模擬多種復(fù)雜的雷達(dá)目標(biāo)航路,取得了良好的效果,為雷達(dá)數(shù)據(jù)處理算法提供了可靠的測試環(huán)境。
本文提出了利用OpenGL實用工具函數(shù)庫GLUT實現(xiàn)基于事件驅(qū)動的雷達(dá)目標(biāo)仿真系統(tǒng)的思想,對該系統(tǒng)中兩個重要的功能進(jìn)行了介紹。試驗結(jié)果表明,本文提出的實現(xiàn)方法可以對雷達(dá)目標(biāo)仿真系統(tǒng)的基本功能進(jìn)行仿真,實現(xiàn)了友好的人機交互效果。該系統(tǒng)為驗證數(shù)據(jù)處理算法提供了理想的試驗環(huán)境,對雷達(dá)系統(tǒng)仿真的開發(fā)提供了新的思路。
[1]丁鷺飛, 陳建春. 雷達(dá)原理[M]. 北京: 電子工業(yè)出版社,2009:268-295.
[2]何永喜,張國兵,張旗. 基于OpenGL技術(shù)的雷達(dá)終端顯示設(shè)計與仿真[J]. 信息化研究, 2012.4,38(2)
[3]DaveShreiner,MasonWoo,JackieNeider,TomDavis.OpenGL編程指南 [M]. 6版. 北京:人民郵電出版社,2008:469-472.
[4]DonaldHearn,MPaulineBaker. 計算機圖形學(xué)[M]. 3版. 北京:電子工業(yè)出版社,2009:101-122.
[5]MerrillISkolnik. 雷達(dá)手冊[M]. 北京: 電子工業(yè)出版社,2010:162-171.
AnOpenGLevent-drivenradartargetsimulationsystem
LIYan-long1,LIUJian2,MENGFan2
(1.EquipmentDepartmentofUnit91404ofthePLANavy,Qinhuangdao066001,China;2.No.724ResearchInstituteofCSIC,Nanjing211153)
TheapplicationsoftheOpenGLcorelibraryandtheutilitytoolfunctionlibraryinradartargetsimulationsystemarebrieflyintroduced.Animplementationmethodoftheevent-drivenradartargetsimulationsystemisproposed.Thesimulationsystemsinsomecaseshavefriendlyman-machineinteractionandmorestableoperationperformanceinthemulti-taskoperatingsystemthroughthismethod.
eventdriven;radartargetsimulation;OpenGL
2016-03-11;
2016-05-20
李彥龍(1981-),男,助理工程師,碩士,研究方向:雷達(dá)裝備試驗及保障;劉建(1982-),工程師,研究方向:數(shù)據(jù)處理與數(shù)據(jù)融合;孟凡(1982-),工程師,碩士,研究方向:雷達(dá)數(shù)據(jù)處理。
TN955.2
A
1009-0401(2016)03-0032-04