收藏 分享(赏)

无人机地面控制站仿真系统.pdf

上传人:精品资料 文档编号:11066130 上传时间:2020-02-06 格式:PDF 页数:71 大小:2.93MB
下载 相关 举报
无人机地面控制站仿真系统.pdf_第1页
第1页 / 共71页
无人机地面控制站仿真系统.pdf_第2页
第2页 / 共71页
无人机地面控制站仿真系统.pdf_第3页
第3页 / 共71页
无人机地面控制站仿真系统.pdf_第4页
第4页 / 共71页
无人机地面控制站仿真系统.pdf_第5页
第5页 / 共71页
点击查看更多>>
资源描述

1、南京航空航天人学硕士学位论文摘要“无人机地面监控站仿真系统”是作为“飞行器远程控制验证系统及可视化”的一部分,模拟地面控制站的功能,用虚拟的匕行仪表为地面人员提供实时的,直观的无人机飞行信息。并提供各种曰于控制指令,实现了地面人员对无人机进行控制。在实时仿真结束后,还可以回放演示无人机飞行的航迹。论文首先介绍了作为图形设计所必需的三维图形学方面的基本知识,包括图形学中的各种坐标系以及它们之间的转换,还有各种矩阵变换等。详述了利用OpenGL进行虚拟匕行仪表建模和渲染的过程。 系统是以Windows操作系统为平台,在Visual C+环境下设计实现的。文中详细讲述了系统框架的实现步骤。包括如何搭

2、建单文档一多视图框架,如何在Visual C十+中实现利用。penGL编程、利用串口进行通讯和多线程的同步等。最后,文中介绍了与飞行仿真计算机之间的无线通讯,包括MDS无线数传电台的安装步骤、出错处理,特别指出了电台在使用中需要注意的事项。还包括与飞行仿真计算机和二维动画仿真计算机进行联机演示的最终效果。关键词:无人驾驶飞机,OpenGL建模,串口通信,多线程,数传电台无人机地血监控站仿真系统ABSTRACT“The simulation system of monitor and control base station of Unmanned AerialVehicle(UAV)“ is

3、a part of “The development and visualzation of the remotecontrol-validating system for flight vehicle“. It simulates the base station, and withvirtual flight instruments, it supplies much real-time and visual flight information ofUAV to the operators at the base station. The operators can easily con

4、trol the UAV bysending the accordingly orders through this system. After real-time simulating, thesystem can replay the flight path. This thesis,firstly, introduces the basic knowledge of 3D graphics includingdifferent kinds of coordinate and the transform among them. Especially, it specifiesthe pro

5、cess of the virtual flight instruments modeling.The system is based on the Windows operating system. It is realized with VisualC+. The paper specifies the steps of realizing the system, especially, discusses howto create a the total framework of the system and use OpenGL to programme inVisual C一斗.It

6、 also discusses realizing serial communication and resolving thesynchronization of multithread. In the end, the paper dicusses how to use the digital transceiver, MDS一2710A,to communicate with flight simulation system ,including the steps of installation,troubleshooting and notices when using the tr

7、ansceiver. It also shows the final demoeffect_Keywords: Unmanned Aerial Vehicle, OpenGL, 3D Modeling, serial communication,multithread, digital transceiver承诺书本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行研究工作所取得的成果。尽我所知,除文中已经注明引用的内容外,本学位论文的研究成果不包含任何他人享有著作权的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均己在文中以明确方式标明。本人授权南京航空航天大学可以有权保留

8、送交论文的复印件,允许论文被查阅和借阅,可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其他复制手段保存论文。作者签名;林礁期:一zro . 2 z8南京航空航天大学硕士学位论文第一章绪论无人驾驶飞机UAV (Unmanned Aerial Vehicle),简称无人机,最早出现于二十世纪初,后来因军事需求而逐渐发展起来。如今,鉴于无人机的许多优点,不仅在军事上得到了广泛的应用,而且在民用方面也得到了普遍重视。例如:在军事上,无人机可作为空中侦察平台和武器平台,通过携带不同的设备,可执行侦察监视,攻击,电子干扰,目标定位等任务;民用方面,可用于气象探测,公路巡视,测绘

