航天器在轨运行的三维可视化仿真.docx

上传人:b****8 文档编号:23764858 上传时间:2023-05-20 格式:DOCX 页数:14 大小:783.57KB
下载 相关 举报
航天器在轨运行的三维可视化仿真.docx_第1页
第1页 / 共14页
航天器在轨运行的三维可视化仿真.docx_第2页
第2页 / 共14页
航天器在轨运行的三维可视化仿真.docx_第3页
第3页 / 共14页
航天器在轨运行的三维可视化仿真.docx_第4页
第4页 / 共14页
航天器在轨运行的三维可视化仿真.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

航天器在轨运行的三维可视化仿真.docx

《航天器在轨运行的三维可视化仿真.docx》由会员分享,可在线阅读,更多相关《航天器在轨运行的三维可视化仿真.docx(14页珍藏版)》请在冰豆网上搜索。

航天器在轨运行的三维可视化仿真.docx

航天器在轨运行的三维可视化仿真

项目编号:

A15165

 

本科生科研训练计划项目(SRTP)项目成果

项目名称:

航天器在轨运行的三维可视化仿真

项目负责人:

林凡庆

项目合作者:

曲大铭侯天翔杨唤晨孙洁

所在学院:

空间科学与物理学院

专业年级:

空间科学与技术2013级

 

山东大学(威海)

大学生科技创新中心

航天器在轨运行的三维可视化仿真

空间科学与物理学院空间科学与技术专业林凡庆

指导教师许国昌杜玉军

摘要:

航天器在轨运行的三维可视化程序设计是建立卫星仿真系统最基础的工作。

航天器在轨运行的三维可视化仿真有着重要的意义:

它既可以使用户对卫星在轨运行情况形成生动直观、全面具体的视觉印象,又可以大大简化卫星轨道的设计过程。

本文首先构建了航天器在轨运行的三维可视化仿真程序的基本框架,然后对涉及到的关键理论与知识,如时间、坐标转换、卫星轨道理论、OpenGL图形开发库等也做了阐述,最后介绍了我们的主要工作和科研成果。

我们的主要成果是实现了卫星在轨运行的三维可视化仿真并对原有程序进行了改进。

关键词:

航天器在轨运行三维可视化程序设计OpenGL

Abstract:

Theprogrammerofthree-dimensionalvisualizationonsatellitein-orbitingistheutmostfoundationalworkinestablishingsatelliteemulationsystem.Thethree-dimensionalvisualsimulationonsatelliteisofgreatsignificance:

itassuresthatusersmayreceiveavividanddirect-viewinganditalsocangreatlysimplifythedesignprocessofsatellitebasicframeofthree-dimensionalvisualsimulationprogramonsatellitein-orbitinghasbeensetupfirstly.then,relatedessentialtheoryandknowledgesuchastimesystem,coordinateconversation,satelliteorbit,OpenGLandetcalsohasbeenintroduced.Lastly,ourmainworkandresearchresultshasbeenintroduced.Ourmainachievementisthatwerealizedtheprogramofthree-dimensionalvisualizationonsatellitein-orbitingandweimprovetheoriginalprogram.

Keywords:

satelliteIn-orbitmovement3DvisualizationprogrammingOpenGL

一、引言

当今社会是一个信息的社会,谁掌握了信息的主动权,就意味着掌握了整个世界。

而人造卫星是当今人们准确、实时、全面的获取信息的重要手段,卫星的各项应用已经成为信息社会发展的强大动力。

而人造卫星的应用是一项高投入、高风险、长周期的活动,仿真技术由于具有可控制、可重复、经济、安全、高效的特点,在人造卫星应用领域以至整个航天领域都起到了重大的作用。

目前国际上较常用的卫星仿真软件主要有美国的Winorbit、美国CybercomSystem公司研制的CPLAN和AGI公司的STK。

其中以STK功能最为强大,界面最为友好,在卫星仿真领域占有绝对领先地位。

STK功能虽然强大,但其价格昂贵,源码也不公开,无法自主扩展,并且该软件被限制了对中国的销售,所以中国不得不独立开发适于自己的卫星仿真系统[1]。

