收藏 分销(赏)

学位论文-—2015年基于传感器的移动增强现实实现应用.doc

上传人:胜**** 文档编号:3040022 上传时间:2024-06-13 格式:DOC 页数:58 大小:1.44MB 下载积分:10 金币
下载 相关 举报
学位论文-—2015年基于传感器的移动增强现实实现应用.doc_第1页
第1页 / 共58页
学位论文-—2015年基于传感器的移动增强现实实现应用.doc_第2页
第2页 / 共58页


点击查看更多>>
资源描述
哈尔滨工业大学 厦门大学软件学院 基于传感器的移动增强现实 实现及应用 研究生姓名 白 浩 东 院 系 软件工程学院 专 业 计 算 机 研究方向 移动增强现实 指导教师 强彦 提交日期 2014年5月 哈尔滨工业大学 哈尔滨工业大学 摘 要 增强现实是将现实环境和虚拟信息进行适当合成的技术,与此相对应的是虚拟现实技术,则是将用户放置在一个完全人造的虚拟世界之中。增强现实在真实场景的基础上叠加信息:通常是将计算机生成的有关图形或者额外文字信息叠加到用户周围环境,完成视觉说明或者任务引导。 由于桌面电脑系统的移动便携性的严重不足,使得基于桌面电脑的增强现实系统应用受到了极大的限制。与此同时,移动设备的快速发展,其单机多媒体计算能力的大幅提升,则为增强现实在嵌入式移动设备上的实现奠定了良好的基础,同时也为其应用与推广提供了广阔的平台。在移动设备的有限计算资源情况下,如何快速高效地搭建增强现实系统,并使其具有跨平台特性,是现阶段增强现实研究的一个热点和难点。 本文在智能手机平台上针对增强现实进行了深入有效的研究。完成了Android增强现实系统的开发环境搭建;完成了基于传感器的移动增强现实的摄像头视频图像获取和传感器数据获取的代码实现;完成了基于以上两种数据融合的内容叠加。最终实现并演示了基本的移动增强现实系统原型。我的设计是基于传感器跟踪的三维注册,通过实时收集智能手机的螺旋仪和加速度计的反馈数据,定位手机摄像头的位置和姿态,并叠加虚拟物体到特定方位和角度。特点是不需要设定目标物体,主要依赖于硬件传感器,算法相对简单,适用于室外大场景的增强现实应用。本设计在基于传感器配准算法的基础上,开发了一个移动增强现实系统样例,并进行了相关应用的设计和实现。具体的研究工作主要实现以下方面: (1) 综述移动增强现实技术的发展和研究现状,深入了解移动增强现实的现有平台和相关实现技术; (2) 掌握移动设备摄像头图像和传感器数据的获取, 熟练移动增强现实库德尔使用,完成基于传感器的移动增强现实应用框架的搭建; (3) 设计并实现基于以上系统原型的样例应用,完成针对该应用的相关人机交互接口设计。 关键词:增强现实,智能手机,Android, 传感器 哈尔滨工业大学 Sensor-based mobile augmented reality Implementation and Application ABSTRACT The augmented reality is a kind of technology that combines the reality environment and the virtual image together at the same time. Compared with the virtual reality, which places user into a complete artificial world builded by computer vision technology, the augmented reality adds some additional information to the real scene: usually overlaying the related computer graphics or additional text information on the image of the environment around users to complete visual navigation or task instructions. As the serious lack of portability, the augmented reality applications on the desktop computer are limited largely. However, the rapid development of mobile devices, and the significantly improved multimedia computing resources and various build-in sensors of the stand-alone devices have laid a good foundation for the implementation of mobile augmented reality system, as well as provided a broad platform for related application and promotion. It is currently a popular and difficult research topic to solve the problem of building the mobile augmented reality system efficiently. In this paper, we carried out the research of augmented reality on the Android mobile platform. We introduced the configuration of development environment, and discussed the whole process of the augmented reality implementation, including image capturing, pose tracking, and finally developed the sensor-based mobile augmented reality system with a sample application. Keywords: augmented reality, smart phone, Android, sensors 哈尔滨工业大学 目 录 摘 要 I ABSTRACT II 目 录 i 第1章 绪 论 1 1.1 增强现实 1 1.1.1 增强现实的定义和特点 1 1.1.2 增强现实的历史与现状 2 1.1.3 增强现实的应用 2 1.2 移动增强现实系统 4 1.2.1 移动增强现实系统的特点 4 1.2.2 移动增强现实系统的研究现状 5 1.3 本课题研究内容 7 第2章 开发环境 9 2.1系统简介 9 2.2系统构架 9 2.3系统特色 12 2.4开发环境搭建 13 2.5小结 23 第3章 系统实现 24 3.1摄像头图像获取 24 3.2传感器数据获取 32 3.3姿态配准 36 3.4小结 41 第4章 总 结 43 致 谢 44 参考文献 46 中文翻译 53 哈尔滨工业大学 第1章 绪 论 1.1 增强现实 1.1.1 增强现实的定义和特点 增强现实(Augmented Reality,简称AR),使用计算机图形和可视化技术产生现实环境中不存在的虚拟对象,并通过视觉跟踪或传感等技术将虚拟对象准确“放置”在真实环境中,将真实的环境和虚拟的物体实时地叠加到同一个画面或空间且同时存在,借助显示设备将虚拟对象与真实环境融为一体进行显示,最终对周围真实世界的场景动态地进行增强,并呈现给使用者一个感官效果真实的新环境[1]。在增强现实的环境中,使用者可以在看到周围真实环境的同时,看到计算机产生的增强信息。这种增强的信息可以是在真实环境中与真实环境共存的虚拟物体,也可以是关于存在的真实物体的非几何信息。增强现实提供了在一般情况下,不同于人类可以感知的信息。它不仅展现了真实世界的信息,而且将虚拟的信息同时显示出来,两种信息相互补充、叠加。 目前对于增强现实有两种通用的定义。一是北卡大学Ronald Azuma于1997年提出的,他认为增强现实包括三个方面的内容:虚实结合、实时交互、三维注册[1];而另一种定义是1994年保罗米尔格拉姆(Paul Milgram)和岸野文郎(Fumio Kishino)提出的现实—虚拟连续系统[2,3](Milgram's Reality-Virtuality Continuum)。他们将真实环境和虚拟环境分别作为连续统的两端,位于它们中间的被称为“混合实境(Mixed Reality)”。其中靠近真实环境的是增强现实(Augmented Reality),靠近虚拟环境的则是扩增虚境(Augmented Virtuality)。 图1-1 现实—虚拟连续系统 1.1.2 增强现实的历史与现状 最早的AR原型系统来自于20世纪60年代Ivan Sutherland教授在美国哈佛大学研制出的世界上第一台采用了CRT的光学透视头戴式显示器(See-Through Head-Mounted Display,简称STHMD)。70到80年代,美国空军阿姆斯特实验室、NASA的Ames研究中心和北卡罗来纳大学等机构进行了AR方面的研究。20世纪90年代初,波音公司的科学家们正式提出了“增强现实”术语,AR的研究开始受到重视。 由于增强现实在虚拟现实与真实世界之间的沟壑上架起了一座桥梁,因此,增强现实的应用潜力是相当巨大的,成为近年来国外众多知名大学和研究机构的研究热点之一。目前,在国外从事增强现实技术研究工作的主要研究机构有美国的北卡罗莱那州立大学(UNC at ChapelHill),麻省理工(MIT),华盛顿大学,科罗拉多矿业大学,哥伦比亚大学(Columbia U),佐治亚理工(Georgia Tech),罗切斯特大学(Rochester U),波音公司(Boeing),加拿大多伦多大学(Toronto U),英国曼彻斯特大学,奥地利Vienna大学,欧洲计算机研究中心(ECRC),瑞士日内瓦大学,皇家理工学院,德国SIEMENS AG,日本的东京大学,索尼计算机科学实验室(Sony CSL),日本Nara协会,韩国的韩国先进科技研究院(KIST)的成像媒体研究中心,新西兰坎特伯雷大学的人机交互技术实验室等。他们正致力于将增强现实技术应用于各个应用领域之中,十几年来的AR研究,取得了不少的成果。不少国际会议也将AR加入了议题范围,典型的有:ISAR(International Symposium on Augmented Reality),ISMAR(International Symposium on Mixed and Augmented Reality),ICAT(International Conference on Artificial Reality and Telexistence)等会议。 1.1.3 增强现实的应用 增强现实技术不仅在与虚拟现实技术相类似的应用领域,诸如尖端武器、飞行器的研制与开发、数据模型的可视化、虚拟训练、娱乐与艺术等领域具有广泛的应用,而且由于其具有能够对真实环境进行增强显示输出的特性,在医疗研究与解剖训练、精密仪器制造和维修、军用飞机导航、工程设计和远程机器人控制等领域,具有比虚拟现实技术更加明显的优势。例如,可以利用叠加在周围环境上的图形信息和文字信息,以指导操作者对设备进行操作、维护或是修理,而不需要操作者去查阅手册,甚至不需要操作者具有工作经验;既可以利用增强现实系统的虚实结合技术进行辅助教学,同时增进学生的理性认识和感性认识;也可以使用增强现实系统进行高度专业化训练等等。以下图片是几个典型的增强现实应用案例: 图1-2 增强现实的游戏 图1-3 Studierstube系统 图1-4 激光打印机维修 图1-5 工业管道维护 图1-2展示了Ohshima 等人开发的增强现实游戏[4];图1-3是Studierstube系统[5]多人协作增强现实的演示;图1-4是Feiner带领的哥伦比亚大学计算机图形与用户界面实验室研制的KARMA,用于激光打印机的维修[6];图1-5则是西门子公司开发了用于工业管道维护的CyliCon系统[7]。 目前增强现实技术的主要应用领域: (1) 古迹复原和数字化文化遗产保护:文化古迹的信息以增强现实的方式提供给参观者,用户不仅可以通过HMD看到古迹的文字解说,还能看到遗址上残缺部分的虚拟重构; (2) 工业维修领域:通过头盔式显示器将多种辅助信息显示给用户,包括虚拟仪表的面板、被维修设备的内部结构、被维修设备零件图等; (3) 网络视频通讯领域:该系统使用增强现实和人脸跟踪技术,在通话的同时在通话者的面部实时叠加一些如帽子、眼镜等虚拟物体,在很大程度上提高了视频对话的趣味性; (4) 娱乐、游戏领域:增强现实游戏可以让位于全球不同地点的玩家,共同进入一个真实的自然场景,以虚拟替身的形式,进行网络对战; (5) 旅游、展览领域:人们在浏览、参观的同时,通过增强现实技术将接收到途经建筑的相关资料,观看展品的相关数据资料; (6) 市政建设规划:采用增强现实技术将规划效果叠加真实场景中以直接获得规划的效果。 1.2 移动增强现实系统 1.2.1 移动增强现实系统的特点 为了弥补桌面型计算机缺乏的移动性和便携性,同时鉴于AR运算要求不是特别高,手持式移动计算设备便被引入到AR研究当中。移动计算设备与桌面型计算机各方面差异明显,比如移动计算设备有着先天的移动计算优势,体积小巧,携带方便,独立的电池模块又可以保证在户外的长时间使用,一定程度上弥补了桌面型电脑的不足。但与此同时,却正是由于它的便携优势,决定了它的芯片及对应的计算能力无法与桌面型电脑相提并论。 目前移动设备中应用较广的有ARM、DSP、OMPS、MIPS等芯片构架,典型的例如ARM9芯片构架,不支持浮点运算,二维图像处理需要移植定点算法,三维绘图缓慢,现阶段性能不佳;而新一代的ARM11,支持多核计算并配备协浮点处理器,有专属的3D图形加速芯片,能力强劲;OMPS则是DSP与ARM的结合,利用了ARM灵活的系统控制与DSP的高速图像处理,使两者的优势互补;MIPS中典型的硬件设计是PSP,有着强大的计算能力和图形表现,又属于手持式设备,但是因为未公开应用接口或者发布官方开发软件包,涉及版权问题,而无法在其上进行AR相关的彻底研究。 由于移动设备系统底层硬件结构和指令以及应用侧重点的不一致,使得上层的软件系统函数的接口和功能千差万别,不同平台彼此互不兼容,在一个嵌入式移动平台上开发的AR应用程序,即使重新编译,也无法在另一个开发平台上顺利运行,增加了开发难度,造成了很多额外的问题。对图形图像的处理等不成熟的状况也使得在移动计算设备中实现AR较为困难。主流的嵌入式系统正在逐步的增加对图形图像等多媒体技术的更为完善的支持。如流行的iPhoneOS和Android,都将摄像头作为标准硬件配置并添加了图形处理芯片,系统中也默认支持OpenGL/ES标准,相应的渲染实现也被广泛应用。与此同时,各种功能强大的微型传感器也被越来越普遍地集成到移动设备中,如加速度计,陀螺仪等,能够提供较为精确的传感数据,使得基于传感器的增强现实应用在移动设备上成为可能。 越来越多的移动设备厂商加入了这个行列,支持摄像头,传感器,多媒体尤其是3D图形功能,包括众多中低端产品,而不是像以前仅仅局限于高端的智能手机。新近发展起来的介于笔记本电脑和智能手机之间的兼具两者优点的平板电脑,也为未来AR提供了一个更为强劲的应用平台。 1.2.2 移动增强现实系统的研究现状 现阶段的增强现实应用系统大多基于以X86构架的个人电脑为代表的通用型计算系统进行开发和实现,虽然该平台为AR系统提供了强大的计算处理能力的支持,但是其硬件平台的整体便携性和应用范围的灵活实用性却相当有限,极大地限制了AR系统在实际应用中的推广。而与此同时,手持式移动多媒体设备的迅猛发展,却为此提供了良好的解决思路,将AR系统在开放高效的移动平台下实现,并整合多种硬件资源,最终完成有实用价值的市场产品,就成为现在研究的重点。 增强现实的核心实现在于虚拟物体在现实世界的三维注册,即如何准确地将计算机生成的虚拟信息正确地“放置”到现实物理世界的三维空间中。目前有两种解决方案被广泛应用。第一种是基于计算机视觉识别跟踪算法的三维注册[9,10,11,12,13,14],如图1-6所示。通过使用摄像头对预先定义的目标物体进行空间位置的识别和跟踪,可以计算得出摄像头与目标物体即图中正方形黑框的空间三维关系,最终虚拟的彩色正方体被正确叠加并显示在屏幕中。特点是定位精确,但是计算复杂,要求目标物体始终要在摄像头的取景范围之内,适用于室内增强现实应用场景。第二种是基于传感器跟踪的三维注册,如图1-7所示。通过实时收集智能手机的螺旋仪和加速度计的反馈数据,定位手机摄像头的位置和姿态,并叠加虚拟物体到特定方位和角度。特点是不需要设定目标物体,主要依赖于硬件传感器,算法相对简单,适用于室外大场景的增强现实应用。 目前流行的商用移动平台,如iPhone的iOS(object-c/c++), Android Phone的Android(Java/c++),都有对应的AR实现。这使得AR在进入普通消费软件上有了广泛的平台和相应的技术支撑。其中研究出色的是c/c++方面,如Nokia的实验室中的针对Symbian系统的ARToolkit [8,9]相关移植,以及TuU的IMGAR小组的针对Wince/Window Smartphone的Pocketknife。当然嵌入式系统中c/c++的应用存在着移植工作复杂的问题,无论是对硬件而言从ARM转移到DSP、MIPS或OMPS等,还是对软件而言从嵌入式Linux转移到iOS或者Android等,即使严格遵循GNU中的ANSIC的标准。值得注意的是,近年来Android系统由于开源及完整的社区支持,被广泛地移植到众多移动设备中,使得移动系统的开发得到了很大程度的改善。其使用的Java具备跨平台特性和和一次编码,到处运行的理念,只要在相应的移动或者嵌入式平台下,有对应的Java虚拟机,则可以将AR应用在该对应平台下编译而只进行很小的改动甚至不做任何改动,这为AR开发奠定了良好的移动平台移植基础。最后,移动设备的高速互联网接入,以及越来越多的嵌入式浏览器,也为手持式移动设备的网络AR应用提供了发展条件。 图1-6 基于视觉跟踪的移动增强现实 图1-7基于传感器的移动增强现实 1.3 本课题研究内容 本文在基于Android手机实验开发平台上进行了深入有效的研究。在基于传感器配准算法的基础上,开发了一个移动增强现实系统样例,并进行了相关应用的设计和实现。具体的研究工作主要从以下方面展开: (1) 综述移动增强现实技术的发展和研究现状,深入了解移动增强现实的现有平台和相关实现技术; (2) 掌握移动设备摄像头图像和传感器数据的获取, 熟练移动增强现实库德尔使用,完成基于传感器的移动增强现实应用框架的搭建; (3) 设计并实现基于以上系统原型的样例应用,完成针对该应用的相关人机交互接口设计。 论文的具体组织安排如下: 第一章绪论部分,介绍选题的背景和意义,对增强现实定义和特点进行介绍,分析桌面型增强现实和移动增强现实的优缺点,回顾了两者的发展历史和研究现状。 第二章介绍了本课题采用的移动增强现实系统开发平台的硬件资源特性和操作系统特点,针对移动增强现实系统开发进行的相关必要系统配置,以及完整的开发编译环境的搭建。 第三章阐述了在Andriod移动开发平台上传感器数据的获取,标记跟踪的整个移动增强现实系统的构建流程,并介绍了OutdoorAR, 一个第三方开发的基于传感器的移动增强现实开源函数库的方案实现。 第四章在之前的完成的核心工作上,对整个系统进行了结构设计和模块整合,搭建和实现了移动增强现实系统原型,并对样例的人机交互接口进行了研究。 第五章对本文的工作进行总结,提出研究中的一些需要改进的地方,并对系统的进一步研究进行展望。 哈尔滨工业大学 第2章 开发环境 本章介绍了研究中采用的Android移动操作系统的特点,详细的描述了针对该系统开发所需进行的必要系统配置,和完整的开发编译环境的搭建过程。 2.1系统简介 Android是Google于2007年11月05日宣布的基于Linux平台的开源移动操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层(Software Stack,又名软件叠层)的架构,主要分为三部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机Virtual Machine,由C++开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java作为编写程序的一部分。不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。Google通过与软、硬件开发商、设备制造商、电信运营商等其他有关各方结成深层次的合作伙伴关系,希望借助建立标准化、开放式的移动电话软件平台,在移动产业内形成一个开放式的生态系统。Android 作为Google企业战略的重要组成部分,将进一步推进“随时随地为每个人提供信息”这一企业目标的实现。全球为数众多的移动电话用户正在使用各种基于 Android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些产品。 2.2系统构架 Android系统由五个主要模块构成,如图2-1所示。 Linux Kernel Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。 如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各尽其职,各层提供固定的SAP(ServiceAccess Point),专业点可以说是高内聚、低耦合。如果只是做应用开发,就不需要深入了解Linux Kernel层。 Android Runtime Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。Dalvik虚拟机设计成,在一个设备可以高效地运行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex,dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。 大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。dx是一套工具,可以将 Java .class 转换成 .dex 格式。一个dex文件通常会有多个.class。由于dex有时必须进行最佳化,会使文件大小增加1-4倍,以ODEX结尾。 Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。 Library Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库:系统C库——标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备媒体库——基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、 H.264、MP3、 AAC、AMR、JPG、 PNG界面管理——管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层LibWebCore——新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图SGL——基本的2D图形引擎3D库——基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅FreeType——位图和矢量字体渲,SQLite——所有应用程序都可以使用的强大而轻量级的关系数据库引擎。 Application Framework 通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。 开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(需要服从框架执行的安全限制)。这一机制允许用户替换组件。 所有的应用程序其实是一组服务和系统,包括:视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按钮,甚至是内嵌的网页浏览器内容提供者(Content Providers)——使应用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件通知管理器(Notification Manager)——使所有的应用程序能够在状态栏显示自定义警告活动管理器(Activity Manager)——管理应用程序生命周期,提供通用的导航回退功能 Application Android装配一个核心应用程序集合,包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人和其他设置。所有应用程序都是用Java编程语言写的。更加丰富的应用程序有待我们去开发! 从上面我们知道Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆叠(Software Stack),或称为「软件叠层架构」,叠层主要分成三层:操作系统、中间件、应用程序。 图2-1 Android系统构架 2.3系统特色 开放性 Android平台的最大优势就是其开放性,开放的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。开放性对于Android的发展而言,有利于积累人气,这里的人气包括消费者和厂商,而对于消费者来讲,最大的受益正是丰富的软件资源。开放的平台也会带来更大竞争,如此一来,消费者将可以用更低的价位购得心仪的手机。 挣脱运营商的束缚 在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。自从iPhone上市,用户可以更加方便地连接网络,运营商的制约减少。随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机随意接入网络成为现实。 丰富的硬件选择 由于Android的开放性,众多的厂商会推出功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。联系人等资料可以方便地在不同手机之间进行平滑转移。 不受任何限制的开发商 Android平台提供给第三方开发商一个十分宽泛、自由的环境。因此不会受到各种条条框框的阻扰,有很多新颖别致的软件会诞生。但也有其两面性,血腥、暴力、情色方面的程序和游戏如何控制正是留给Android难题之一。 无缝结合的Google应用 如今Google已经走过10年度历史。从搜索巨人到全面的互联网渗透,Google服务如地图、邮件、搜索等已经成为连接用户和互联网的重要纽带,而Android平台手机将无缝结合这些优秀的Google服务。 2.4开发环境搭建 要将编写的程序在手机上顺利运行,需要进行交叉编译。在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。 交叉编译这个概念的出现和流行是和嵌入式移动系统的广泛发展同步的。常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码编译成计算机可以识别和执行的二进制代码。比如,在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。这种方式下,使用PC平台上的Windows工具开发针对Windows本身的可执行程序,这种编译过程称为本机编译。然而在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如开发常见的嵌入式ARM平台,其一般的静态存储空间大概是16到32MB,而CPU的主频大概在100MHz到500MHz之间。这种情况下,在ARM平台上进行本机编译就不太可能了,这是因为一般的编译工具链需要很大的存储空间,并需要很强的CPU运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,就可以在CPU能力很强、存储控件足够的宿主机平台上编译出针对其他平台的可执行程序。程序在宿主机上被编译,然后下载到目标板上运行。目标板上的终端通常被重定向到串口,在宿主机上输出,方式如图2-2所示: 图2-2 交叉编译中的宿主机与目标板 编写的代码要在Android目标硬件如智能手机上成功执行,首先要建立完整的交叉编译环境。 1:JDK的安装和Java环境变量的设置 JDK(Java Development Kit) 是整个Java的核心,包括一系列Java开发的东西,安装完毕需要配置一下环境变量。 (1) JAVA_HOME JDK的安装路径,这个环境变量本身不存在,需要创建,创建完则可以利用 %JAVA_HOME% 作为统一引用路径,其值为:jdk在你电脑上的安装路径。 图2-3 创建JAVA环境变量 (2) PATH PATH属性已存在,可直接编辑。作用是用于配置路径,简化命令的输入,其值为:%JAVA_HOME%\bin (3) CLASSPATH 用于编译时JAVA类的路径,注意这里设置的是两个值,(.;)表示的是JVM先搜索当前目录。其值为:.;%JAVA_HOME%libtools.jar 图2-4 添加JAVA工具变量 配置完毕后,通过cmd运行以下命令:java -version,javac 如果出现返回信息,则设置成功。 2:安装Eclipse Eclipse http://www.eclipse.org/downloads/ 为Java及Android开发的IDE。Eclipse不需要安装,把解压包解压后,剪切eclipse文件夹到目标安装位置,打开时设置项目工作目录即可。 图2-5 设置Eclipse工作目录 3:安装Android SDK Andorid SDK 为Android管理开发包工具,提供了Android各级平台的开发包和工具。注意,因为独立安装,不是一体化(集成系列工具)所以需要单独下载SDK。 运行安装文件,并把安装目录下tools文件夹路径设置进PATH环境变量。 图2-6 设置Android SDK根目录并添加到环境变量 在Android SDK安装目录中运行SDK Manager,需要下载相应的工具包,如下图所示。 图2-7 设置Android SDK根目录并添加到环境变量 把Android Tools 选上安装,建议选用最新版本号下载安装。 4:安装配置ADT (1) 安装ADT ADT(Android Development Toolkit)是Eclipse的插件,用于管理开发Android。启动Eclipse,点击 Help菜单 -> Install New Software…,点击Add…,输入地址:http://dl- (2) 配置ADT 选择 Window -> Preferences,在弹出面板中就会看到Android设置项,填上安装的SDK路径,则会出现刚才在SDK中安装的各平台包,按OK则完成配置。此时Android的环境就搭建完毕,可以进行Android项目的开发了。 图2-8 Eclipse中设置Android SDK路径 5:创建并运行Android项目 (1) 选择File -> New -> Other -> Android -> Android Application Project (2) 输入项目所需信息 Application Name (应用的名称) Project Name (在Eclipse中该项目的名称) Package Name (存放Java类的包名称,其实质是存放的文件夹路径,.号为文件分隔符,编写的Java文件都会放在项目的src目录下,如com.tencent.helloworld表示类放在src/com/tencent/helloworld文件夹中)。 (3) Next直到Finish,则我们的工程创建完毕。 图2-9 建立Android项目 将Android设备与宿主电脑之间使用usb线缆连接,并设置Android移动设备到Debug模式,点击Eclipse中的运行,代码就会被编译并传输到移动手机端进行独立运行。 2.5小结 本章介绍了Android操作系统的安装和配置,并建立了相应的开发编译及测试环境,为下一步具体的移动增强现实系统开发奠定了良好的基础。 哈尔滨工业大学 第3章 系统实现 典型的基于传感器的增强现实应用通常是通过一个与设备连接的摄像头来获取视频背景,同时分析处理传感器数据以获得设备摄像头相对于周围环境的姿态,最终将虚拟的图文信息根据环境姿态匹配叠加到现实环境的视频背景之上。 本章阐述了Android平台上传感器数据的具体获取流程,并详细介绍了OutdoorAR,一个以Android传感器数据为底层的增强现实库函数,并展示了相应具体的应用样例实现方案。 3.1摄像头图像获取 Android SDK提供了完整的摄像头图像获取类Camera,通过Camera类的方法控制摄像头的基本步骤为: (1) 调用Camera的open()方法打开相机。 (2) 调用Camera的setParameters()方法获取拍照参数。该方法返回一个Camera.Parameters对象。 (3) 调用Camera.Paramers对象方法设置拍照参数。 (4) 调用Camera的setParameters,并将Camera.Paramers作为参数传入,这样即可对相机的拍照参数进行控制。 (5) 调用Camera的startPreview()方法开始预览取景,在预览取景之前需要调用Camera的setPreViewDisplay(SurfaceHol
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服