9、勘探,森林防火等I9随着计算机技术的发展,利用计算机的软、硬件,建立有关无人机的飞行、控制以及评估的仿真系统已经成为各国的共识。而以往的飞行仿真中,得到的结果都是大量的数据或曲线,不具有直观性。可视化技术的出现,使得仿真结果不再单调,甚至人们可以与计算机进行直接交互,对虚拟世界中具有形体的信息进行操作,实现了人、机合一。 “无人机地面监控站仿真系统”正是运用计算机图形学知识结合现代计算机仿真技术实现的仿真系统,它为地面人员提供了一个形象的、虚拟的飞行仪表界面,用于显示无人机的各种飞行参数,更加方便地实现地面人员对无人机的控制。1.1计算机仿真的发展概况计算机仿真技术是以多种学科和理论为基础,以

10、计算机及其软件为工具,对系统进行实验研究的理论和方法体系。它是根据系统实验的目的,建立系统模型,并在不同的条件下,利用计算机对模型进行动态运行(实验)的一门综合性技术。而系统、模型和计算机则是构成计算机仿真的三个基本要素。计算机是科研工程人员、系统操作管理人员进行系统分析设计、运行、评估和培训教育的重要手段。与实物试验相比较,计算机仿真具有省时、省力、省钱等优点,它己成为各种系统分析、战略研究、运筹规划和预测、决策的强有力工具。它越来越广泛地应用在国防、制造业、能源、交通、农业、医疗、经济、天气预报等重要的军事与非军事、工程与非工程等各个领域中【11。 仿真技术作为一门技术科学是在20世纪初科

11、学与工业技术有了长足的发展无人机地面监控站仿真系统之后而确定下来的,而且伴随着科学与工业技术的发展,计算机仿真技术也在不断地进步和发展。计算机仿真技术的发展大体归纳为仿真计算机、仿真软件和建模/仿真方法学三个重要课题。1. 1. 1仿真计算机的发展所谓仿真计算机就是用于系统仿真的计算机,它是计算机的一个子集。通常我们把用于时间要求苛刻、含硬件在回路的仿真的计算机称作为仿真计算机,或实时仿真计算机。仿真计算机先后经历了模拟计算机、数字计算机和混合计算机三种类型,其结构与功能各不相同。近年来,由于微型计算机的迅速发展,性能不断地提高,友好的人机交互环境,优良的图形处理功能和较强的网络功能,用微型计

12、算机进行仿真已受到仿真界同行的高度重视,并将促进仿真技术的进一步发展ll3。1.1.2仿真软件的发展所谓仿真软件是指一类面向仿真应用的专用计算机软件。仿真软件的特点是面向问题、面向客户。它的功能一般包括有模型描述的规范及处理(建模)、仿真实验的执行与控制(运控)、仿真结果的分析与演示(结果处理)、模型和数据的存储与检索(数据库)等等仿真软件根据其功能可以分成如下三类: (1)仿真程序包。具有运控、结果处理、数据库等功能。(2)仿真语言。具有建模、运控等功能。 (3)仿真环境。具有建模、运控、结果处理与数据库等功能。仿真软件的发展离不开计算机软件和硬件的发展,它的发展目标是不断改善面向问题、面向

13、用户的模型描述能力及对模型建立、实验、分析、设计和检验的功能。仿真软件的发展大体经历了五个阶段: (1)通用程序设计语言阶段;(2)初级仿真语言阶段; (3)高级仿真语言阶段;(4)一体化建模与仿真环境软件; (5)智能化仿真软件环境。南京航空航天大学硕士学位论文3建模/仿真方法学的发展利用计算机进行仿真必须要建立能够被计算机识别与运行的系统模型。这就是说,先要通过对系统进行分析,建立起能描述系统行为规律的系统模型,然后再将系统模型转换为计算机仿真程序,仿真程序的执行称为仿真运算,仿真运算过程就是对系统模型求解过程,因此,仿真就是模型试验。早期计算机仿真的对象是对工程技术领域中的实际物理过程进

14、行仿真,多数问题可以建立起以时间为基准的数学模型,即各种数学方程。为了能快速、准确地对这些方程模型进行模拟试验,人们提出了多种不同要求的仿真算法和仿真软件。到了20世纪70年代,计算机仿真的应用领域逐步扩大,其中有的问题也很难用方程模型描述出来。于是人们提出了离散事件模型及仿真算法。由于离散事件模型的构造比微分方程和差分方程复杂,而且建立的模型又可能是多种多样的,因此人们一直在探索用统一的建模方法来指导和简化离散事件模型的建模过程。因此20世纪70年代中期就提出了模型的规范化和形式化描述,使得建模方法学前进了一步。以后又结合计算机软件方法学的发展,在系统建模理论中引入了层次模块化方法和面向对象

