在各种雷达训练和信号模拟器中,都需要进行航迹模拟及航迹显示,以便于为仿真平台提供信号源。对于便携式雷达模拟器来说,无法使用pc,需用嵌入式系统来实现人机交互及信号处理。但当前绝大部分的航迹模拟均建立在pc机上,虽然功能强大,但航迹模型较为复杂,计算量较大,不易于在嵌入式设备设备上实现。针对上述问题,在嵌入式系统内,采用双缓冲技术,并通过“背景复制”的方法对3种典型雷达航迹模型进行了模拟仿真,解决了嵌入式系统在进行仿真时内存处理速度与绘图资源消耗较大的矛盾,实现了对典型雷达航迹的图形化显示和航迹点坐标的实时动态模拟。
1 典型航迹模型
所谓航迹是指飞行物的雷达测量时间序列,它是反映目标飞行航线、航速,乃至飞行目的的重要参数。直线型航迹、水平圆周型航迹和垂直圆周型航迹是3种典型的空中航迹模型,对3种典型航迹进行组合,可有效地模拟出空中各种复杂航迹。
1.1 坐标系的建立
雷达系统常用坐标系有直角坐标系和极坐标系。二者均以雷达作为坐标系的原点且原点重合。在直角坐标系内,以y轴正方向为正北方,正东为x轴的正方向,与水平垂直且向上的方向为h轴正方向;极坐标系内,从观测点到目标点连线的延长线方向为目标的斜距离d的正方向。
1.2 航迹模型的建立
1. 2.1 直线型航迹
空间直线型航迹较为简单,是最常用到的一种航迹模型。在直角坐标系内其运动学方程可以由其初始速度v0,加速度a,飞行俯仰角θ,航向角φ以及航迹时间t来表示,△t内有如下关系成立:
1.2.2 水平圆周型航迹
水平圆周型航迹主要分为左转和右转2种类型。在直角坐标系内,单位时间增量△t内其运动方程如下:
式中:s=2rsin(△φ/2),用来表示圆周运动起始点到终止点的直线距离;r为半径;φ为初始航向角,△φ=(v△t)/r为航向角增量(方位角变化量)。当目标左转时,f=1,右转时,f=-1。
1.2.3 垂直圆周型航迹
垂直圆周段航迹指的是目标在与水平面垂直的平面里做恒向心加速度圆周运动,其特点是飞行方位角保持不变。假设单位时间增量△t内,由目标运动起始点到终止点的直线距离为s,则s在x轴上的投影为△z,在xoy平面上的投影为△l,可以得到如下关系:
式中:r为半径;θ为初始飞行俯仰角;φ为初始航向角。俯仰角增量△θ=(v△t)/r。如图1所示,若目标由a点运动到c点,则当目标从a点运动到b点时,f=1,而当目标在bc段运动时,f=-1。
1.3 目标飞行的雷达坐标
在雷达应用中,测定目标坐标常用极(球)坐标系统,空间任一目标的位置可用斜距d,方位角β,高低角θ来表示。在1.2节中为了简化,算出的都是单位时间增量△t内的坐标增量,但是在实际运算中,应该使用实时坐标值。假设目标在直角坐标系中的位置为(xt,yt,zt),则有:
2 仿真流程
航迹仿真流程如图2所示。
3 仿真实现
嵌入式系统是指根据特定的应用及要求,采用特定的开发板和特定的操作系统运行应用程序的系统。一般来说,嵌入式系统具有软件代码小,高度自动化,响应速度快等特点,与一般的pc系统相比,特别适合于要求实时和多任务的体系。
在对航迹进行可视化仿真时,选择win ce嵌入式操作系统,在visual studio 2005开发平台上,采用visual c#语言进行程序编写。3.1 gdi+技术
gdi+技术指的是在.net framework 2.0中提供的二维图形、图像处理等功能,主要用于绘制各种图像图像,可以用于绘制各种数据图形、数学仿真等。目前,gdi+技术是在windows窗体应用程序中以编程方式呈现图形的基本方法。
gdi+使用graphies类来描述一个绘图表面,并提供该表面可以进行的所有绘图工作。当所需图像包含大量基本图形时,在内存中的bitm-ap上绘图比直接在屏幕上绘图要快的多。所以应用gdi+技术绘图时,为了消除在画图时引起的屏幕抖动,常常采用双缓冲技术。其实质即在内存中事先开辟出一块空间作为缓冲区,绘制图片,再将缓冲区里的图片绘制到用户界面或输出终端。具体步骤为:
(1)创建一个指定大小的空位图bitmap;
(2)调用graphics类的fromimage静态方法,从该位图创建一个graphics对象;
(3)利用创建的graphics对象进行绘图;
(4)释放绘图资源;
(5)调用窗体的paint事件,刷新窗体。
3.2 航迹坐标点的定位
gdi+中的作图函数建立在一个以像素为单位的逻辑坐标系中。该逻辑坐标系的原点是显示屏幕的左上角,并且y轴向下为正方向,x轴向右为正方向,如图3所示。在对航迹进行的可视化仿真,建立在对雷达ppi显示器进行模拟的基础上。因此,在做图中,需要将ppi显示的参数换算为以像素为单位的值。
这里需要定义一个意义为实际距离对应屏幕距离的全局比例尺m_globalscale,单位:像素/m。假设系统所要模拟的ppi显示界面分辨率为240×240(像素),且雷达最大作用范围为m_range(m),则有如下关系成立:
将圆心与屏幕ppi显示区中心点的偏移量,定义为x_set和y_set,以航迹上的a点为例,假设在t时刻,目标到达a点。其斜距离为d,单位m;方位角为β,单位为(°)。a点对应在屏幕上的斜距离为d1,单位像素;方位角β1,单位弧度;坐标为x_cur,y_cur,单位像素。根据上述分析可以得出:
3.3 航迹坐标点的动态显示
航迹的显示可以在模拟ppi显示器的绘图面上,调用drawlines()方法对所有的航迹点进行连线即可。但是为了实时地了解仿真目标的空中运动情况,往往还要同时实现航迹坐标点动态显示。重绘是一种经常被采用的方法,其思想是对ppi显示模拟界面上的静态显示部分进行重绘,将已经画好的航迹坐标点覆盖掉,再在新的界面背景上绘制新的航迹坐标点。
但是考虑到嵌入式系统在内存及处理速度方面的不足,每次重绘所调用大量的资源,势必会造成cpu资源的浪费,同时影响到整个系统的时效性。为了克服上述问题,保证整个系统运行的实时性,本文采取“背景复制”的方法来解决。总体来讲,实现的思想是:创建2个绘图面,在一个绘图面(g1)上绘制轨迹后再“贴在”另个绘图面(g2)上,并在g2上绘制更新的点迹坐标,当进入下个循环时新的轨迹图又再次贴在g2上,然后再在g2绘制新的点迹坐标,这样显示在窗体上始终只有运动的轨迹和随轨迹运动的图标,即可较为丰富地实现轨迹动态显示。
具体步骤为:
(1)定义2个位图bitmap1和bitmap2,并设定其大小
(2)定义两个graphics绘图面(以下简称g1,g2),并把bitmapl填充到g1中去,以便于接下来进行绘图操作。
(3)进行航迹模型运算,循环算出各航迹坐标点的坐标值(x,y),将所有的航迹坐标点存入list中(list为一个泛型,而point表示在二维平面里定义点的有序坐标对)。使用g1.drawlines()方法对数组list中的所有坐标点进行连线,并在picturebox1控件中显示,雷达典型目标航迹的模拟即可实现。
(4)将整个已经画有航迹的bitmapl保存下来。
(5)利用c#中的计时器控件,以ts为时间间隔,循环从list中取出航迹点坐标,并调用drawimage()函数把已经画有航迹的bitm-apl填充入g2绘图面。即:
然后在g2绘图面上调用drawellipse()函数,以绘点的方式画出模拟目标的实时航迹点坐标。重复步骤(5)的操作即可实现航迹坐标点的动态显示。
图4为采用这里所述方法在一嵌入式系统内实现的某雷达模拟器显控终端截图,图4中所绘航迹为一段直线型航迹。
4 结语
建立对典型雷达航迹模型,并成功在仿真平台上实现模拟,是实现复杂航迹仿真的前提。在此旨在通过对典型雷达航迹的仿真,验证软件运行环境,优化程序结构,并解决航迹在图形化显示上所面对的一些问题。目前,该方法已经被应用到某雷达模拟器的显控终端上,经外场调试,性能较好,实时性强,可以满足雷达模拟器训练要求。
小鹏推出全语音功能
期待已久的Android Wear 5.1.1更新尚未准备就绪
Nvidia欲向Tesla抛出橄榄枝!特斯拉与英伟达可否再次碰撞出火花?
FPGA设计的具有数字显示的水温测控系统
工业控制中机器人如何运用感知系统
嵌入式系统运用于典型雷达航迹模型及实现仿真模拟
74hc595级联程序范例
Go语言运算符主要包括哪些呢?
苏州供电公司申请的电网动态防雷技术国际标准已获得了批复立项
光通信系统中SD-FEC软判决纠错编码技术浅析
金溢科技蝉联中国智能交通三十强!
借助集中式数据采集,开发在线风电场状态监测系统
回顾2020年的冰箱行业
2017年第二季度DRAM组件销售额达165亿美元
AT89S52单片机的超声波倒车雷达系统的设计
未来五年,中国产业经济的所有命运都掌握在自己手上
电磁阀的作用原理 单向电磁阀与双向电磁阀的区别
原来“bug”真的由bug而来
RealAI田天获选创业邦2020年“30岁以下创业新贵”
iPhone 12到底值不值得升级?