基于STK的地面雷达数据处理软件测试平台的设计

2015-03-16 11:15沈小仑刘先博
电脑知识与技术 2015年1期
关键词:软件测试数据处理雷达

沈小仑 刘先博

摘要:该文基于STK和STK/Connect模块构建了地面雷达数据处理软件测试平台。以VC++6.0为平台开发了地面雷达数据处理软件测试软件,该软件通过STK/Connect模块发送指令,捕获在STK场景软件中地面雷达探测到飞行类目标的径向距离、方位和俯仰角等观测值,并对这些观测值施加噪声后转发给数据处理软件,实现了雷达数据处理软件仿真测试平台的搭建。

关键词: 雷达;数据处理;软件测试

中图分类号: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

卫星工具软件( Satellite Tool K it)是美国AGI公司推出的一款用于航天产业设计和分析的专业卫星分析工具软件,它支持航天任务周期的全过程, 包括概念、需求、设计、制造、测试、发射、运行和应用等。STK 软件起初多用于卫星轨道分析, 最初的应用集中在航天、情报、雷达、电子对抗、导弹防御等方面。但随着软件的不断升级, 其应用也得到了进一步的深入, STK现已逐渐扩展成为分析和执行陆、海、空、天、电( 磁)任务的专业仿真平台。但在使用STK 的过程中, 经常会遇到与STK进行交互的问题,例如需要对仿真数据进行必要的分析或根据实时数据驱动场景信息等。

此外,STK 8.0为用户提供了便利的二次开发功能,用户可以根据自己的需要对其进行二次开发,最大程度地满足用户的特殊要求。该文以VC6.0为开发平台, 在MFC对话框框架的基础上嵌入STK 的视景显示功能, 开发了既具有STK 的二维和三维渲染能力, 又具有友好界面和高效数据交互能力的地面雷达场景仿真软件。该软件利用STK提供的ActiveX 控件,以及在STK场景软件中地面雷达探测到飞行类目标的径向距离、方位和俯仰角等观测值,然后转发给数据处理软件,经过雷达数据处理软件处理后目标的位置和动力参数,与读取自STK软件的该目标的位置和动力参数进行比对, 计算出误差的评估(包括位置误差、速度误差以及加速误差)。

1 VC 集成STK 编程原理

STK 为第三方进行二次开发提供了基于组件技术的编程接口,包括Application 应用类、Map Control二维仿真显示类、Globe 三维仿真显示类及辅助数据类。

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。

利用这种方式实现用户与STK 的数据交互时只需要通过1个函数即可实现:

通过STK/X 提供的类(agstkxapplication)函数ExecuteCommand (),用户可以根据需要,将相关命令和数据按照STK 的命令格式组成字符串,在调用函数ExecuteCommand时,将组成的字符串作为该函数的参数即可实现向STK发送信息。

下面的仿真实例中会详细介绍这种集成方法。

2 C和STK集成在地面雷达数据处理系统仿真中的应用

2.1 设计思路

在地面雷达数据处理仿真系统中, 地面雷达对飞行类目标的搜索、截获与跟踪过程由STK完成, 并由STK 产生仿真数据, 而仿真数据的获取、分析处理后转发给数据处理软件则由VC所开发的系统完成,该系统同时接收数据处理软件发送的航迹数据, 通过比对飞行类目标的位置信息与数据处理软件发送航迹数据,测试雷达数据处理软件对目标的跟踪精度和对机动目标的跟踪能力。

2.2 仿真模型的建立

首先对飞行目标的场景进行设定。在STK场景中新建一个飞机运动对象,设置该飞机做匀速直线运动,目的是为了测试雷达数据处理软件对目标的航迹精度。航迹精度是对跟踪滤波算法性能进行评估的一个非常重要的指标,它体现了不同的雷达数据处理算法对传感器测量误差的平滑程度。航迹精度概括来讲包括航迹位置精度和航迹速度精度,航迹位置精度定义为航迹位置估计误差的均方根误差,航迹速度精度定义为航迹速度估计的均方根误差。雷达在对目标跟踪的过程中其估计的均方根误差越小,滤波器的滤波值越接近目标的真实值,航迹精度越高。设第l个真实目标在评估时刻[teval]的滤波值和真实值之差为

[Eml(teval)=XmlΛ(teval)-Xl(teval)]

式中,[XmlΛ(teval)]为评估时刻[teval]对第l个真实目标的第m次数据处理仿真中的估计状态向量,[Xl(teval)]为第l个目标在评估时刻[teval]的真实状态。

定义M次仿真实验后所获得的评估误差平方的统计平均值为

[Cl(teval)=1Mm=1MEml(teval)Eml′(teval)]

若目标状态向量取为[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]

然后添加一个飞机运动对象,设置该飞机做匀速圆周运动,目的是为了测试雷达数据处理软件对机动目标的跟踪能力。度量雷达跟踪机动目标的能力,可以用机动检测延迟时间作为衡量雷达跟踪机动目标能力的指标。从目标开始机动到雷达检测到目标机动所需要的统计平均值称为机动检测延迟时间,需要注意的是评估时刻必须是在目标机动期间取值。