15、的思想,为建立集成化交互式建模/仿真环境提供了良好的理论基础。计算机仿真技术发展到今天,仿真方法层出不穷,先后出现了面向对象仿真、分布式交互仿真、智能仿真、人机和谐仿真(包括:可视化交互仿真、多媒体仿真、虚拟现实仿真和嵌入式仿真等)以及先进的一体化仿真环境。随着仿真软件的发展,计算机仿真技术将会得到更多的应用川。1. 2课题所要解决的问题本课题是我校“十五”重点学科建设项目“飞行器远程控制验证系统及可视化”的重要组成部分。它所要解决的主要问题包括:(1)应用程序框架的建立(单文档一多视图框架); (2)虚拟航空仪表静态模型的建立和测控参数的动态显示;(3)串口通讯的实时性问题; (4)多线程的

16、同步问题;(5)运用数传电台进行无线通讯,实现“天一地”之间的测控联调。无人机地面监控站仿真系统其中,虚拟航空仪表静态模型的建立是基础。模型可先用专业的建模软件建立,再通过转换软件,转换成OpenGL代码;也可直接用OpenGL的纹理贴图技术建立模型。本系统的仪表模型部分采用了后者。课题的关键之处在于数据通讯的实时性,程序中采用了Window。的多线程同步技术和OpenGL的双缓存渲染技术。利用数传电台进行无线通讯,实现“天一地”间测控讯号传输的仿真是本课题的创新之处,它很好的解决了远距离通讯的可靠性和通讯速度问题。1.3课题所需要的相关工具1.3.1 OpenGLOpenGL,即开放性图形库

17、(Open Graphic Library)。从本质上说,它是一个完全可移植并且速度很快的3D图形和建模库。是由SGI公司的工RIS GL发展而来。现在,已成为一种图形标准,被广泛应用于可视化,实体建模,CAD工程,模拟仿真等诸多领域。另外,作为一个开放的三维图形软件包,Microsoft公司己经在Visual C+中内置了。penGL,方便了广大用户利用OpenGL的强大图形功能z11.3.2 Visual C十十6.0Visual C+6. 0是Microsoft公司开发的面向Windows程序设计的一套可视化开发环境,功能强大,支持面向对象的程序设计。经过微软公司的不断完善,使得Visu

18、al C+在开发速度、程序执行效率、程序大小,以及系统的集成性方面都有极大的提高,己经成为众多计算机程序员所使用的应用程序开发工具之3.3 MDS-2710A数传电台MDS-2710A数传电台用于单对多环境中的数据遥测装置,主要应用在电气设备数据采集与监视控制(SCADA)、分布式自动控制、油田自动控制、废水处理的数据采集与监视控制以及在线事务处理。使用微处理器控制和数字信号处理(DSP)技术确保在恶劣条件下也可提供高度可靠的通讯。南京航空航天大学硕士学位论文1.4本文的主要内容本文一共分七章: 第一章绪论介绍本课题的背景、意义及组成部分。第二章介绍了与图形设计有关的计算机图形学基础知识。 第

19、三章介绍了与本课题相关的OpenGL的建模知识。第四章介绍了本程序的总体框架的建立过程。结合实际需要,尝试建立单文档一多视图程序结构。第五章重点讲述了虚拟的无人机地面监控界面的实现。包括Windows框架下的OpenGL的初始化、使用OpenGL绘制虚拟仪表和三维航迹、OpenGL中显示中文等。 第六章叙述了串口通讯的实现过程。本文用Windows下多线程技术较好的解决了串口通讯中的实时性问题。包括串口的初始化、线程的同步等。 第七章简单介绍了作为无线通讯工具的MDS-2710A数传电台和远程控制无人机飞行仿真系统联机演示的结果。 第八章对课题工作进行了总结,并就下一步工作进行了展望。无人机地

20、面监控站仿真系统第二章OpenGL建模基础人们长期以来致力于计算机三维图形技术的研究。由于生成真实感图形需要较深的数学知识。今天的许多三维图形开发工具已经隐藏了这些细节,人员只需要考虑怎样创作自己的图像。OpenGL就是这样的一个开发工具使编程2.1计算机图形学的基础知识计算机图形学的基本含义是使用计算机通过算法和程序在显示设备上构造出图形来。也就是说,图形是人们通过计算机设计和构造出来的,不是通过摄像机或扫描仪等设备输入的图像。所设计和构造的图形可以是现实世界中已经存在的物体,也可以是完全虚拟的物体1612.1. 1计算机图形学的研究内容计算机图形学的研究内容,涉及到运用计算机对图形数据进行