而且国内目前卫星系统的仿真软件很少,主要有一些大学开发的小型的卫星系统仿真软件,还有北京航天慧海系统仿真科技有限公司开发的Vpp-STK航天卫星仿真开发平台。

总体来说,国内目前在这个方面的技术还相当不成熟,因此研究和自主开发卫星仿真系统意义重大。

仿真可视化,就是把仿真中的数字信息变为直观的,以图形图像形式表示的,随时间和空间变化的仿真过程呈现在研究人员面前,使研究人员能够知道系统中变量之间、变量与参数之间、变量与外部环境之间的关系,直接获得系统的静态和动态特征[2]。

本文首先构建了航天器在轨运行的三维可视化仿真程序的基本框架,然后对涉及到的关键理论与知识,如时间、坐标转换、卫星轨道理论、OpenGL图形开发库等也做了阐述,最后介绍了我们的主要工作和科研成果。

二、程序设计综述

(一)程序的总体框架

我们根据太阳、地球、月球等天体运行的规律、人造卫星轨道理论以及常用的时间和坐标系统的转换关系,以OpenGL仿真技术为手段,在Windows平台上使用VisualC++高级编程语言,实现卫星在轨运行的三维可视化表达的程序。

我们设计的程序的主要功能有:

1.显示地球、卫星和星空背景等空间对象运动变化过程。

2.动态显示卫星轨迹、覆盖范围等本身不可见对象。

3.视点变换和多场景的一致显示。

4.在有条件的情况下,实现卫星轨道的设计与变更、轨道预报。

我们根据程序的主要功能将程序分为4个模块:

数据读取和预处理、实体建模和运动建模、视景仿真驱动和三维显示输出。

 

图1程序总体框架图

(二)系统设计原则

1.通用性和可扩展性[3]。

为了保证系统的通用性和便于对系统进行扩展和完善,采用面向对象程序设计方法;采用类和动态链接库(DLL)进行模块化设计。

2.满足实时动态的仿真要求[3]。

为满足系统实时性,仿真算法、数据通讯等要求达到一定速度。

3.结构化、标准化、可扩展的输入输出方式[3]。

4.良好的人机交互功能[3]。

采用OpenGL技术显示卫星轨道,使画面清晰、直观;允许用户随时查询、修改和保存数据;允许同时打开多个仿真窗口,可以同时对多个方案进行仿真和比较,进行分析,也可以对同一方案的不同运行阶段同时进行仿真和比较。

5.数据快速的交互能力[3]。

三、基本理论

(一)OpenGL仿真技术

OpenGL(OpenGraphicsLibrary)是美国高级图形和高性能计算机系统公司(SGI)开发的一套计算机图形处理系统,是图形硬件的软件接口。

由于OpenGL的优越性能,目前OpenGL已被认为是高性能图形和交互式视景处理的标准[4]。

利用OpenGL实现三维动画的基本步骤如下:

1.建模

要实现三维动画,首先在三维用户坐标系中建立运动物体的三维模型,对于复杂的三维动画还要建立运动物体周围的三维场景。

三维模型通常采用点(Point)、线(Line)和多边形(Polygon)等元素建立。

在OpenGL中可以利用函数glBegin()和glEnd()指明一个几何元素的定义开始和结束,用glVertex3*()、glNormal3*()和glColor3*()分别指明顶点、法向量和颜色。

2.渲染

渲染包括消隐、光照、材质、纹理映射等方面。

消隐就是消除被遮挡的不可见的线或面,得到具有真实感的图形。

在OpenGL中,消隐是通过深度测试实现的。

消除深度缓存用函数glClear()实现,启动深度缓存分别用函数glEnable()实现。

为了使模型具有真实感,必须进行光照处理,使模型表现出明暗效果。

通常,光源从颜色、位置、方向等方面刻画。

光源用函数glLight*()定义,启动光照和光源都可以使用函数glEnable()实现。

在光照下,对模型进行明暗处理,模型就表现出明暗效果。

