基于移动互联网的交互式卫星地面管理终端

一、研究意义

1.1项目成果对不同人群都有着积极意义
在这个航天事业高速发展的时代,航天事业对广大群众有着很大影响力,但作为现代最重要的高新技术之一,各类人群在某种程度上了解有关它的知识显得高不可攀。
而智能手机几乎是当今社会各类人群的必备之物,一款航天类手机APP能够很好的满足各类人群的需求,但遗憾的是,程序员难以开发出专业性较强的航天类APP,航天工作者很少有机会学习和用到开发手机APP的开发软件,同时兼具高移动端编程能力和高航天专业素养的人往往早已在各大航天研究所工作,献身国防,难以分心实现如此一款“教学式”APP。
此款APP能够通过它实现的如下功能,打破这个局面。1.显示在轨卫星的轨道六根数和温度,动态显示卫星运动时的图像、所余电量。客户端能与服务器在局域网条件下进行通信,更新在轨卫星。2.能够显示卫星的3D模型。3.通过手势检测,用户可以实现卫星的姿态控制,并能够动态显示卫星当前的姿态角。4.实现了APP访问JavaScript搭建的网站的功能,集成了航天器系统知识及北斗卫星导航系统官网和美国Space-Track官网。
对于相关教学工作者,这款APP能够课堂辅助教学。相关教学者让学生下载这款方便快捷的手机APP之后,学生能够感受到互动性强的GUI人机界面,实现控制现实世界中难以控制的卫星的功能,并且还能了解到卫星的欧拉姿态角与卫星所处方位的关系,加深学生对课堂内容的印象,提高了课堂效率。
在这里插入图片描述
对于学生,这款APP能够让他们对航天知识有一个形象直观的了解。学生在此款APP中能够观看卫星围绕地球运动时的动画,并且了解卫星的轨道六根数与所处轨道的关系,加深了他们对知识的理解程度。
在这里插入图片描述
对于航天爱好者,这款APP在很大程度上满足了他们的需求。航天爱好者常常需要一款生动形象的航天类APP来满足自己的好奇心和求知欲。这款APP无疑将成为他们最好的选择。
对于广大群众,这款APP有极大的科普性。广大群众能够自己控制卫星的姿态,观看卫星围绕地球运动时的动画,并且快速了解有关航天器系统的知识、北斗卫星导航系统的状况促进普及广大群众了解航天知识。
在这里插入图片描述
对于科研工作者,这款APP提高了他们的工作效率。科研工作者通常需要可靠性强、精度高的数据来支持他们的工作,这使得他们对数据的获取变得极为困难,而此款APP能够帮助他们快速获取各种可靠性强、精度高的航天类数据,提升了他们的工作速率。在这里插入图片描述
除此之外,这款APP方便了卫星管理地面基站人员对卫星的管理。此款APP实现了基于移动互联网的卫星管理功能,采用成熟的wifi技术,控制在轨卫星,改变以往卫星控制只能基于固定的地面基站模式,使卫星的控制更加便捷,提高了卫星管理效率。
综上所述,该款APP有能力满足不同人群的需求,有着极大的研究意义。

二、项目研究过程