21、处理的硬件和软件两方面的技术。主要是围绕着生成、表示物体的图形图像的准确性、真实性和实时性的基础算法,大致可分为以下几类: (1)基于图形设备的基本图形元素的生成算法,如用光栅图形显示器生成直线、圆弧、二次曲线、封闭边界的图案填充等。 (2)图形元素的几何变换,即对图形的平移、放大和缩小、旋转、镜像等操作。 (3)自由曲线和曲面的插值、拟和、拼接、分解、过滤、整体和局部修改等。(4)三维几何造型技术,包括对基本体素的定义及输入,规则曲面与自由曲 面的造型技术,以及它们之间的布尔运算方法的研究。(动三维形体的实时显示,包括投影变换、窗口剪裁等。 (6)真实感图形的生成算法,包括三维图形的消隐算法

22、,光照模型的建立,阴影层次及彩色淡图的生成算法。 (7)计算机动画,如关键帧动画、变形动画、粒子系统的生成、运动及控制算法。 (8)科学计算可视化和三维或高维数据场的可视化,包括将科学计算中大量南京航空航天大学硕士学位论文难以理解的数据通过计算机图形显示出来,从而加深人们对科学过程的理 解6。2.1.2三维图形学的概念及基本操作术语“三维”,即3D,指的是被描述或显示的对象具有三个测量维度:宽度、高度和深度。3D计算机图形实际上是平面的计算机屏幕上的二维图像,它只是提供了深度的错觉,即第三个维度。 本文着重介绍3D图形学中与本课题相关的一些基本操作,如变换、光照、消隐技术和透视等等。 1.坐标

23、变换与三维物体的交互涉及到坐标变换,主要有平移变换、比例变换、旋转变换,其实质都是矩阵变换。平移变换改变场景中模型的距离位置。比例变换可以改变模型在场景中各个方向上大小比例,即改变模型形状。旋转变换可以改变模型在场景中被观察的角度位置。2.投影变换 为了获得在世界坐标中已经建模的三维场景的显示,必须使用投影变换把三维坐标投影到二维场景。投影指定了己完成的场景如何转换成屏幕上的最终图像。投影分为平行投影和透视投影。(1)平行投影 将物体表面上的点沿平行线投射到显示平面上。平行投影保持物体的相对比例不变,这是三维物体绘图中产生比例图画的方法。物体的各个面的精确视图通过平行投影得到,但没有给出三维物

24、体外表的真实性表示。(2)透视投影 沿汇聚路径将点投影到显示平面上,对于同样大小的物体,这种方式将使离观察位置远的物体显得要小。在透视投影中,场景中的平行线投影后不再平行而成了汇聚线。使用透视投影来显示场景会显得更真实,因为这是眼球和相机镜头成像的方式。 3,视见区变换世界坐标系中要显示的区域称为窗口。窗口映射到显示器上的区域称为视口。窗口定义了显示的内容,而视口定义了在什么位置显示。由于窗口和视口的坐标系不同,为了把窗口的图形正确地显示在视口中,必须进行的变换称为无人机地面监控站仿真系统视见变换 4.消隐隐藏面的消除是显示算法中的一个重要问题,物体一般是不透光的,因此物体被阻挡部分的光线就不

25、能到达观察者眼睛中,这些部分就是隐藏部分,隐藏部分是不可见的。为了真实反映这种情况,必须消除不可见部分。常用的隐藏面算法是Z-缓冲器算法。Z一缓冲器是一组存储单元,其单元个数和屏幕象素的个数相同,也和帧缓冲器的单元个数相同,而且他们之间是一一对应。缓冲器每个单元的位数取决于Z方向上的变化范围,一般取20位即可口Z一缓冲器中每个单元的值是对应象素点所反映的对象上的Z坐标值。Z一缓冲器中每个单元的初值取成Z的极小值,帧缓冲器中每个单元的初值可以存放对应背景的灰度值。消隐和生成的过程就是给帧缓冲器中相应单元赋值的过程。如果该点的坐标值小于Z一缓冲器中相应单元的值,则说明对应象素已显示了对象上一个点的

26、属性,该点比需要考虑的点更接近观察者。这样,无论是Z一缓冲器还是帧缓冲器相应单元的值都不改变。对显示对象的每一个面上的每个点都作上述处理后,便可得到消除了隐藏面的图像。5.颜色模型 颜色模型是在某种特定环境中对于颜色的特性和行为的解释方法,通过颜色空间中的一组坐标值来表示。 我们的眼睛通过三种可见光对视网膜的刺激来感受颜色。这些光的波长为630nm(红色)、530nm(绿色)和450nm(蓝色)时的刺激达到高峰。通过光源中的强度比较,我们感受光的颜色。这种视觉理论是使用三种颜色基色:红、绿和蓝在监视器上显示色彩的基础,称为RGB颜色模型。使用由R, G和B坐标轴定义的单位立方体来描述这个模型。

27、坐标原点代表黑色,坐标点(1, 1, 1)代表白色。RGB颜色模型是一种加色模型。多种基色的强度加在一起生成另一种颜色。立方体边界中的每一个颜色点表示一个三元组R, G, B),其中R, G和B的值在。到1的范围内赋值。因此,一种颜色C*在RGB中表示为:C*一R+G+B。6光照模型 三维物体在一个二维表面上的真实显示需要深度信息来产生三方面的感觉:隐藏表面、运动视差、明暗显示。明暗显示技术取决于物体表面特征、空间位南京航空航天大学硕士学位论文置以及物体与光源的取向。明暗显示的最简单形式是仅由深度来决定,因此离光源远的物体显示的黑一些。复杂一些的模型要区别漫反射和镜面反射,漫反射把光线均匀的向