在OpenGL中,用单一颜色处理的称为平面明暗处理,用许多不同颜色处理的称为光滑明暗处理。

设置明暗处理模式的函数为glShadeModel()。

OpenGL用材料对光的红、绿、蓝三原色的反射率来近似定义材料的颜色,定义材质用函数glMaterial*()实现。

物体的表面一般表现出一定的纹理,在模型渲染中纹理映射也是比较重要的一方面。

3.图形变换

图形变换是三维动画实现的关键一步,只有通过图形变换,三维物体模型才能表现出运动效果。

实现物体运动,通常要用到平移变换、旋转变换、缩放变换等,这些变换分别用函数glTranslate*()、glRotate*()、glScale*()实现。

而且三维动画要在屏幕上显示出来,还需要进行透视投影变换、裁剪变换、视口变换。

这些变换分别用函数gluPerspective()、glClipPlane()、glViewport()实现。

图形变换通常要用到矩阵堆栈操作。

4.交换帧缓存

为了提高动画输出效率,OpenGL采用了双缓存技术,用函数SwapBuffers()实现交换帧缓存。

(二)时间系统和标志法

常用时间系统及转换关系:

1.世界时UT

格林尼治零子午线处的民用时称为世界时,北京时间减去8小时即得到世界时。

世界时系统是以地球自转为基础的,为了弥补极移现象和地球自转速度的不均匀性造成的缺陷,需要在世界时UT中引入极移改正Δλ和地球自转速度的季节性改正ΔTs。

由此得到的世界时分别称为UT1和UT2。

未经改正的世界时则用UT0表示。

三者关系如下:

UT1=UT0+Δλ

(1)

UT2=UT0+ΔTs

(2)

Δλ、ΔTs的值国际地球自传服务区(IERS)会给出。

2.国际原子时TAI

以原子能级跃迁辐射频率定义的标准时间单位,取1958年1月1日世界时零时为其起算点。

国际原子时(TAI)与UT1有如下关系:

(UT1-TAI)=+(3)

3.地球力学时TT

在天文学中,天体的星历是要根据天体力学中的运动方程计算的,在这些天体运动方程中,时间是一个独立变量,被定义为力学时。

地球力学时取原子时的秒为其秒长,故它是一个均匀的时间系统。

地球力学时TT和国际原子时TAI有如下关系:

TT=TAI+(4)

时间标志法:

时间标示法是指表示时间的方法。

它有别于时间系统的概念,而是建立在时间系统上的时间表达方式。

常用的时间标示法有:

历法(即通用时)、儒略日及约化儒略日等[1]。

历法符合人们的生产生活习惯,但不适合于科学计算。

而儒略日(JD)则是一种采用连续数值标志时间的方法。

它是这样定义的:

从公元前4713年1月1日12时开始计算的天数。

这种标志方法非常适合科学计算,并可以很方便的将不同的时间标志法联系起来。

然而用儒略日标志的现今时间数值很大,甚至连计算机都无法精确的表示。

为了解决这一问题,1973年国际上提出了约化儒略日(MJD)时间标志法,即从儒略日中减去天。

(三)坐标系统

空间坐标系分为两大类:

一类是地球坐标系,该坐标是一种非惯性坐标,是固结在地球上的,随地球一起旋转,又称地固坐标系,如地心大地坐标系、地球固连坐标系;另一类是天球坐标系,该坐标系与地球自转无关,可以建立惯性坐标系,用此坐标系可以方便的描述航天器轨道,如地心天球坐标系。

1.天球赤道坐标系

天球赤道坐标系的三个坐标是(r,α,δ)。

r为地心到空间某点N的距离;α在赤道面内,为春分点向东到N点的矢径在赤道面上投影的角距,通常称为赤经;δ为N点的矢径与赤道面的夹角,向北为正,通常称为赤纬。

 

图2天球赤道坐标系

2.地球坐标系

地球坐标系是与地球固连在一起,建立在地球或地球参考椭球之上的坐标系。

