2018作品展示

(二等奖)C893集成手机多传感器的室内外无缝定位导航系统——以安徽大学校园为例

作品编号:C893(二等奖)

作品名称:集成手机多传感器的室内外无缝定位导航系统——以安徽大学校园为例

作者单位:安徽大学资源与环境工程学院

小组成员:陈洪瑞轩,陆浩楠,徐福明,林知宇

指导老师:江鹏

1 需求分析

21世纪,基于位置服务(Location Based Services,LBS)已经渗透到我们日常生活中的方方面面:例如地图导航、物流跟踪等各种需要空间位置信息的服务场景,这些都为人们的生活、生产和安全带来了方便。
传统的GPS室外定位导航技术,经过几十年的发展已经渐趋成熟,但是GPS信号在穿过室内建筑物后会被严重削弱,故很难用于室内外无缝定位导航。随着社会的发展,现在人们的日常生活基本上70%的时间是处在室内环境中,并且常常从室内区域的某一地点到另一地点,从某一室内区域到另一室内区域,因此室内外无缝定位导航的需求与日俱增。
室内外无缝定位导航的应用方面十分广泛,在大型机场中,登机口,商店,甚至厕所等不方便找到的地方都可以通过室内外无缝导航轻松到达;商场与室内外导航的结合也将为用户带来极大便利,不用再为寻找需要的商品而在商场兜圈子,根据导航可以轻松的到达指定商品货架,打折优惠信息也可以出现在导航中,达到商家和顾客双赢的结果。
本团队注意到人们对室外内定位导航与日俱增的需求和单纯依靠GPS又无法完成室内定位导航任务之间的矛盾,结合目前智能手机等移动终端已经全民普及的现状,利用智能手机内置的多类传感器开发室内外无缝定位导航系统。

2 总体设计

2.1 功能设计

本系统实现了室内外无缝定位导航功能,系统采取B/S架构。数据库数据采集方面,我们专门编写了数据采集客户端和服务器系统,用于采集原始Wifi数据以构建Wifi指纹库,以及采集惯性定位算法测试所需的加速度数据和方向数据。上述数据采集系统非本系统主体,这里就不再赘述。本系统主体构成如图2.1.1所示。

图2.1.1 系统组成图
各个模块的功能如下如下所述。
2.1.1 客户端
客户端由室外地图与定位结果显示模块、室外GPS定位模块、室内定位模块、室内地图模块、导航与路径规划模块、初始区域判别模块和客户端位置信息上传模块这7部分组成。下面分别介绍这七个模块的功能。
1. 室外地图与定位结果显示模块。该模块是系统的主界面,给用户展示室内外地图、用户当前点位置、ROI点的位置以及导航路径等。
2. 室外GPS定位模块是当用于处于室外时通过利用智能手机内置的GPS对用户进行定位。
3. 室内定位模块是当用户处于室内时系统采用的定位模块。室内定位模块又由3个子模块组成,其中惯性定位模块是利用智能手机内置的重力传感器、加速度传感器等获得的数据进行惯性定位;NFC校正模块是利用NFC标签中的先验位置数据对用户所处位置进行校正;而wifi定位模块则是利用手机中的无线传感器扫描客户端当前位置周围的Wifi信号并上传至服务器,与指纹库中的Wifi向量进行匹配,获取当前位置信息。
4. 室内地图模块。该模块又分为3个子模块,分别是请求模块、解析模块和绘制模块。其中室内地图请求模块是当用户进入室内时,向服务器发起获取当前位置室内地图的请求。
室内地图解析模块则是接收服务器发送的室内地图后,对室内地图进行解析,构造出室内地图对象。而室内地图绘制模块则是根据室内地图的结构,在室外地图上绘制出室内地图。
5. 导航与路径规划模块。该模块是根据当前位置或者用户手动输入的其它位置和目标地点,向服务器发起导航请求,然后接收服务器返回的处理结果并在地图上进行绘制。
6. 客户端位置信息上传模块则是在后台每隔一定的时间就将客户端当前位置上传到服务器并接收服务器返回的状态码用于判断用户所处区域。
7. 初始区域判别模块。考虑到用户在系统初始化时有可能在室外,也有可能在室内,该模块负责的就是在系统初始化时判断用户处在室内还是室外。如果在室外,则开启室外GPS定位模块,如果在室内则开启室内地图模块和室内定位模块。
2.1.2 服务器
服务器由室内定位模块、室内外无缝路径规划模块、室内地图管理模块和室内外区域判别模块这4部分组成。下面分别介绍这4个模块的功能。
1. 室内定位算法模块。该模块主要是接收客户端上传的wifi向量,在建立的wifi指纹库上利用W-K-NN和Kalman滤波等算法匹配出当前客户端的最佳位置并将定位结果返回给客户端。
2. 室内外无缝路径规划模块。该模块主要是用于响应客户端的导航和路径规划的请求,通过客户端所处区域和当前位置以及目标区域的位置,利用Dijkstra算法进行最短路径规划,并将路径规划结果返回给客户端。
3. 室内地图管理模块。负责处理客户端发起的室内地图请求,根据客户端所处位置从数据库中检索室内地图,并将室内地图返回给客户端。
4. 室内外区域判别模块。该模块接收客户端不断上传的位置信息,通过与数据库中已有的室内区域进行位置判断,并将判断的结果返回给客户端。