28、各个方向散射,而镜面反射在不同的方向上反射度不同。漫反射表面从各个视线方向看起来都具有相同的亮度,镜面反射的亮度依赖于入射光的方向和视线方向。2.2 OpenGL概述OpenGL是一个功能十分强大的图形库,用户可以很方便地利用它开发出有多种特殊视觉效果的三维图形。OpenGL最初是SGI公司为其图形站开发的可以独立于窗口操作系统和硬件环境的图形开发工具,其目的是将用户从具体的硬件系统和操作系统中解放出来,可以完全不去理解这些系统的结构和指令系统,只要按规定的格式书写应用程序就可以在任何支持该种语言的硬件平台上执行。作为图形硬件的软件接口,OpenGL由几百个指令或函数组成。对程序员而言,Ope

29、nGL是一些指令或函数的集合。这些指令允许用户对二维几何对象或三维几何对象进行说明,允许用户对对象实施操作以便把这些对象着色(Render)到帧缓存Framebuffer)上。由于其性能优越,因此受到用户的一致推崇。SGI公司有针对性地对OpenGL进行了改进,特别是扩展了OpenGL的可移植性,使其成为一个跨平台的开放式图形编程接口。 Microsoft开始是把OpenGL集成到Windows NT中,后来又把它集成到Windows 95 OSR2中,而在Windows 9物理操作是计算每个点的颜色和深度。因而,光栅化一个图元由两部分操作组成。无人机地面监控站仿真系统第一部分是决定窗口坐标(

30、Windows coordinates)中一个整数栅格的哪些方块由图元占用;第二部分是为每个这样的方块计算它们的颜色值和深度值。计算的结果将被传递到。penGL的下一个过程,并用此信息更新帧存中的适当单元。在OpenGL中,栅格方块不一定是方形的,光栅化的规则不受实际的栅格方块的宽高比限制。当然非方形栅格的显示必然会引起光栅化的点和线段在一个方向比在另一个方向显得宽些。方形的基片可以简化反混淆和纹理处理的难度。2.2.3 OpenGL的图形操作顺序使用。penGL建立图形模型并最终将图形绘制到屏幕上,其顺序简单描述如下:(1)利用几何图元构造物体模型,然后建立物体的数学描述口 (2)在三维空间

31、中选择合适的位置放置物体,并确定观看的最佳视点。(3)计算场景中的所有物体的颜色。物体颜色取决于材质属性、光照或纹理 映射。(4)把场景中的物体模型的数学描述及颜色信息转换到计算机屏幕的每个 像素点上,即光栅化。见图2.3:图2. 3 OpenGL图形操作顺序2.3 OpenGL中的变换OpenGL中的坐标变换是一切图形绘制的基础,几乎任何图形绘制程序都必须不同程度地依赖于坐标变换。我们知道,三维物体是在三维坐标中考虑地,但当计算机图形的点绘制到平面上时,它将是二维图像。将几何物体从三维坐标转换到屏幕上的像素位置,就涉及到坐标变换。OpenGL中的坐标变换包括:模型/视图变换、投影变换、视区变