2.1 客户端平台的选取
市面上智能手机的操作系统主要有 Android、IOS 和 Windows Phone 等。2016 年上半年, 中国手机市场的 Android 占有率为 67.8%,IOS 占有率为 27.2%,。从市场占有份额上分析,当前最普及的智能手机操作系 统为 Android 操作系统。
在这里插入图片描述
自 Android 操作系统发布 4.0 版本之后,谷歌开始重视对 Android 系统的优化,对网络通信耗电量、内存管理和权限管理等一系列消费者所关注的问题进行优化。现在,即便是一般的 Android 手机,也能实现长时间持续流畅的工作,特别是目前华为推出方舟编译器后,Android手机的操作体验提升至可以与苹果公司旗下 IOS 操作系统比肩。
在这里插入图片描述
根据Android手机的优点,我们最终选取Android手机的安卓系统为我们的测试系统。
2.2开发软件的选取
Android 系统从底向上一共分了 4 层,每一层都把底层实现封装,并暴露调用接口给上一 层,这 4 层结构分别是:Linux 内核(Linux Kernel)、中间件、应用程序框架(Application Framework)、应用程序(Application)。Android 是一个开放、自由的移动终端平台,底层是 以 Linux kernel 为核心,包括操作系统、中间件、应用软。应用程序运行在Android 系统的顶层,一般使用 JAVA 编程语言进行开发。
开发 Android 应用程序的开发工具一般可以选用 IntelliJ IDEA、Eclipse 或 Android- studio。
IDEA是JetBrains公司推出的Java集成开发环境,android studio是基于IDEA Commutity Edition开发的,因为Community 版本不仅是免费的而且是开源的。虽然Android-Studio是基于IDEA开发的,但Android-studio是一个纯粹的Android开发环境,更有利于安卓系统APP的开发。
Eclipse是老牌的开发工具,添加ADT插件之后就能开发android程序了,因为是开源的,所以开发起项目时比较容易。但是Android-studio提供了集成的Android开发工具用于开发和调试,优点更多。1. Andorid-studio构建程序界面更方便。在Eclipse中构建APP的界面,不仅效果和真机上的差别太大,而且速度很低。但是Android-studio的界面显示就非常清晰,而且修改非常迅速。2. Android-studio打印信息更详细. Android-studio打印的信息可谓是应有尽有,几乎所有在项目中遇到的问题,包括编写、设计、开发、打包、构建等得错误信息都会在控制台上打印出来,便于问题的准确发现和定位。反观Eclipse中的打印信息则寒碜得多,除了LogCat之外就是控制台,有时布局文件中的多了个逗号“,”都发现不了。3、AndroidStudio编辑历史更详细。我们用Android-studio在工作台上修改代码、修改布局文件或者删除文件等,记录得非常细致,每一个操作都有记录,每一个操作都能够撤销。而Eclipse中删除文件后,之前的编辑记录就会被清空,及时你恢复文件也经常会出错,之前那么多的操作如何回滚是一个很大问题,除非使用了版本控制工具。4.AndroidStudio智能识别更强大。智能识别在Android-studio中是一个非常大的亮点,比如我们输入Fp,Android-studio会自动向我们推送含有FP或者fp、甚至是%F(f)%P§的选项,中间不管隔着多少个字符,或者大小写不同,系统都能够识别出来并向我们推送。5. Android-studio的资源文件可以在代码中预览。进行开发时,资源文件的内容可以在代码中实时预览,这不仅包含了布局文件、图片文件,甚至在colors.xml文件中定义的颜色,都能在代码编辑器中看到,这对于Eclipse来说是难以实现的。6. Andorid-studio提供了超过10个不同的视图。开发界面中为我们提供了超过十种视图,每种视图显示的内容和重点,以及最后呈现出来的代码结构都不一样,是非常地强大和方便。比如你偏向于显示各个项目的内容,就在左侧选择Project后在上方切换到Project或者Project files,各个项目的信息就会单独显示。
综上所述,我们最终选取Android-studio进行APP的开发。
2.3服务器与客户端的通信
实现服务器与客户端的通信有两种方式,一种是使用TCP协议,一种是使用UDP协议。
使用TCP协议进行客户端于服务器的通信有着可靠、稳定的特点, 因为TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源,这对航天领域所要求的可靠性强、精度高的数据有着重大意义。而使用UDP协议进行通信不可靠,不稳定。因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。
综上所述,我们最终选取Android-studio进行APP的开发。
2.4卫星的3D模型
使用Android-studio开发卫星的3D模型有使用集成的OpenGL语言和导入unity开发的3D模型两种方式。
OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植。它具有七大功能:1.建模:OpenGL图形库除了提供基本的点、线、多边形的绘制函数外,还提供了复杂的三维物体(球、锥、多面体、茶壶等)以及复杂曲线和曲面绘制函数。2.变换:OpenGL图形库的变换包括基本变换和投影变换。基本变换有平移、旋转、变比镜像四种变换,投影变换有平行投影(又称正射投影)和透视投影两种变换。其变换方法有利于减少算法的运行时间,提高三维图形的显示速度。3.颜色模式设置:OpenGL颜色模式有两种,即RGBA模式和颜色索引(Color Index)。4.光照和材质设置:OpenGL光有辐射光(Emitted Light)、环境光(Ambient Light)、漫反射光(Diffuse Light)和镜面光(Specular Light)。材质是用光反射率来表示。场景(Scene)中物体最终反映到人眼的颜色是光的红绿蓝分量与材质红绿蓝分量的反射率相乘后形成的颜色。5:纹理映射(Texture Mapping)。利用OpenGL纹理映射功能可以十分逼真地表达物体表面细节。6:位图显示和图象增强图象功能除了基本的拷贝和像素读写外,还提供融合(Blending)、反走样(Antialiasing)和雾(fog)的特殊图象效果处理。以上三条可使被仿真物更具真实感,增强图形显示的效果。7:双缓存动画(Double Buffering)双缓存即前台缓存和后台缓存,简言之,后台缓存计算场景、生成画面,前台缓存显示后台缓存已画好的画面。能够实现较强互动性的可视化卫星模拟功能。
而unity的内建工具不够完善;渲染差,光照系统糟糕,阴影bake有bug,只能勉强达到2A游戏入门水平;对于控制器支持较差,一些如手柄震动、VR控制器空间定位的功能引擎未集成,需要第三方插件或额外代码;没有材质编辑器,需要第三方插件;Prefab不支持继承;没有内建的Level Stream支持。
综上所述,我们最终选取OpenGL作为开发卫星3D模型的语言。

