基于增强现实技术的移动LBS系统的设计与实现
论文摘要:基于位置服务(LBS, Location Based Service)发展迅速,利用增强现实技术开发LBS系统,对人机界面与GIS服务整合具有重要的理论和现实意义。在此基础上,设计了一个空间信息服务的构建与发布机制,利用智能终端配备的传感装置,在Android平台手持设备下扩展增强现实功能,融合真实场景和虚拟信息,搭建远程Web服务器完成数据交互,得到了整体基于Web服务的LBS原型系统。
论文关键词:增强现实,基于地理位置服务,服务,空间信息,移动应用
0引言
LBS,即LocationBasedService,是指在移动环境下,利用GIS技术、空间定位技术和网络通信技术,为移动对象提供基于空间地理位置的信息服务。目前阶段,国内出现的该项业务,主要采用GPS定位建立用户关联,是在传统的社交服务所拥有的时间、人物、事件之外,引入第四个文度:地点,以期使用户的网络生活和真实世界得以紧密结合。
增强现实(AugmentedReality,简称AR),是通过借助计算机图形和可视化技术生成虚拟对象,并通过传感技术将虚拟对象准确的“放置”在真实环境中,达到虚拟图形和现实环境融为一体的效果。近年来以智能手机为代表的手持设备发展迅速,具有性能强大的传感器,GPS和指南针等功能的终端已完全满足了增强现实的硬件要求。
在这种条件下,尝试将增强现实引入LBS社交,可在原有的四文环境中加入视觉元素,利用终端为地球上任何三文视觉角度贴上媒体标签,其他用户也可以利用搭载该技术的终端,在观看周围环境的真实图像时,同时获知这些信息。增强现实技术利用GPS坐标、加速器给出的终端与地面角度,以及指南针确定的摄像头朝向,确定一个唯一“向量”,并通过该“向量”标识当前的终端空间状态,获取空间信息。巧妙的绕开了类似应用对图像识别功能的依赖,对终端的CPU资源和通讯能力要求大大降低。
当前阶段,二者结合的应用受到GPS定位精度和Web服务质量等问题的限制,仍有许多中间环节亟需解决。首先,项目的实现需建立在10m级别精度范围内,数据传输需一定带宽保证;其次,作为增值服务,基础用户数量和终端硬件配置成为瓶颈。本文针对上述问题,选取了具有便携方便、普及率高等特点的Android平台部署客户端软件,利用传感器优良的特性结合GoogleAPI构造出基本能够满足精度要求的实现方法。采用Web-LBS架构搭建服务器端平台,设计独立的通信协议,运用数据库存取,实现了一种实际可操控的信息构造和发布机制,使其成为一个通用且便于扩展的LBS系统。
1移动LBS系统的设计
1.1系统结构设计
基于WebService的LBS系统分为两个部分,由移动终端上具备AR实现能力的客户端以及服务器数据处理平台构成。服务器数据处理平台集成了LBS应用系统的共性,实现业务逻辑与系统数据处理相分离,并提供具有稳定可扩展特性的API接口。图1显示了LBS系统的逻辑结构图。移动客户端通过传感器采集相关地理位置信息,封装成HTTP请求报文,通过LBS服务器的统一入口点,即API应用服务器,它负责将用户终端的请求信息用规范格式转发给数据处理组件。数据处理组件主要负责位置服务的综合处理,为整个系统运行提供数据业务支持。
移动客户端软件由空间信息采集模块、数据库存储模块、网络信息处理模块及AR呈现模块组成,各模块间实现数据处理流完成虚拟信息的生成。空间信息采集模块用于驱动各传感器,获取GPS或GSM坐标、电子罗盘方向和加速器角度确定的摄像头朝向等空间参数,并传送给网络信息处理模块。网络信息处理模块将参数封装成请求报文交由LBSAPI应用服务器处理,并等待返回信息,进行解析。AR呈现模块通过生成虚拟信息图像和摄像头真实图像叠加呈现效果。数据库存储模块用于本地用户文件的保存。
图1LBS系统逻辑结构图
服务器数据处理平台在设计过程中参考J2EE结构模型,并采用了组件式的设计方式,将整个平台划分成综合管理模块、位置信息处理模块、接口层处理模块3大部分。功能子模块独立封装,并对外提供统一规定的接口函数以供调用,可实现在多种不同终端平台上提供业务支持。
1.2系统工作流程设计
基于增强现实的LBS系统工作流程如图2所示。首先,用户通过登录客户端进行操作,利用网络交互提供用户注册和认证。然后由AR显示模块和信息采集模块相配合,搭建用户发布信息的工作空间,驱动传感器工作,提供GPS(在较弱环境下改为GSM基站定位)、陀螺仪及加速器参数,传递给网络信息处理模块,进行封装。封装的报文通过POST方法传递给LBSAPI,并等待服务器数据处理平台返回响应报文。
图2LBS系统工作流程示意图
客户端在接受响应报文后,实现XML文件解析,提取关键结点相关内容,交由AR显示模块进行虚拟图形生成。该部分采用获知当前摄像头朝向以及当前终端所处空间状态将虚拟信息放置在用户工作空间内,实现叠加,到达呈现数据的理想效果。
2移动LBS客户端的实现
2.1系统开发环境及自定义工具类的使用
采用Eclipse+AndroidSDK作为系统的开发环境。Eclipse是一个开放源代码的可扩展开发平台。它可以看成一个框架和一组服务,用于通过插件组件构建开发环境。Android是用于移动设备的软件堆栈,包括操作系统、中间件和关键应用程序。AndroidSDK提供了必需的工具及API,用于开发在Android驱动设备上运行的应用程序。
在程序编写过程中,首先实现构造以下类供系统各模块调用:
(1)DBUtil:负责用户本地信息的存储与读取,提高系统运行效率。
(2)HttpPost:网络通信部分,负责信息的发送与收取。
(3)ParseXml:XML实现服务器端响应请求文件的解析。
(4)GPSManager/GSMManager:用户地理位置定位服务管理。
(5)MainView:实现虚拟图像及信息的生成及显示。
2.2各模块具体功能实现
(1)数据库处理实现
采用轻量级数据库Sqlite3。它具有零配置、自由共享、完整Unicode支援等特点。首次运行时,其能够自动在用户目录创建并生成数据文件。以后每次访问时,将首先读取本地信息,并在网络流畅后与网络数据同步。退出时自动保存用户信息。
(2)用户定位模块
此模块是LBS系统应用的核心所在。用于LBS采集用户当前位置空间信息的基础参数及相应处理方法。分为GPS定位与GSM基站定位两部分,二者作为交叉辅助的功能模块,在运行过程中优先调取GPS进行精确定位,无法开启GPS时利用GSM基站作为后援启用。GPS模块实现的主要实现代码如下:
publicGPSManager(){
locationManager=(LocationManager)Context.getSystemService(Context.LOCATION_SERVICE);
//通知操作系统,需要使用定位服务
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,LocationListener);
//设置定位数据的提供者可以是GPS卫星或者GSM基站
LocationListenermLocationListener=newLocationListener(){
publicvoidonStatusChanged(Stringprovider,intstatus,Bundleextras){}
};//监听器在地理位置、提供者等发生变化时做出相应的响应动作
}
(3)网络信息处理模块
客户端采用ArrayList格式向服务器端发出数据请求,反馈得到XML数据流。系统采用DOM解析数据流。DOM将XML文档作为树形结构,而树叶被定义为节点,实现如下:①得到DOM解析器的工厂实例DocumentBuilderFactory.newInstance();②通过DocumentBuilderFactory实例的静态方法得到DOM解析器;③把待解析的XML文档转为输入流,以便DOM解析器解析;④解析输入流得到一个org.w3c.dom.Document对象,以后的处理对Document对象进行;⑤得到XML文档的根节点,获取内容。
(4)AR显示模块
调用终端系统函数,采用CameraPreview作为背景,计算信息与用户所处地理位置距离和角度。
3LBS服务器平台的实现
3.1分布组件开发和框架的使用
平台开发采用Struts2框架进行架构,完成业务逻辑设计。为实现LBS应用数据处理平台与数据库交换数据,实现了一套访问DAO(DataAccessObjects)。采用Servlet调用响应函数生成轻量级的数据交换格式JSON(JavaScriptObjectNotation)数据包,实现信息在GoogleMap上的动态显示。
如图3显示,Web前端页面用于实现数据呈现,所有HTTP请求都被传送到Web应用服务器的中心控制器ActionServlet,分发到不同的Action中进行处理。在处理过程中,调用不同的数据模型完成信息处理,再由中心控制器实现不同导向。LBSAPI应用服务器同样采用J2EE构架,提供手机客户端访问LBSAPI服务器的统一函数接口,根据不同请求,返回相应数据信息,完成手机客户端与服务器的数据交换。
http://www.751com.cn 图3Struts2框架构成
为实现对象模型和关系模型的分离,在Web应用服务器实现中,使用了类似Hibernate的数据库访接口,实现数据分离,提高服务器功能的高内聚。如UserDao实现用户的信息处理,当用户登录LBS-Web服务器时,会初始化UserDao对象实现对象模型和数据模型转换。TagDao用于处理用户发布的媒体信息的对象模型和数据模型的转换。
3.2GoogleAPI的调用和信息动态显示
GoogleMap调用方法,采用Javascript实现,完成了数据在地图上基于地理位置的显示。为保证服务器的数据传输到Map上,先需要在Servlet上产生JSON数据包,发送到前端页面,再使用脚本进行解析,最后调用相应的API发布数据。
脚本解析JSON数据方法如下,在前端页面解析JSON数据包获得相应的数据,xmlHttp=newXMLHttpRequest()生成对象,通过xmlHttp.responseText获得从服务器返回的数据,随后由脚本进行解析,最后使用GoogleMapAPI的map对象,调用方法生成Maker显示在Googlemap上。
基于增强现实技术的移动LBS系统的设计与实现下载如图片无法显示或论文不完整,请联系qq752018766