32、换。从三维物体的坐标到最终的窗口坐标,其变换过程见图2.4:南京航空航天大学硕士学位论文产生窗口坐标产生视觉坐标产生剪裁坐标产生归一化坐标图2.4坐标变换过程2.3.1矩阵模式在调用OpenGL的变换函数之前,要指定进行变换的矩阵。函数gIMatrixMode(Glenum mode)用于指定进行变换的矩阵模式。参数mode的值可以取GL一 MODLEVIEW, GLes PROJECTION或GL TEXTURE,分别用来指定模型/视图矩阵、投影矩阵和纹理矩阵。一次只能修改一个矩阵。另外一种常用的矩阵是单位矩阵,通过函数gILoadldentity()将当前矩阵变为单位矩阵。单位矩阵起到了复

33、位的作用,回到了没有变换发生的初始眼坐标系中。2.3.2模型/视图变换从OpenGL的内部效果和最终外观的效果来看,视图变换和模型变换是相同的,只是参考点不同。视图变换本质上就是绘制对象前应用到一个虚拟对象(观察者)上的模型变换。 1.模型变换:模型变换有三个函数:glTranslatef O , glRotatef 0 , gIScalef ()。它们分别对对象进行移动、旋转、伸缩变换。函数glTranslatef (TYPE x, TYPE y, TYPE z)将当前矩阵乘上一个矩阵,此矩阵用给定的x,y,z值移动一个对象或把本地坐标系统反方向移动相同的值。函数gIRotatef(TYPE

34、 angle, TYPE x, TYPE y, TYPE z)将当前矩阵乘上一个矩阵,即以逆时针方向上从原点射向(x, y, z)的光线为轴旋转一个对象或本地坐标系。参数an列e为旋转的角度。 函数giScalef(TYPE x, TYPE y, TYPE z)是一个改变对象尺寸的函数。当使用大于1的值进行缩放时,就拉伸一个对象,反之,就压缩该对象当用一1来缩放时,就越过一个坐标轴反射一个对象。无人机地面监控站仿真系统2.视图变换: 视图变换就是改变视点的位置和方向。用于确定场景的有利位置。实现视图变换的方法有: (1)利用一种或几种模型变换命令。这些变换的结果可以看成是移动视点的位置,也可以

35、看作是移动物体的位置。 (2)利用实用库函数gluLookAt ()来定义视线。这个函数中封装了一系列的旋转和平移的指令。 (3)创建封装旋转和平移命令的实用例程。有些应用需要用简便的方法指定视图变换的定制例程。2.3.3投影和视区变换投影和视区变换的概念在第二章中己经提到,OpenGL中通过一些实用库函数来实现这两个变换。函数void gluPerspective(Gldouble fovy,Gldouble aspect,GldoublezNear, Gldouble zFar)创建一个经过透视投影变换的视图体,场景中的所有物体都将被绘制在其中。本课题中就采用了这种投影方式。 函数void

36、 glViewport(Glint x, Glint y, Glsizei width, Glsizei height)设置一个区域,这个区域用于将修剪空间的坐标映射到物理窗口的坐标。2.3. 4矩阵堆栈操作作为程序员,并不总是希望在放置每个对象之前都把模型视图矩阵复位到单位矩阵。常常会希望保存当前变换状态,放置一些对象之后再恢复它。为了简化这种操作,OpenGL为模型视图矩阵和投影矩阵各维护着一个“矩阵堆栈”。矩阵堆栈的工作方式和通常的程序堆栈方式完全一样。我们可以把当前矩阵压到堆栈中保存它,然后对当前矩阵进行修改。把矩阵弹出堆栈即可恢复它。函数gIPushMatrix()将当前的矩阵保存在

37、栈顶上,而函数glPopMatrix0弹出栈顶上的矩阵,恢复原来的矩阵。2.4 OpenGL的显示列表技术即enGL的显示列表是由一组事先存储起来留特以后调用的OpenGL函数组成,当调用这张显示列表时就依次执行表中的所列出的函数语句。注意,显示南京航空航天大学硕士学位论文列表并不等同于函数,显示列表是存储在缓存中的一段固定的命令,因此不能通过更改显示列表中的参数来实现不同的绘制效果;而子函数是一段程序代码的有序集合,它可以根据调用参数的变化而得到不同的结果。 OpenGL显示列表的设计能优化程序运行性能,尤其是网络性能。它事实是一种高速缓存,而不是动态数据库缓存。也就是说,一旦建立了显示列表