2.2 数据库设计

系统采用的数据库管理系统是PostgreSQL,数据库由三部分组成,分别为indoor_location_data、indoor_map_para和navi_data。如图2.2.1所示。

图2.2.1 系统数据库
2.2.1 indoor_location_data
indoor_location_data主要存储“数据采集工具”采集的原始wifi信号以及经过处理最终生成的Wifi指纹库。indoor_location_data中的表如图2.2.2所示。

图2.2.2 indoor_location_data中的表
其中wifi_data是存储原始wifi数据的表;selected_wifi_data是存储从原始wifi数据中选取的稳定的AP源的数据;spatial_ref_sys是postGIS插件自动生成的表;local_wifi_finger是根据selected_wifi_data中的数据制作的wifi指纹库,但是它的坐标是采集数据时自定义的室内局部坐标,无法直接用于室内定位;wifi_finger是最终用于wifi定位指纹库。
2.2.2 indoor_map_para
indoor_map_para中的表主要是室内地图、室内区域相关的表。indoor_map_para中的表如图2.2.3所示。

图2.2.3 indoor_map_para中的表
其中area_names是存储室内外区域别名的表;area_para存储的是室外区域的具体位置和一些必要的参数;indoor_area_para是室内区域的具体位置和一些必要参数;indoor_map存储的是室内地图以及相关的参数。
2.2.3 navi_data
navi_data主要存储和导航相关的数据表。navi_data中的表如图2.2.4所示。

图2.2.4 navi_data中的表
node_path表中存储了室内区域导航结点数据。

2.3 关键技术

Java SE技术、Java EE技术、Android、XML、数据库技术、网络编程技术、GPS定位技术、室内定位技术、室内地图、室内外无缝定位技术室内外无缝导航技术

3 技术亮点

本系统的技术亮点将从室内定位算法、室内地图、室内外无缝定位技术和室内外无缝导航技术四个方面进行阐述。

3.1 室内定位算法

本系统采取了3种室内定位的方法,分别是利用手机内置的重力传感器和方向传感器进行惯性定位、利用无线传感器进行wifi定位以及利用NFC进行位置校正。
3.1.1 惯性定位
本系统采用的惯性定位算法为行人航迹推算算法(Pedestrian Dead Reckoning,PDR),它的基本原理是:在已知起始点坐标和航向的基础上,根据行人走过的位移和航向来推测下一个点的坐标位置和航向。
本系统通过获取手机重力传感器和方向传感器的数据,利用的过峰值和过零点结合的步频检测算法、自适应步长算法以及方向检测算法获取每一步的位置增量,从而完成定位。相较于一般的PDR算法精度更高、可靠性更好。
3.1.2 wifi定位
随着wifi无线网络的广泛应用,各个公共场所几乎都有wifi热点AP。本系统主要采用wifi定位中的位置指纹定位方法,该方法分为离线数据采集和在线定位2个阶段。首先通过离线采集wifi数据,建立wifi指纹库;在线定位时,通过将客户端发送的wifi向量数据与服务器的指纹库中的数据进行匹配,利用相应的算法匹配出定位结果返回给客户端。
在匹配算法方面,本系统利用W-K-NN算法提高wifi定位的精度,同时引入Kalman滤波,平滑了定位结果,改善了wifi定位的跳动情况。
3.1.3 NFC位置校正
NFC是Near Field Communication缩写,即近距离无线通讯技术。可以在移动设备、消费类电子产品、PC 和智能控件工具间进行近距离无线通信。NFC工作模式主要有三种工作模式,分别是卡模式(Card emulation)、点对点模式(P2P mode)和读卡器模式(Reader/writer mode)。
在本系统中用到的主要是读卡器模式。通过将室内一些关键点以及wifi信号不稳定的区域的位置事先写入NFC标签中并贴在具体的位置。当用户进入室内,到达贴有标签的位置时,将设备贴在标签附近即可读取标签中存储的位置信息,完成位置校正。相较于Wifi定位,采用NFC标签进行位置校正精度极高。

3.2 室内地图

本系统的室内地图是以自定义的XML文件形式存储在服务器的磁盘内,并在indoor_map_para数据库的indoor_map表内记录不同室内区域的室内地图的存储路径。室内地图文件部分内容如图3.2.1所示。

图3.2.1 室内地图部分内容
当客户端发起室内地图请求时,服务器根据将客户端请求的室内地图文件返回给客户端,客户端接收到室内地图后,对室内地图的内容进行解析,解析完成后在地图上进行渲染绘制。渲染绘制完成后的在系统客户端显示的室内地图如图3.2.2所示。