三、项目创新点

1.基于移动互联网的卫星管理。采用成熟的wifi技术,改变以往卫星控制只能基于固定的地面基站模式,使卫星的控制更加便捷,提高了卫星管理效率。
2. 具有较强互动性的可视化卫星模拟。能够将的卫星姿态控制通过手势检测实现、静态的轨道六根数转换为动态的卫星运动时的动画,辅助了老师教学,帮助了学生形象的理解航天知识,促进普及广大群众了解航天知识。
3.集成各大航天类网站。打开这款手机APP即可迅速了解有关航天系统的知识,还能便捷地进入北斗卫星导航系统官网及美国空军Space-track官网,既有利于科研工作者获取相关航天数据,又有利于培养学生的航天热情。
4.促进了航天类知识普及。航天作为现代最重要的高新技术之一,有着高门槛、高标准的特点,但本款APP凭借着其强互动性和科普性的优势,将航天变得不是那么遥不可及,对相关教学工作者、学生、广大群众都有着重大意义。

四、应用前景

1.卫星地面基站工作人员可通过此款APP,更加便捷地控制卫星,提高了卫星管理效率。
2.凭借其较强互动性的可视化卫星模拟和集成各大航天类网站的功能,辅助了老师教学,帮助了学生形象的理解航天知识和培养学生的学习兴趣,促进普及广大群众了解航天知识,具有较强的科普性。
3.科研工作者可通过此款APP,快速获取航天类数据,提高了工作效率。

五、收获和体会

1.我们在搭建好服务器,与客户端进行通信时,卫星列表没有更新,百度也无法解决。最终我们将遇到的问题翻译成英文,在必应国际版上搜索,终于找到了解决方案。从中我们的收获是:a. Android虽然提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI线程中调用。b.当我们遇到问题用中文在搜素引擎里搜索不能解决时,可以试试用英文搜素,可能有意想不到的收获。
2.当我们为Android-studio的主界面的背景定义一个较大的文件后,忽然整个项目所有的Activity都显示错误,无法运行,这代表着我们辛辛苦苦做了六个月的工作成果将无法展示,项目陷入瘫痪。我们在五一四天假里对长达七千行的源代码进行逐一排查,最终很欣慰的找出了问题所在:Android Studio是基于 IntelliJ IDEA的,而IDEA对文件大小是有一个默认的大小限制的:当我们的项目非常大的时候,R文件可能会超过这个最大值,而导致IDE显示异常,这个时候我们可以通过自定义这个最大值来修复。
3.我们采用imageview设置用户登陆背景,但是真机测试时所显示的界面与资源文件中的不相同。经过排查,我们找到了原因所在,原来是我们资源文件中图片采用了JPG格式,没有采用PNG格式。JPG是有损格式,PNG是一种无损格式。JPG在处理颜色很多的图片时,根据压缩率的不同,有时会去掉一些肉眼识别差距较小的中间颜色。但是PNG对于无损这个基本要求,会严格保留所有的色彩数。Android的界面能用PNG最好是用PNG,因为32位的PNG颜色过渡平滑且支持透明。JPG是像素化压缩过的图片,质量已经下降了。其实在res下icon用的都是PNG格式,就是说Google推荐使用的是PNG格式的图片。

六、展望

1.当前我们的卫星3D模型与实际卫星还相差很大,我们需要进一步为3D模型贴上纹理,使之更像真实的卫星,提高用户的体验度。
2.我们还想进一步实现航天类数据转换的功能。如空间坐标系的转换,该款APP能够对航天领域有关卫星应用和深空探测中常用的参考系进行转换,不仅有利于学生了解空间坐标系的知识,更有利于科研工作者批量处理数据,提高工作效率。
3. 在该款APP实现基于局域网的卫星通信上,增加能监控该局域网下所有的卫星设备,自动决定当前轨道是否运行新卫星的加入,方便卫星管理人员的工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值