38、,就不能修改它,因为如果要求显示列表可以被修改,则用于显示列表的搜索和内存管理的开销会降低性能。 采用显示列表方式绘图比立即方式要快,可以大大提高网络性能,即当网络发出绘图命令时,由于显示列表驻留在服务器中,使得网络负担减轻到最小。在单用户机器上,显示列表同样可以提高效率。因为一旦显示列表被处理成适合图形硬件的格式,则不同的即enGL的实现对命令的优化程度将会不同。基于此,本系统中大量地采用了显示列表技术。1.显示列表如何优化性能 利用显示列表可使应用程序在下列几个方面得到优化:(1)矩阵操作 (2)光栅位图和图像(3)光照、材料性质和光照模型(4)纹理(5)多边形点画模式例如要画十个圆,可以

39、采用下面的立即方式:glBegin(GL一OLYGON) for(int i=0; i C一彝囊困 二巫三亘1奎口【亘夔夔三一一一-一.1甲we一一一消息处理程序消息处理程序消息处理程序消息处理程序消息处理程序默认的消息处理程序图3. 1 Windows编程模型称为窗口函数。对于需要用户交互的应用程序来说,事件驱动的程序设计有着过程驱动方法无法替代的优点。它在程序设计过程中除了完成所需功能外,更多地考虑了用户可能的各种输入,并有针对性地设计相应的处理程序。程序开始运行时,处于等待用户输入事件状态,取得事件做出相应反应,处理完后又返回处于等待事件状态。 2.图形设备接口无人机地面监控站仿真系统许

40、多MS-DOS程序直接写显存和打印机接口,这种技术的缺点是对于每一种显示卡和每一种打印机型号,都需要提供驱动程序软件。Windo。引入了一个名为图形设备接口GDI)的抽象层。Windows提供视频和打印机的驱动程序,程序调用GDI函数,这些函数引用名为设备环境(DC)的数据结构。Windows把环境结构映射到物理设备,并发出适当的输入输出指令。 3.基于资源的编程在进行Windows编程时,使用大量已经建立的格式在资源文件中存储数据,链接程序把二进制资源文件与C+编译程序的输出组合起来,生成一个可执行文件。资源文件包括位图、图标、菜单定义、对话框布局等。 4.动态链接库(DLL)在MS-DOS

41、环境下,一个程序的所有对象模块在建立过程中都是静态链接的,Windows允许动态链接,特别构建的库可以在运行时加载和链接,多个应用程序可以共享DLL,动态链接提高了程序的模块性。3. 3应用程序的总体设计思想在建立框架之前,应清楚程序将实现什么功能,每个功能的实现方式,以及它们之间的联系。本系统的实现采用模块化的设计思想,实现如下功能:(I)通过虚拟仪表显示无人机的飞行状态。虚拟仪表将通过OpenGL绘制。 (2)以曲线形式显示飞行参数的变化。(3)平面实时显示无人机的飞行航迹。 (4)三维回放显示无人机的飞行航迹。(5)通过预定指令控制无人机飞行。 (6)通过PC机的串口经无线数传电台与无人

42、机飞行仿真系统建立通讯联系。 各功能模块之间的关系如图3,2:南京航空航天大学硕士学位论文飞行仿真计算机图3. 2系统功能模块图 其中,要实现1-4项功能,首先应有4-v5个不同的显示窗口;同时还要能保存飞行数据。因此,程序应该有一个基于MFC的单文档一多视图的框架。3.4建立基于MFC的应用程序框架经过总体分析得出:本程序应该建立在基于MFC的单文档一多视图的框架之下。使用VisualC+的应用程序向导(AppWizard)可以很容易的建立一个基于单文档的应用程序框架。但是,最初建立的基于单文档的应用程序框架中只包含有一个视图类,即:单文档一单视图结构,显然与本课题要求不符。因此,必须通过手

43、动添加相应代码来实现单文档一多视图结构。3.4. 1应用程序框架的组成利用AppWizard我们生成了一个基于MFC的单文档应用程序框架,得到一个标准的Windows软件界面。并包含了所需的基本类:表3.1应用程序框架的初始基本类类别类名说明应用程序类CSdiMultiApp定义了一个全局对象theApp代表本应用程序文档类CSdiMultiDoc多用于对数据进行处理,与视图类联系密切视图类CSdiMultiViewCSdiMultiView类的对象与程序的窗口相连,可以各种形式直观显示数据信息主框架类CMainFrame管理文档和视图类无人机地面监控站仿真系统至此,最初框架产生,接着所要做的