图3.2.2 系统渲染绘制完成后的室内地图

3.3 室内外无缝定位技术

一般的定位导航系统只有室外GPS定位,而本系统不仅具有室外GPS定位和室内定位两部分,还将室内外定位进行结合,实现了室内外无缝定位。
室内外无缝定位技术和室内外无缝导航技术是本系统最核心的两个部分,其中室内外无缝导航技术又是建立在室内外无缝定位技术的基础上的,下面从室外进入室内、室内进入室外、初始处于室内和室内楼层切换这4个方面阐述本系统室内外无缝定位技术的亮点。
3.3.1 室外进入室内
当用户处于室外时,客户端利用GPS进行定位,同时系统的位置信息上传模块在后台每隔一定的时间就将客户端的位置信息上传至服务器,服务器将位置信息与数据库中的室内区域位置进行匹配。
当用户进入室内区域时,首先服务器向客户端发送进入室内区域的状态码;客户端接收到状态码后,关闭室外GPS定位模块,开启室内定位模块,同时向服务器发起室内地图请求;服务器接收到室内地图请求后,将对应区域的室内地图发送客户端,客户端接收到室内地图后进行解析绘制。
3.3.2 室内进入室外
当用户处在室内时,定位主体是惯性定位,当用户在室内移动时,惯性定位的误差会不断累积,因此利用wifi定位对惯性定位结果进行校正,另外在wifi信号不稳定以及一些重要区域贴有NFC标签,利用NFC标签中的位置信息对惯性定位结果进行校正。
与室外定位相同,系统的位置信息上传模块在后台每隔一定的时间就将客户端的位置信息上传至服务器,服务器将位置信息与数据库中的室内区域位置进行匹配。当用户从室内移动到室外时,服务器向客户端发送进入室外区域的状态码;客户端接收到状态码后,关闭室内定位,开启室外GPS定位模块,同时移除室内地图。
3.3.3 初始处于室内
当用于初始处于室内时,初始区域判别模块通过在一个时间序列内,判断GPS定位结果的来源以及定位结果精度从而判断用户是否在室内,如果用户在室内,则开启室内定位模块,并根据wifi定位的结果向服务器请求相应室内区域的室内地图。
3.3.4 室内楼层切换
当用户在室内进行定位导航时,必定会涉及到楼层的切换,楼层的切换主要根据wifi定位结果,由于wifi定位结果可以是一个三维向量

,其中lat和lon分别是纬度和经度,这两个分量发生变化对应的是用户在平面位置上的变化,当floor发生变化时,并且在一个时间序列内仍保持变化后的值,则可以认为用户进入了新的楼层,客户端向服务器发起室内地图请求。
另外考虑到通过wifi定位结果判断楼层存在误判的情况,因此在系统客户端还提供了请求的室内地图的按钮,让用户人工向服务器请求室内地图。提高了系统的稳定性和可靠性,完善了用户体验。

3.4 室内外无缝导航技术

一般的导航软件仅有室外导航部分,而本系统在室内外无缝定位技术的基础上实现了室内外无缝导航的功能。无缝导航技术从室外导航、室内导航和室内外无缝导航这3个方面阐述。
3.4.1 室外导航
由于OpenStreetMap中所有的道路数据都以结点的形式存储在服务器上,OSMdroid中有一个osmbonuspack包,它可以利用OSM现有的路网数据实现室外路径规划功能。因此系统的室外导航部分即以osmbonuspack包中的接口为基础进行实现,提高了开发效率和导航结果的可靠性。
3.4.2 室内导航
室内导航部分,是在制作室内地图时,绘制出室内的路径结点,形成了一个XML格式的室内区域路径结点文件,当进行室内路径规划时,服务器根据navi_data数据库的node_path表中存储的路径,读取室内区域对应的路径结点文件,构造出邻接矩阵,利用Dijkstra算法进行室内区域最短路径规划,将路径规划结果返回给客户端,客户端在此基础上实现导航功能。
3.4.3 室内外无缝导航
室内外无缝导航即是室外导航和室内导航的结合,首先每一室内区域在数据库indoor_map_para的area_para表中都有一个“室内外导航接壤结点”属性,该属性是连接室内外导航的重要属性,下面阐述室内外无缝导航技术的流程。
当用户需要从室外导航至室内时,客户端将用户当前位置和目标区域的名称发送到服务器,服务器接收到数据后,首先判断用户处在室内还是室外,导航的目标区域是室外建筑还是室内区域。经过判断后,假设判断结果为用户从室外位置导航至室内某一地点,则服务器首先规划出当前位置至室内某一地点所处室内区域的“室内外导航接壤结点”的室外最短路径;然后读取对应区域的室内路径结点文件,规划出“室内外导航接壤结点”至目标区域的室内最短路径,然后将室内外的路径规划结果进行整合,返回给客户端,客户端在此基础上进行导航,即完成室内外无缝导航功能。