基于增强现实技术的导航系统研究
2016-11-07郑菲菲宋丽红董静
郑菲菲++宋丽红++董静
摘要:采用基于GPS和传感器的增强现实技术以及高德地图接口,设计和开发了导航系统。利用增强现实技术将路线指引和路况合成渲染,并利用手机传感器使指引箭头根据手机姿态的变化而旋转,实时指向正确的前进方向,给予用户更加直观的导航体验。
关键词:增强现实技术;方向传感器;Android系统
DOIDOI:10.11907/rjdk.161565
中图分类号:TP319
文献标识码:A文章编号文章编号:16727800(2016)009005703
基金项目基金项目:2015年地方高校国家级大学生创新创业训练计划项目(201510070010)
作者简介作者简介:宋丽红(1975-),女,天津人,博士,天津财经大学理工学院副教授,研究方向为软件工程、智能信息系统;董静(1975-),女,天津人,博士,天津财经大学理工学院讲师,研究方向为软件工程。
0引言
增强现实(Augmented Reality,简称AR)是一种将虚拟物体和真实环境“无缝”叠加在一起的技术,将在现实世界一定时间空间范围内很难体验到的实体信息,如视觉信息、声音、味道、触觉等,通过电脑等技术模拟仿真后再叠加,将虚拟的信息应用到真实世界,被人类感官所感知,从而获得超越现实的感官体验[1]。相比于虚拟现实技术(Virtual Reality,简称VR),增强现实技术增强了人对真实环境的感知与交互,它具有以下3个特征:①虚实结合:将虚拟物体和现实世界结合在一起,实现感官上的统一;②三维注册:增强现实技术与混合媒体(Mixed Media)的区分点,虚拟物体必须准确地注册到真实世界中,与真实世界完美融合,要求虚拟物体的注册位置是三维的[2];③实时交互:实时感知用户操作并互动。
增强现实技术由于具有对真实环境进行增强显示输出的特性,在医疗研究、精密仪器维修、古迹复原、娱乐与艺术等领域具有明显的优势[3]。
目前大多数智能手机的导航软件都以2D或3D形式提供导航服务,但这些都是通过矢量数据来提供地图导航,满足不了用户获取实时交通路况的需求,用户体验较差。本文提出一种通过手机摄像头获取实时路况,通过高德地图接口获取导航信息,并利用增强现实技术将路线指引和路况合成渲染,以提供更加直观的导航系统。
1关键技术
1.1增强现实技术
增强现实技术在智能手机客户端有两种实现方式:
(1)基于视觉的增强现实技术。它的识别方式分为基于标志(Marker Based)和非基于标志(Markerless)两种。其中,基于标志的识别又分为固定模板类和自定义模板类。
基于标志的主要代表是ARToolKit,其为采用C/C++ 语言编写的库。主要原理是预先将标志(Marker)图像信息保存,通过图像识别技术将当前图像中的标志图像识别出来,然后在标识图像上叠加信息[4]。效果如图1和图2所示。
图1标志图像图2叠加的立方体
目前,增强现实浏览器魔眼(Junaio)和Trading Card游戏等都采用了这种技术。但这种模板匹配方式的误识别率较高,一旦标志被遮挡将导致跟踪失败,所以不适合运用于户外导航。
非基于标志的主要代表是PTAM(Parallel Tracking and Mapping),其主要原理是从摄影图像上捕捉特征点,检测出平面,在上面建立虚拟的3D坐标,然后合成摄影图像和动画。其特点在于立体平面的检测和图像的合成采用并行处理方式[5]。
(2)基于智能手机上的GPS和传感器的增强现实技术。通过GPS获取当前位置的经纬度和高度,通过方向传感(Orientation Sensor)获取面向的方向和倾斜的角度,然后根据这些位置信息叠加相关信息[4]。目前荷兰SPRXmobile公司研发设计的增强现实手机浏览器Layar、Wikitude公司开发的Wikitude drive与Wikitude World Browser等都基于这种技术。
本文采用基于智能手机的GPS和传感器的增强现实技术来实现户外导航系统功能。
1.2Android手机传感器原理
目前大多数Android智能手机都配备有测量运动、方向和环境的传感器。包括:加速度传感器、磁力传感器、方向传感器、陀螺仪传感器、温度传感器等[6]。
本系统主要采用方向传感器。当设备保持默认方向时(见图3),X轴指向屏幕面板的外部,Y轴水平向右,Z轴垂直向上。在方向传感器SensorEvent类中的Values的3个值分别对应3个坐标轴的角度数据,含义如下[7]:
Values[0]:方向角的大小,也就是手机绕着X轴旋转的角度。Values[0]的取值范围为0~360。0或360表示手机朝向正北;90表示手机朝向正东;180表示手机朝向正南;270表示手机朝向正西。
Values[1]:倾斜角的大小,也就是手机绕着Y轴旋转的角度。Values[1]的取值范围为-180~180。当手机屏幕朝上水平放置时,Values[1]的值为0;将手机头部抬起,绕Y轴旋转,当手机屏幕朝下水平放置时,Values[1]的值为180;将手机尾部抬起,绕Y轴旋转,当手机屏幕朝下水平放置时,Values[1]的值为-180[6]。
Values[2]:侧翻角大小,也就是手机绕Z轴旋转的角度。Values[2]的取值范围为-90~90。当手机水平放置时,Values[2]的值为0;当手机屏幕面向左侧时,Values[2]的值为-90;当手机屏幕面向右侧时,Values[2]的值为90。
1.3Android定位原理
本系统使用Android手机自带的GPS进行粗略定位,同时也使用高德地图提供的定位SDK进行精确定位。定位的基本原理:当应用程序向定位SDK发起定位请求时, 定位SDK会根据当前的GPS、WiFi信息生成相对应的定位依据。如果需要, 定位SDK也会向定位服务器发送网络请求,然后根据请求的定位依据推算出对应的坐标位置,生成定位结果后返回给定位SDK[8]。
2系统实现
2.1系统总体框架
系统流程如图4所示。
2.2地图定位
在MainActivity中调用高德地图的地图SDK和定位SDK。首先进行地图初始化,加载地图,通过LocationManagerProxy每隔固定时间发起一次定位请求。再通过OnLocationChangedListener中onLocationChanged()方法使用aMapLocation.getLatitude()和aMapLocation.getLongitude()获得经纬度;AMapLocation.getExtras() 方法获取位置的描述信息,包括省、市、区以及街道信息,并以空格分隔。最后将地图中心定位到该位置。地图可进行缩放。运行效果如图5所示。
2.3路线规划
点击图5中的出发按钮,跳转到RouteActivity进行路线规划。路线规划有3种模式可以选择,分别为公交模式、驾车模式、步行模式。为了便于测试,我们只选择步行模式。可以选择输入起点和终点或者在地图上点击起点和终点。为了提高精确度,对起点和终点附近的兴趣点进行搜索,并显示在ListView上让用户点击确认。界面如图6所示。以起点为例,点击确认后,通过RouteSearchPoiDialog获得startpoiItem,再通过startpoiItem.getLatLonPoint()方法转换成起点的经纬度。获得起点和终点的经纬度,用searchRouteResult(LatLonPoint startPoint,LatLonPoint endPoint)方法进行路径规划。再通过回调方法onWalkRouteSearched()获取路径WalkPath,并将路径的节点WalkRouteOverlay覆盖在地图上,运行效果如图7所示。
2.4增强现实导航
通过路径规划获取路径WalkPath,路径节点列表由walkPath.getSteps() 获得。通过Intent将其传递到NaviActivity中。
在NaviActivity中先开启摄像头,创建一个相机预览的类cameraPreview,继承SurfaceView类,并实现SurfaceHolder接口。SurfaceHolder.Callback()方法进行预览。然后根据Intent传递过来的stepList,通过stepList.get(i).getAction()可获取一个节点的导航信息。根据其判断加载直行箭头、左转箭头或者右转箭头(箭头通过Android的Graphics类绘制而成)。本次测试中获取的第一个节点导航信息是左转,所以加载左转箭头,并用TextView将详细的导航信息显示出来,效果如图8所示。
2.5传感器实时导航
从图8可以看出预先设定的预览屏幕是横屏,但是用户在导航过程中不可能将手机姿态一直保持水平状态,所以需要利用手机的传感器数据,使箭头根据手机姿态的变化而旋转,实时指向正确的前进方向。首先要注册和监听方向传感器,当传感器变化时,在SensorEventListener中获取传感器变化的参数数组。调用SensorManager.getRotationMatrix方法获取旋转矩阵,然后调用 SensorManager.getOrientation方法获取有手机方位信息的参数数组。将数组转为角度信息,对应图3的X、Y、Z轴信息。把数组回调给绘制箭头的类ArrowView,控制箭头的旋转。手机横屏旋转后的效果如图9和图10所示。
最后当用户接近路径的下一个节点时,用Android定时器对导航信息和箭头进行刷新。
3结语
本系统在Android平台下,采用高德地图接口实现地图定位和路线规划功能,并采用基于GPS和方向传感器的增强现实技术将指引箭头和路况合成渲染,给予用户更直观的导航体验。
图9手机旋转45度图10手机旋转90度
本系统还可扩展到大型场所的室内导航,也可以把景点作为兴趣点应用于旅游景区导航。
参考文献参考文献:
[1]增强现实[EB/OL].http://wenku.baidu.com/view/c1ce3cb271fe 910ef12df8d2.html.
[2]张振颖.增强现实技术在产品服务系统设计中的应用与研究[D].长沙:湖南大学,2012.
[3]白慧东.嵌入式增强现实系统设计与实现[D].成都:电子科技大学,2010.
[4]曾浩.基于Android平台的增强现实导航软件的设计与实现[D].长沙:湖南大学,2012.
[5]孙俊.虚拟物体与视频图像融合算法在交通事故再现中的研究[D].南京:东南大学,2013.
[6]江亚炬.基于移动增强现实的导航系统的设计与实现[D].青岛:中国海洋大学,2014.
[7]RAGHAVSOOD.Pro Android Augmented Reality[M].America,Apress,2012.
[8]乌铮.基于Android平台的手游社交应用客户端的设计与实现[D].哈尔滨:哈尔滨工业大学,2014.
责任编辑(责任编辑:杜能钢)