沈小侖 劉先博
摘要:該文基于STK和STK/Connect模塊構(gòu)建了地面雷達數(shù)據(jù)處理軟件測試平臺。以VC++6.0為平臺開發(fā)了地面雷達數(shù)據(jù)處理軟件測試軟件,該軟件通過STK/Connect模塊發(fā)送指令,捕獲在STK場景軟件中地面雷達探測到飛行類目標的徑向距離、方位和俯仰角等觀測值,并對這些觀測值施加噪聲后轉(zhuǎn)發(fā)給數(shù)據(jù)處理軟件,實現(xiàn)了雷達數(shù)據(jù)處理軟件仿真測試平臺的搭建。
關(guān)鍵詞: 雷達;數(shù)據(jù)處理;軟件測試
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)01-0015-04
Design of STK-Based Testing Platform for Ground Radar Data Processing Software
SHEN Xiao-lun,LIU Xian-bo
(China Electronics Technology Group Corporation No.38 Research Institute, Hefei 230088,China )
Abstract: In this paper, ground radar data processing software testing platform is constructed based on the module of STK and STK/Connect.Developed by VC++6.0, the testing platform sends commands to capture the observations of flying targets such as radial distance, azimuth and pitching angle that detected by ground radar, then adds noise to these observations to simulate the real battleground environment, send the observations to the data processing system, so the radar processing software simulation testing platform is realized.
Key words: radar; data processing; software testing
衛(wèi)星工具軟件( Satellite Tool K it)是美國AGI公司推出的一款用于航天產(chǎn)業(yè)設(shè)計和分析的專業(yè)衛(wèi)星分析工具軟件,它支持航天任務(wù)周期的全過程, 包括概念、需求、設(shè)計、制造、測試、發(fā)射、運行和應用等。STK 軟件起初多用于衛(wèi)星軌道分析, 最初的應用集中在航天、情報、雷達、電子對抗、導彈防御等方面。但隨著軟件的不斷升級, 其應用也得到了進一步的深入, STK現(xiàn)已逐漸擴展成為分析和執(zhí)行陸、海、空、天、電( 磁)任務(wù)的專業(yè)仿真平臺。但在使用STK 的過程中, 經(jīng)常會遇到與STK進行交互的問題,例如需要對仿真數(shù)據(jù)進行必要的分析或根據(jù)實時數(shù)據(jù)驅(qū)動場景信息等。
此外,STK 8.0為用戶提供了便利的二次開發(fā)功能,用戶可以根據(jù)自己的需要對其進行二次開發(fā),最大程度地滿足用戶的特殊要求。該文以VC6.0為開發(fā)平臺, 在MFC對話框框架的基礎(chǔ)上嵌入STK 的視景顯示功能, 開發(fā)了既具有STK 的二維和三維渲染能力, 又具有友好界面和高效數(shù)據(jù)交互能力的地面雷達場景仿真軟件。該軟件利用STK提供的ActiveX 控件,以及在STK場景軟件中地面雷達探測到飛行類目標的徑向距離、方位和俯仰角等觀測值,然后轉(zhuǎn)發(fā)給數(shù)據(jù)處理軟件,經(jīng)過雷達數(shù)據(jù)處理軟件處理后目標的位置和動力參數(shù),與讀取自STK軟件的該目標的位置和動力參數(shù)進行比對, 計算出誤差的評估(包括位置誤差、速度誤差以及加速誤差)。
1 VC 集成STK 編程原理
STK 為第三方進行二次開發(fā)提供了基于組件技術(shù)的編程接口,包括Application 應用類、Map Control二維仿真顯示類、Globe 三維仿真顯示類及輔助數(shù)據(jù)類。
2D 控件(AGI Map Control) 可將STK 的2D 畫面嵌入第三方軟件界面進行顯示,主要包含的類有5 個:CAgUiAx2DCntrl、CAgExecCmdResult、CAgSTKXApplication、CAgPickInfData、CPicture;3D 控件(AGI Globe Control) 可將STK 的3D 畫面嵌入第三方軟件界面進行顯示, 主要包含的類有9 個:CAgUiAxVOCntrl、CAgExecCmdResult、CAgSTKXApplication、CAgPickInfData、CAgRubberBandPickInfoData、CAgObjPath-Collection、CAgDrawElemCollection、CAgDrawElem、CPicture。
利用這種方式實現(xiàn)用戶與STK 的數(shù)據(jù)交互時只需要通過1個函數(shù)即可實現(xiàn):
通過STK/X 提供的類(agstkxapplication)函數(shù)ExecuteCommand (),用戶可以根據(jù)需要,將相關(guān)命令和數(shù)據(jù)按照STK 的命令格式組成字符串,在調(diào)用函數(shù)ExecuteCommand時,將組成的字符串作為該函數(shù)的參數(shù)即可實現(xiàn)向STK發(fā)送信息。
下面的仿真實例中會詳細介紹這種集成方法。
2 C和STK集成在地面雷達數(shù)據(jù)處理系統(tǒng)仿真中的應用
2.1 設(shè)計思路
在地面雷達數(shù)據(jù)處理仿真系統(tǒng)中, 地面雷達對飛行類目標的搜索、截獲與跟蹤過程由STK完成, 并由STK 產(chǎn)生仿真數(shù)據(jù), 而仿真數(shù)據(jù)的獲取、分析處理后轉(zhuǎn)發(fā)給數(shù)據(jù)處理軟件則由VC所開發(fā)的系統(tǒng)完成,該系統(tǒng)同時接收數(shù)據(jù)處理軟件發(fā)送的航跡數(shù)據(jù), 通過比對飛行類目標的位置信息與數(shù)據(jù)處理軟件發(fā)送航跡數(shù)據(jù),測試雷達數(shù)據(jù)處理軟件對目標的跟蹤精度和對機動目標的跟蹤能力。
2.2 仿真模型的建立
首先對飛行目標的場景進行設(shè)定。在STK場景中新建一個飛機運動對象,設(shè)置該飛機做勻速直線運動,目的是為了測試雷達數(shù)據(jù)處理軟件對目標的航跡精度。航跡精度是對跟蹤濾波算法性能進行評估的一個非常重要的指標,它體現(xiàn)了不同的雷達數(shù)據(jù)處理算法對傳感器測量誤差的平滑程度。航跡精度概括來講包括航跡位置精度和航跡速度精度,航跡位置精度定義為航跡位置估計誤差的均方根誤差,航跡速度精度定義為航跡速度估計的均方根誤差。雷達在對目標跟蹤的過程中其估計的均方根誤差越小,濾波器的濾波值越接近目標的真實值,航跡精度越高。設(shè)第l個真實目標在評估時刻[teval]的濾波值和真實值之差為
[Eml(teval)=XmlΛ(teval)-Xl(teval)]
式中,[XmlΛ(teval)]為評估時刻[teval]對第l個真實目標的第m次數(shù)據(jù)處理仿真中的估計狀態(tài)向量,[Xl(teval)]為第l個目標在評估時刻[teval]的真實狀態(tài)。
定義M次仿真實驗后所獲得的評估誤差平方的統(tǒng)計平均值為
[Cl(teval)=1Mm=1MEml(teval)Eml′(teval)]
若目標狀態(tài)向量取為[Xk=xxyyzz′],則[Cl(teval)]為6×6的方陣,該方陣中第-行第一列、第三行第三列和第五行第五列對應的[Cl,x(teval)]、[Cl,y(teval)]、[Cl,z(teval)]分別代表目標x,y和z軸方向位置誤差的方差,利用[Cl,x(teval)]、[Cl,y(teval)]、[Cl,z(teval)]可獲得在評估時刻[teval]對第l真實目標跟蹤的位置均方根誤差,即
[RMSEl,positionteval=Cl,xteval+Cl,yteval+Cl,zteval]
同理,可獲的對第l個真實目標跟蹤的速度均方根誤差為
[RMSEl,velocityteval=Cl,xteval+Cl,yteval+Cl,zteval]
式中,[Cl,x(teval)]、[Cl,y(teval)]、[Cl,z(teval)]為矩陣[Cl(teval)]第二行第二列、第四行第四列、第六行六列的元素,表示目標在x、y和z軸方向的速度誤差方差。
在評估時刻[teval]所有L個目標總的位置均方根誤差和總的速度均方根誤差可分別定義為
[RMSEpositionteval=1Ll=1LRMSEl,positionteval]
和
[RMSEvelocityteval=1Ll=1LRMSEl,velocityteval]
然后添加一個飛機運動對象,設(shè)置該飛機做勻速圓周運動,目的是為了測試雷達數(shù)據(jù)處理軟件對機動目標的跟蹤能力。度量雷達跟蹤機動目標的能力,可以用機動檢測延遲時間作為衡量雷達跟蹤機動目標能力的指標。從目標開始機動到雷達檢測到目標機動所需要的統(tǒng)計平均值稱為機動檢測延遲時間,需要注意的是評估時刻必須是在目標機動期間取值。
在該場景的地面設(shè)施對象添加雷達對象,從而建立地面雷達對空中目標的搜索、掃描和跟蹤的仿真模型。
2.3 仿真程序設(shè)計
仿真程序主要包括場景和動態(tài)數(shù)據(jù)顯示兩部分組成,仿真程序開發(fā)采用VC編程實現(xiàn)。 對于仿真模型建立, 雷達對空間目標的搜索、截獲與跟蹤過程仿真由VC控制STK完成。 動態(tài)數(shù)據(jù)由VC 編制的函數(shù)完成,實現(xiàn)對飛行目標真實目標的位置信息和雷達數(shù)據(jù)處理軟件產(chǎn)生的航跡數(shù)據(jù)的動態(tài)顯示。
2.3.1 將STK/X 控件添加到VC應用程序?qū)υ捒蛏?/p>
啟動VC,建立一個新的MFC對話框應用程序,在顯示出主對話框時,選擇菜單欄目的[Project]下[Add To Project]子菜單[Components and Controls…],在彈出的對話框中找到[Registered ActiveX Controls]目錄中AGI Map Control 8和AGI Globe Control 8,如圖1 所示,分別雙擊鼠標左鍵將其添加到當前應用程序。
此時在對話框的工具箱中會出現(xiàn)2個控件,其中AGI Globe Control 8 為3D 控件,AGI Map Control 8 為2D控件。然后根據(jù)需要選擇2D、3D 控件將其拖到對話框上合適位置,并調(diào)整其大小即可。
2.3.2 加載場景功能實現(xiàn)
Load,用于加載場景或給現(xiàn)有場景加載對象
命令格式為:Load
代碼實現(xiàn)如下:
CString strFile = _T("");
CFileDialog dlgFile(TRUE, "sc", NULL, OFN_HIDEREADONLY, _T("Scenario Files (*.sc)|*.sc|All Files (*.*)|*.*||"),this); //定義打開文件對話框格式
if (dlgFile.DoModal() == IDOK ) //構(gòu)建打開文件對話框
{strFile = dlgFile.GetPathName(); //輸出文件完整路徑和文件名
CString str = _T("");
str.Format("Load / Scenario \"%s\"", strFile);
(LPCTSTR)str; //強制類型轉(zhuǎn)化
m_voContrl.GetApplication().ExecuteCommand(str);
}
2.3.3 啟動場景功能實現(xiàn)
Animate,用于直接動畫顯示場景
命令格式為:Animate
代碼實現(xiàn)如下:
m_voContrl.GetApplication().ExecuteCommand("Animate * Start Forward");
2.3.4 空中目標的真實位置捕獲
Position,用于定位某一時刻交通工具的位置
命令格式為:Position
代碼實現(xiàn)如下:
strGet.Format("Position */Aircraft/US_Fighter %s",currTime);
stkRet = m_voContrl.GetApplication().ExecuteCommand(strGet);
…..
COleVariant var1=static_cast
strGet=CString(var1.bstrVal);
sscanf(strGet,"%f %f %f",&fLat,&fLon,&fAlt);
2.3.5 空中目標的雷達參數(shù)獲取
AER,用于計算兩個對象之間的徑向距離、方位和俯仰角
命令格式為:AER
代碼實現(xiàn)如下:
strGet.Format("AER */Facility/Enemy/Sensor/Sensor1/Radar/Radar1 */Aircraft/US_Fighter TimePeriod %s %s",currTime,currTime);
stkRet=m_voContrl.GetApplication().ExecuteCommand(strGet);
if (stkRet.GetCount()>0) {
COleVariant var=static_cast
strGet=CString(var.bstrVal);
//獲取徑向距離
postion=strGet.ReverseFind(' ');
length=strGet.GetLength();
strAer=strGet.Right(length-postion);
int count=strAer.Find("NoAccesses");
if (count>0) {
return;
}
sscanf(strAer,"%f",&fRange);
strAer=strGet.Left(postion-1);
strGet=strAer;
//獲取俯仰角
postion=strGet.ReverseFind(' ');
length=strGet.GetLength();
strAer=strGet.Right(length-postion);
sscanf(strAer,"%f",&fElevation);
strAer=strGet.Left(postion-1);
strGet=strAer;
//獲取方位角
postion=strGet.ReverseFind(' ');
length=strGet.GetLength();
strAer=strGet.Right(length-postion);
sscanf(strAer,"%f",&fAzimuth);
strAer.Format("徑向距離為%f,方位角為%f,俯仰角 為%f",fRange,fAzimuth,fElevation);
}
2.4 仿真結(jié)果
基于STK 地面雷達數(shù)據(jù)處理測試平臺仿真實踐. 首先通過VC 地面雷達數(shù)據(jù)處理測試平臺與STK結(jié)合, 進行地面雷達仿真場景加載. 仿真結(jié)果給出了飛行目標在STK中飛行狀態(tài), 給用戶以直觀、逼真的效果顯示, 對分析數(shù)據(jù)處理軟件的跟蹤精度和高機動跟蹤能力驗證等提供了相當大的便利.
3 結(jié)束語
STK 是一套功能強大的衛(wèi)星仿真軟件,該文介紹的場景仿真僅僅是STK 應用的冰山一角。利用VC 與STK 集成化編程,將STK快速靈活搭建雷達系統(tǒng)特點與VC 強大的數(shù)據(jù)處理能力結(jié)合起來,可以逼真地仿真地面雷達數(shù)據(jù)處理運行環(huán)境,避免真實環(huán)境提供給軟件測試的有效時間的限制,可有效提高雷達軟件測試效率。
參考文獻:
[1] 陳希軍,李仁.基于STK 的衛(wèi)星飛行軌跡仿真技術(shù)[J].哈爾濱商業(yè)大學學報:自然科學版,2008, 24 (3):339-340.
[2] 楊穎,王琦. STK 在計算機仿真中的應用[M].北京:國防工業(yè)出版社,2005:255-261.
[3] 黃潔,黨同心,趙擁軍. VC 和STK 集成的途徑及其在仿真中的應用[J].計算機仿真,2007, 24 (1) : 291-292.
[4] 丁溯泉,張波,劉世勇.STK在航天任務(wù)仿真分析中的應用[M].北京:國防工業(yè)出版社,2011:1-8.