地球空间直角坐标系(这里实际上指瞬时真地球坐标系)的原点位于地心,Z轴和瞬时自转轴重合,指向北,X轴指向经度零点(即格林尼治子午线与赤道的交点),Y轴组成右手坐标系。

(四)卫星在轨坐标及其覆盖区域的计算

卫星在惯性空间的运动可以用6个经典的轨道要素描述:

半长轴a,偏心率e,右升交点赤经Ω,轨道倾角i,近地点幅角ω,真近点角f。

通过这6个轨道要素可以计算卫星在惯性空间的位置矢量和速度矢量,如图5。

为了在三维场景中绘制卫星的覆盖区域,需要计算卫星覆盖边界点的经纬度坐标。

当地球被近似为球体时,卫星覆盖区域是地球三维模型上的一个圆,如图3所示。

图中Oe为地心,O为卫星的星下点,过O点的经线与卫星覆盖圆交于P1、P22点,A为覆盖圆上一点。

如图3所示,在球面三角形△POA中,有以下关系式:

Δλ=λ2-λ1

h1=90°-δ1

h2=90°-δ2

式中:

λ1,λ2分别为O点和A点的经度;δ1和δ2分别为O点和A点的地心纬度。

 

图3卫星覆盖区域图4球面三角形

解此球面三角形,可以得到如下关系式:

 

由此式可以解出Δλ和l2,在解三角函数时要注意角度的象限,l2的范围是0~180°,所以由第一个式子可直接解出,而Δλ的范围是-180°~180°,所以要分别解出正弦和余弦值以确定象限。

由0~180°变换α,就可以求出覆盖圆上各点的经纬度坐标。

图5卫星轨道根数示意图

四、研究过程

(一)形体建模

我们运用OpenGL仿真技术,在VisualStudio上运用C++高级编程语言,来实现三维物体的形体建模。

这里所说的形体建模不是单指物体几何形状的确定,而是要构造出一个比较逼真的形体,其中包括物体的材质属性、光照、纹理等一些特性。

1.星空

我们在程序中用纹理贴图的方式进行了星空的绘制,这样绘制星空相对较为简单,但图像较为模糊,而且只能显示部分星空。

在对老师原有程序的改进上,我们根据星表的数据,在假想的天球上,根据星体的视星等和赤经赤纬,在对应的位置上绘制出相应亮度的星体,这样绘制的星空更具有真实感,实现了对星空较好的仿真。

2.地球

地球的模型相对来说比较简单。

为了能在屏幕中看到地球,需要将地球推入屏幕背后足够的距离以便使我们可以看见全部的场景,所以我们首先用glTranslatef*()函数将当前点移入屏幕背后一定距离;然后我们用函数gluSphere*()绘制了一个球;因为用OpenGL进行纹理贴图时,图像的宽和高必须是2的n次方,所以我们选择了一幅像素为2048*1024的地球位图,然后我们用纹理映射函数glTexCoord2f*()及相应的一系列函数将地球位图贴在了我们所绘制的球上。

在贴纹理的过程中,我们发现纹理的方向与坐标轴的实际方向不符,然后我们利用glRotate*()函数使地球转动相应角度,从而使地球方向与坐标轴方向对应。

3.卫星

有两种方法来建立卫星模型,一是直接在程序中用OpenGL来绘制卫星模型,二是用3D制图软件绘制卫星三维模型,然后将卫星三维模型读进程序。

本程序中的卫星模型是用第一种方法实现的。

我们用3Dmax制作了一个卫星模型,但没有成功的把它读进程序之中。

4.太阳和光照

这里我们将太阳简化为一个球体,为了使其看起来逼真,我们将一个光晕的位图贴到中心与太阳中心重合的正方形上。

为了给地球和其他物体提供光照,本程序将一个辐射白光的点光源设置在太阳的中心位置。

 

图5太阳模型效果图

(二)数据源

程序所采用的数据源主要有两种:

轨道根数数据和依巴谷星表。

依巴谷星表是欧洲空间局(简称ESA)依巴谷天体测量卫星(Hipparcos)计划的主要成果。