44、是在视图类中添加显示代码,在文档类中添加数据处理代码,以及各种消息处理函数。这个最初的框架是一个单文档一单视图的结构,由于本系统中需要不止一个窗口,还需手动添加一个新的视图类,形成单文档一多视图的结构,并能实现视图之间的正常切换。3.4.2单文档一多视图的实现应用程序中,常常需要将一组数据以不同方式、在不同的窗口中进行显示。并希望在窗口之间切换显示。MFC框架提供了两种文档视图结构:MD工和SDI,SDI是一个文档对应一个或多个视图,但一次只能显示一个视图,MDI是多个文档对应多个视图,一次可显示多个视图。根据实际需要;本程序选择了单文档-多视图结构。 利用VisualC-I-+的ClassW

45、izard,建立新视图类:CIView,与CSdiMultiView类拥有相同的基类。剩下的就是实现视图之间切换的工作。 MFC的视图类具有动态创建的特性,因此,在相应的消息处理函数中,调用视图创建函数,利用新视图类的信息,就可以创建一个新窗口,同时销毁旧窗口,实现切换。这里的消息是指视图切换消息,可以是菜单命令或是控件消息。本程序用菜单命令传递切换消息。具体步骤如下: 1.建立视图切换菜单在已有的框架菜单资源中,添加名为“窗口”的顶层菜单。“窗口”菜单中将包含与要进行切换的视图类相对应的子菜单。其名称分别为:仪表显示和航迹演示。ID号分别为:ID_ NEW一 VIEW1和ID- NEW VI

46、EW2。菜单ID号是菜单唯一标识,也是识别菜单消息处理函数的标志。2.创建菜单消息响应函数 应用程序框架是用来管理窗口的,在框架类中处理有关视图的消息是最恰当的。在ClassWizard中为CMainFrame类添加菜单IDes NEWes VIEW1和ID一 NEWee VIEW2的消息处理和菜单更新函数。在消息处理函数中添加必要的代码,以调用视图切换函数。 3.编写视图切换函数。函数过程要能实现先销毁旧窗口,然后创建新窗口。过程如下:南京航空航天大学硕士学位论文Mew*pActiveView=GetActiveView();/获得当前活动视图的指针pActiveView-ShowWindo

47、w(SW HIDE);pActiveView-DestroyWindow();/旧视图隐藏/销毁旧视图CCreateContext Context;/CCreateContext是动态创建视图的结构体/pViewClass指向新视图类,Context.Context.NewViewClassCurrentDoc二该类还未产生对象pViewClass;GetActiveDocument()刀动态创建新视图对象,获得其指针Mew*pview二STATICes DOWNCAST(CView, CreateView(pView-ShowWindow(SW SHOW);/显示新窗口 pView-OnIn

48、itialUpdate();SetActiveView(pView);/激活新窗口 RecalcLayout();/新视图创建完成,函数返回至此,单文档一多视图结构架设完成,其中的类及其功能变为:表3.2应用程序框架的最终包含的类类别类名说明应用程序类CSdiMultiApp定义了一个全局对象theApp代表本应用程序文档类CSdiMultiDoc用于对飞行数据进行处理,与视图类联系密切视图类1Clview虚拟仪表显示飞行参数视图类2CSdiMultiView回放显示三维航迹主框架类CMainFrame管理文档和视图类编译并运行程序,单击“窗口”菜单中的窗口名,即可实现切换。无人机地面监控站仿

49、真系统3.4.3车甫助显示窗口的建立这里所说的辅助显示窗口,是以曲线显示飞行数据变化的窗口,以及平面显示航迹的窗口。这两个窗口并不是视图类,而是两个无模式对话框。其不仅生成和销毁简单,而且显示也比较灵活,它可以最小化停靠在屏幕的任何可见位置。它还可以实时处理数据,与主窗口互不影响。基于这些特性,采用两个模式对话框来辅助主窗口,实时显示参数变化。提供给用户更多信息。建立步骤如下:1.建立新的对话框资源 在资源编辑器中,编辑两个新的对话框资源,添加所需的控件,并生成相应的对话框类CCOptionDlg和CFlightPatho 2.在CMainFram。类中添加两个成员指针变量,分别指向两个对话框类。CCOptionDlgCFlightPathm_pDlg;m_pDlgl3.添加菜单命令同ClView类一样,需要在框架的“窗口”菜单中加入“数据显示”和“航迹显示”子菜单。当然,还要有相应的命令响应函数。4.动态创建无模式对话框在命令响应函数中加入创建代码:m pDlg=new CCOptionDlg;/建立对象m-pDlg-Create(IDD_ C

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报