基于WPF的3D雷达终端界面设计
2023-10-12卢珊珊
卢珊珊 王 明 李 哲
(西安电子工程研究所 西安 710100)
0 引言
雷达终端界面作为人机交互的一种。为用户提供空中目标的航迹信息,实现重要军事用途。同时要求长时间存储和录取雷达系统的各项指标数据。通过对数据分析可以检测雷达系统的性能和运转状态。
本文设计的雷达终端软件,考虑从以下四个方面提高用户的人机交互体验:
1)采用WPF做为软件开发环境,达到最优图形渲染效果;
2)使用3D Unity工具实现雷达产品的3D显示,并通过状态参数的绑定达到对雷达运行动作的同步映射,可更直观地展现雷达站的当前运动状态;
3)采用TensorFlow.Net搭建CNN神经网络模型。运用软件长时间采集的雷达站状态参数做为训练集(前定长时刻数据为输入,当前时刻数据为输出),对神经网络模型进行离线训练。使模型具备对未来状态的预判功能。通过用预判信息和实际信息的比较达到对雷达站运行的健康监测功能;
4)通过System.Speech程序集,加入语音识别、翻译和文本朗读功能,进一步提高人机交互的生动性。
本文将从这四个方面安排章节进行描述。
1 WPF环境
WPF(Windows Presentation Foundation)[1]是微软推出的基于Windows的用户图形呈像框架。目前已经是一个成熟的GUI框架,拥有自己的一套完整的生态并且被纳入微软长期稳定更新计划。
WPF前端使用xmal语言,后端使用c#语言,前后端分离可以提供UI设计人员和逻辑设计人员的分工协作,高效完成软件任务。这种前后端分离的优越性也被进一步运用到了网站设计工作中,前端html语言和后端javascript语言也逐步形成了一股潮流。
WPF最大特点是对矢量图的超强支持,支持XPS和消锯齿以及浮点类型的像素坐标,比GDI+更具优越性。所以用WPF做出的软件外观会特别美观,这也正是WPF的强大之处。
2 三维显示设计
2.1 Unity 3D 开发工具
3D Unity[2]是一款跨平台的开发工具,适用于开发游戏、体验、媒体内容及交互应用程序。3D Unity 包含了集成开发环境、实时3D开发技术、脚本编程、资源管理系统以及实时成像技术等功能,让你可以实现自己想要的动态3D影像。3D Unity 的开发技术可以在多种平台上运行,包括PC、移动设备和VR/AR等。是一个全面整合的专业游戏引擎。
3D Unity个人版提供免费学习使用。
在WPF中嵌入Unity引擎有以下几种方法:
1)在WPF项目中创建一个控件,如System. Windows.Forms.Integration.ElementHost,用于与Unity应用程序进行通信。
2)将Unity项目编译为Windows应用程序,并将其作为ElementHost控件的子级。
3)使用Unity API与WPF应用程序进行通信,以便在两个应用程序之间共享数据和功能。
4)创建一个WPF窗口。该窗口将允许WPF应用程序访问Unity应用程序的内容。
其中最快又能最大限度发挥Unity渲染速度的方法就是使用Unity API与WPF应用进行通信来实现三维模型的显示。在Unity开发环境中,可以使用脚本程序,嵌入socket内容,可以把三维模型推荐做成客户端(client),使用WPF程序做服务器端,通过网络来控制三维模型的展示方式。
本文为了避免涉密内容,所以并没有使用实际项目的三维模型,而是以一个虚拟模型代替实际雷达站外观,模型如图1所示。
图1 模拟雷达站的三维模型
2.2 三维控制逻辑
fbx格式的三维模型可以导入到3DUnity环境中。在3D Unity端对虚拟雷达站三维模型进行骨架搭建。进一步把雷达站模型的天线部分、架设撤收机构和车体部分,分开成独立部分并对每一个部分建立独立坐标系。当脚本接收到相应控制命令时,可以使独立部分完成绕指定坐标轴转动,变换姿态等相对位置变化来展现实际雷达站工作中的空间状态。
WPF软件端使用包含所接收到的雷达天线方位、俯仰、架设撤收工作状态等信息的网络通信协议,与Unity脚本端进行定周期网络通信。在脚本中应用数据绑定方法把雷达天线方位、俯仰数据与模型中的天线部分z坐标变换角度和x坐标变换角度建立数据绑定。当脚本接收到变化的方法、俯仰信息时,会自动更新模型相对坐标轴的位置变化角度,从而实现天线方位旋转,俯仰高低角变化的展示。进一步控制三维雷达站模型完成架设、撤收、圆周扫描、目标位置跟踪等雷达站的动作模拟。在架设撤收这种没有指定变化参数的运动展示任务中,可以通过雷达站设计指定的架设撤收时间,建立指定时间的架设撤收动画来展示。当对展示的同步性有严格要求时,也可通过网络转发(或使用组播)把实际雷达站数据发送给Unity三维模型,脚本将直接解析雷达站协议,模型将依照实际雷达站的运动,实时复现雷达站正在进行的运动,实现雷达站动作的实时监控。比如,雷达站正在做目标跟踪动作,雷达站本身上报的天线位置信息可以通过终端转发给Unity三维模型,这样模型的相对位置和雷达站的天线运动位置可以保持一致。就可以实现实际雷达站状态到三维模型的映射,位置信息是很基础的雷达站信息,通常PPI或者图表就可以反映其影响效果,同时可以将雷达站的其他信息比如升降架设、调平、油机状态等复杂信息都映射到三维模型上,通过通信使模型呈现一个特殊状态或警告状态,这对于终端技术和操控管理都是具有深远意义的。
本文软件界面如图2所示,对三维模型中的模块添加材质和贴图描述,再加入光线配置。得益于3DUnity强大的渲染功能,可以得到较好的模型展示效果。
图2 软件界面图
终端作为人机交互的一种形式,以控制命令下发和显示设备信息反馈为作用。三维技术不仅可以提升终端软件的观感体验,还可以更直观地反映设备信息和动态影响,可以促进终端技术面向更高质量方向发展。
3 健康管理
设备健康管理[3]技术主要由计算机软件和硬件相结合而成,它能够检测设备的运行情况,以及发现可能的故障,并及时采取合理的措施来维护设备的健康和安全性。它可以根据设备的工作复杂情况,实时调整设备的参数,以提高设备的性能和可靠性。此外,它还可以通过远程监控和管理,实现设备的自动化管理。它还可以通过数据分析,发现设备的性能问题,从而改善设备的质量和可靠性。
在WPF环境下有适用于C#语言的基于.NET的开源人工智能库,如Accord.NET或者Encog可以调用。此外还可选择,如Microsoft Cognitive Toolkit或Keras的API来构建神经网络模型。本文仅采用TensorFlow.Net训练CNN神经网络模型,来实现对雷达站数据的建模和训练。TensorFlow.NET是SciSharp STACK团队做的一个开源机器学习平台,集成了大量API和底层封装,使TensorFlow的Python代码风格和编码习惯可以无缝移植到.NET平台。特别适合C#语言的WPF来应用。
本文对雷达站搜索、扇扫、跟踪工作模式,分别做了神经网络建模,因为单一工作状态下数据不会有很大变化,建模所需的神经网络单元数也会相对少一些。每种工作模式使用一种神经网络,可以得到较好的预测精度。训练结果如图3所示。
图3 扇扫模式下训练精度图
图3中train对应的曲线为模型训练曲线。把一段长时间扇扫模式下的数据分组,每11个连续时刻数据为一组进行随机抽取。每组前10个时刻数据做为输入,第11个时刻数据做为输出,以达到根据前10个时刻数据预测下一时刻数据的功能。用随机抽取的1万个数据组做为训练集,在剩下的数据组随机抽200组来测试训练的效果,做为测试集。图3中test对应测试曲线。训练曲线的精度是训练集的输入,经过模型得到的输出与对应训练集结果的比较误差,而测试曲线的精度是测试集的输入,经过模型得到的输出与测试集结果的比较误差。可以看到训练曲线的误差和测试曲线的误差都在随着训练样本数的增加而减小,并最终维持在一个很小的误差范围内。经过大量的数据训练和合理的神经网络拓扑结构设计,最终可以使两条曲线重合并维持在很小的误差内。
4 语音识别和翻译工具
微软针对.NET应用推出了System.Speech[5]程序集,即语音合成程序集,可以将文本转换成口语通过程序播放出来,同时还具备语音识别能力,可以将话筒捕捉到的口语转换为文本。当引入System.Speech程序集后,在 System.Speech.Synthesis 命名空间中的 SpeechSynthesizer 类可以朗读安装语言库对应的段落,可以丰富人机交互的生动性,同时配合SpeechRecognitionEngine类来监听语音命令,可以在程序里直接转换成字符串,经过简单语义分析处理就可以当作指令命令直接下发。可以带来更生动的操作体验。
5 多线程数据处理
多线程[6]多数用在实时操作系统中。像Windows这样的非实时操作系统通常是通过分配时间碎片(CPU时间的基本单元)并进行轮询来实现多线程的。其实这种多线程是异步运行的。在避免线程之间数据竞争的前提下,本文终端软件分别为网口通信线程、数据录取线程、健康监测线程和目标信息解析线程。而神经网络的训练运算是作为触发事件,对保存数据的文件进行数据训练刷新健康监测线程里的神经网络参数。语音识别也是做为触发事件按需要进行响应。得益于WPF独特的数据绑定机制,可以把后台数据和前台图形进行绑定,来做到同步更新,所以数据显示功能都是通过数据绑定实现的,并不占用过多线程任务。
在多线程应用中,为了避免发生数据竞争。可以使用C#下WaitOneEevent来分时触发并行任务,进一步保证了程序的线程安全。本文软件中的线程框图如图4所示。
图4 多线程框图
如图4所示,本软件的主线程是通信线程。优先轮询网络通信数据的接收,在数据不丢失的情况下可以下发对雷达站的控制命令,并进行数据录取。神经网络的训练线程并行预测新状态,如果网络接收的新状态数据和预测状态存在很大差距,则提示故障。语音服务作为触发式线程。模型训练线程也是触发性的执行用保存下的数据进行神经网络模型训练工作,并同步更新模型用于健康监测。
6 结束语
本文测试了用神经网络单元组成的模型可以实现状态参数曲线的预测。但是本文的神经网络是分模式建立的,即用单一工作模式下的数据训练该模式下的神经网络模型,对于不同模式下的健康监测使用对应模式下的神经网络进行状态监测。对于工作模式切换带来的扰动采用延时判断或门限回避。因此在工作模式切换时容易出现较大预测误差。所以希望在以后的工作学习中可以通过神经网络的合理规划,来应对工作状态改变时的数据准确预测需求。