在该场景的地面设施对象添加雷达对象,从而建立地面雷达对空中目标的搜索、扫描和跟踪的仿真模型。

2.3 仿真程序设计

仿真程序主要包括场景和动态数据显示两部分组成,仿真程序开发采用VC编程实现。 对于仿真模型建立, 雷达对空间目标的搜索、截获与跟踪过程仿真由VC控制STK完成。 动态数据由VC 编制的函数完成,实现对飞行目标真实目标的位置信息和雷达数据处理软件产生的航迹数据的动态显示。

2.3.1 将STK/X 控件添加到VC应用程序对话框上

启动VC,建立一个新的MFC对话框应用程序,在显示出主对话框时,选择菜单栏目的[Project]下[Add To Project]子菜单[Components and Controls…],在弹出的对话框中找到[Registered ActiveX Controls]目录中AGI Map Control 8和AGI Globe Control 8,如图1 所示,分别双击鼠标左键将其添加到当前应用程序。

此时在对话框的工具箱中会出现2个控件,其中AGI Globe Control 8 为3D 控件,AGI Map Control 8 为2D控件。然后根据需要选择2D、3D 控件将其拖到对话框上合适位置,并调整其大小即可。

2.3.2 加载场景功能实现

Load,用于加载场景或给现有场景加载对象

命令格式为:Load " "

代码实现如下:

CString strFile = _T("");

CFileDialog dlgFile(TRUE, "sc", NULL, OFN_HIDEREADONLY, _T("Scenario Files (*.sc)|*.sc|All Files (*.*)|*.*||"),this); //定义打开文件对话框格式

if (dlgFile.DoModal() == IDOK ) //构建打开文件对话框

{strFile = dlgFile.GetPathName(); //输出文件完整路径和文件名

CString str = _T("");

str.Format("Load / Scenario \"%s\"", strFile);

(LPCTSTR)str; //强制类型转化

m_voContrl.GetApplication().ExecuteCommand(str);

}

2.3.3 启动场景功能实现

Animate,用于直接动画显示场景

命令格式为:Animate {AnimateOption}

代码实现如下:

m_voContrl.GetApplication().ExecuteCommand("Animate * Start Forward");

2.3.4 空中目标的真实位置捕获

Position,用于定位某一时刻交通工具的位置

命令格式为:Position [""]

代码实现如下:

strGet.Format("Position */Aircraft/US_Fighter %s",currTime);

stkRet = m_voContrl.GetApplication().ExecuteCommand(strGet);

…..

COleVariant var1=static_cast(stkRet.GetItem(0));

strGet=CString(var1.bstrVal);

sscanf(strGet,"%f %f %f",&fLat,&fLon,&fAlt);

2.3.5 空中目标的雷达参数获取

AER,用于计算两个对象之间的径向距离、方位和俯仰角

命令格式为:AER [{AccessOptions}] [{InheritFlag}] [{LineGfxState} {AnimGfxState} {StaticGfxState}]

代码实现如下:

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(stkRet.GetItem(0));

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 仿真结果

基于STK 地面雷达数据处理测试平台仿真实践. 首先通过VC 地面雷达数据处理测试平台与STK结合, 进行地面雷达仿真场景加载. 仿真结果给出了飞行目标在STK中飞行状态, 给用户以直观、逼真的效果显示, 对分析数据处理软件的跟踪精度和高机动跟踪能力验证等提供了相当大的便利.

3 结束语

STK 是一套功能强大的卫星仿真软件,该文介绍的场景仿真仅仅是STK 应用的冰山一角。利用VC 与STK 集成化编程,将STK快速灵活搭建雷达系统特点与VC 强大的数据处理能力结合起来,可以逼真地仿真地面雷达数据处理运行环境,避免真实环境提供给软件测试的有效时间的限制,可有效提高雷达软件测试效率。

参考文献:

[1] 陈希军,李仁.基于STK 的卫星飞行轨迹仿真技术[J].哈尔滨商业大学学报:自然科学版,2008, 24 (3):339-340.

[2] 杨颖,王琦. STK 在计算机仿真中的应用[M].北京:国防工业出版社,2005:255-261.

[3] 黄洁,党同心,赵拥军. VC 和STK 集成的途径及其在仿真中的应用[J].计算机仿真,2007, 24 (1) : 291-292.

[4] 丁溯泉,张波,刘世勇.STK在航天任务仿真分析中的应用[M].北京:国防工业出版社,2011:1-8.

猜你喜欢
软件测试数据处理雷达
有雷达
认知诊断缺失数据处理方法的比较:零替换、多重插补与极大似然估计法*
ILWT-EEMD数据处理的ELM滚动轴承故障诊断
基于OBE的软件测试课程教学改革探索
雷达
EXCEL和VBA实现软件测试记录管理
关于软件测试技术应用与发展趋势研究
软件测试工程化模型及应用研究
基于空时二维随机辐射场的弹载雷达前视成像
基于希尔伯特- 黄变换的去噪法在外测数据处理中的应用