依巴谷卫星由欧洲空间局于1989年8月发射升空,1993年8月完成历史使命,观测寿命为4年,用以测量恒星视差和自行,以古希腊天文学家喜帕恰斯的名字命名。

其中在1989年11月至1993年3月共40个月期间,卫星观测得到了高质量的科学资料。

利用喜帕恰斯卫星的测量数据发布了依巴谷星表.

 

图6星表数据示例

(三)动画的实现

计算机动画是采用计算机技术,以一定的速率连续播放的由计算生成的静态离散画面(帧),利用人眼的视觉残留特性,这些画面序列在人眼的视网膜上形成了连续运动图像。

在Windows编程模型中实现动画效果的基本思路是每次以不同却连续的图像刷新显示视窗。

OpenGL采用了双缓存技术,OpenGL在绘图之前,事先分配了两块缓存区域,即前台缓存和后台缓存:

后台缓存用来计算场景、生成画面;前台缓存用来显示后台缓存已画好的画面。

当显示完一帧缓存后,再将两个缓存区进行交换,不断重复上述工作就实现了画面的更新,也就实现了动画。

五、科研成果

(一)软件功能及运行效果

该软件可以模拟从宇宙中某一视角观察地球、太阳和卫星的运行状态,画面清晰,仿真效果良好。

图7软件界面

(二)原有软件添加星表数据后的运行效果

图7原有软件界面

参考文献:

【1】杜玉军著:

《卫星轨道的三维可视化程序设计》,武汉大学,2008。

【2】吴家铸,党岗,刘华锋等著:

《视景仿真技术及应用》,西安:

电子科技大学出版社,2001。

【3】薛国凡,孙卿,徐明毅,王乘著:

《卫星可视化仿真与跟踪概论》,华中科技大学,2004。

【4】OpenGL图形编程[EB/OL].中国游戏开发者网站,。

【5】任民宏著:

《利用OpenGL实现三维动画》,陕西理工学院计算机科学与技术系,2007。

【6】D.Shreiner&M.Woo&J.Neider&T.Davis.“OpenGLProgrammingGuide”,America:

AdditionWelsey,2008.

【7】王威,于志坚著:

《航天器轨道确定:

模型与算法》,北京:

国防工业出版社,2007。

【8】王鹏...[等]著:

《空间环境建模与可视化仿真技术》,北京:

国防工业出版社,2012。

【9】X.GuoChang.“GPS:

Theory,AlgorithmsandApplications”,Springer-VerlagBerlinandHeidelbergGmbH&;Softcoverreprintofhardcover2nd.

【10】宋永军,苏鸿根著:

《VC环境下OpenGL动画的实现方式与特性分析》,中国科学院,2004。

【11】龚立民著:

《基于OpenGL的地球/地图三维模拟软件设计》,黑龙江省机场管理集团有限公司,2006。

【感想与体会】

第一次当科研立项的项目负责人,我在时间安排、团队协作等方面缺乏经验,以至于在整个科研立项过程中,我们走了很多的弯路,前期的调研过程占用了我们太多的时间。

还有,我们的编程基础太过薄弱,学习OpenGL和编程语言花费掉了我们大量的时间。

同时在和老师的交流上缺乏主动性,使我们浪费掉了许多从老师那里获取经验的机会。

但通过科研立项,我也收获颇多,在科研立项的过程中,我学习了大量的编程知识,积累了丰富的编程经验。

同时也学到了一些关于卫星轨道理论、时间与坐标系统、3D模型建立等的相关知识。

总体而言,我们收获了很多知识,积累了丰富的科研经验,但我也存在经验不足,粗心懒惰等缺点。

希望在以后的科研工作和学习中,我能更加努力的提高自己,发现自己的不足,改掉自己的缺点,争取取得更好的成果。

最后,感谢杜老师的耐心指导和小组成员的努力。

【指导教师评语】

项目选题有较好的现实意义和应用前景,小组成员通过学习卫星轨道和OpenGL仿真的基础知识和方法,对指导老师原有的卫星轨道仿真软件进行了一定改进。

但总体上程序还有较大改善的空间,希望继续努力。

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1