【《基于WiFi和PDR技术的室内定位系统设计》7900字(论文)】_第1页
【《基于WiFi和PDR技术的室内定位系统设计》7900字(论文)】_第2页
【《基于WiFi和PDR技术的室内定位系统设计》7900字(论文)】_第3页
【《基于WiFi和PDR技术的室内定位系统设计》7900字(论文)】_第4页
【《基于WiFi和PDR技术的室内定位系统设计》7900字(论文)】_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于WiFi和PDR技术的室内定位系统设计摘要:定位服务已经成为人们日常生活这不可或缺的帮手,但是由于传统的卫星定位到达地面时信号的衰减,以及受复杂建筑布局的影响,想要实现一定精度的定位服务比较困难。基于WIFI指纹的定位技术因为布置成本低廉、性能优越而在室内定位方向具有比较好的应用前景。本文以Android为开发平台,使用WIFI指纹技术和行人航测推算技术设计,通过WIFI定位初始坐标,然后使用行人航测推算出运动轨迹,通过两种方式的结合,提高定位系统的精度。关键词:WIFI定位、PDR、行人航测推算技术、室内定位1引言1.1研究背景随着对定位服务需求的不断增长,室内外无缝定位技术得到了前所未有的发展。在室外环境中,全球导航卫星系统(GNSS)技术保证了较高的定位精度,但在大多数室内环境中,卫星信号非常弱,甚至是没有信号,所以如何解决室内最后一米的定位问题成为了热门的研究方向.室内定位是指利用WiFi指纹、蓝牙、超宽带、磁场定位技术、行人航测推算(PDR)等技术来解决这一问题REF_Ref71028252\r\h[1],在这些方法中,WiFi指纹定位和PDR是两种最流行的技术,因为它们不需要额外的硬件设备。但由于多径传播严重,WiFi信号波动较大,PDR累积误差较大,室内定位精度较低。因此,迫切需要一种高精度的室内定位系统。WiFi热点(APs)广泛应用于办公室、医院、机场、大学教学楼等室内环境。一般来说,基于WIFI的室内定位是通过智能手机实现的,部署成本低,误差可容忍,使用的计算资源少,利用RSSI来测量环境变化,也不需要知道AP的确切位置。因此WiFi指纹定位是室内定位的首选方法之一。对于PDR来说,智能手机使用了如加速度计、陀螺仪、磁强计等自成一体的传感器,可以通过结合当前步伐的位移和上一步的位置,逐步推断出用户的位置。通过步行步长检测、步长估计、用户航向估计计算当前步长的位移。1.2国内外研究现状目前,国内关于室内定位方案的研究已经非常热门,不少公司和机构拥有着自己的定位方案,软件级的定位比如谷歌公司和高德地图等已经将室内定位加入了自己的地图软件,完成了室内外地图无缝切换的功能;精度更高的还有硬件级的厂商比如:Pozyx、SnailTech、Decawave、科创物联、以及ANOTC沃旭。2相关技术介绍本章介绍了Android平台和Javaweb的基础知识。Android主要介绍了应用开发平台架构和应用开发的特色。JavaWeb部分主要讲述了与安卓客户端的通信方法,以及介绍了IDEA和AndroidStudio开发工具。2.1Android系统介绍和开发Android是一个由AndyRubin等人开发的基于Linux内核的移动操作系统,这个系统是开源的,后来Google公司发现了这个系统的价值,收购了它并且加以开发,于2008年推出了第一个正式的安卓系统REF_Ref71028334\r\h[2]。最初Android是为数码相机所设计,之后由于移动设备的迅速发展,Android成为了主要面向移动设备的操作系统。因为安卓开源的特殊性使得其快速的在移动设备之间普及并且得到了众多开发者的支持,目前Android系统占全球移动设备系统的一半以上。安卓开发平台主要包括Linux内核(LinuxKernel)、硬件抽象层(HAL)、Andriod运行环境(AndroidRuntime)、原生C/C++库、JavaAPI框架、系统应用六个部分,如图2-1所示。图2-1安卓系统架构图2.2JavaWeb服务器开发JavaServlet是服务端的Java程序,它根据客户端请求生成内容,并传递回客户端,Servlet可以认为是在服务端运行的小程序,没有用户界面。本次开发使用Java作为服务器开发语言,利用http通讯协议完成安卓端和服务端的消息传递,如图2-2所示。图2-2Servlet演示图2.3开发工具介绍REF_Ref71028822\r\h[3]2.4K值临近算法介绍在统计学中,K值临近算法(K-NN)是一种非参数的分类方法,KNN模型可以获得精确的推荐结果并为结果给出合理的解释。这种算法的原理是:创建一个样本数据库,样本库中的每一个数据都存在着一个标签,只有我们知道样本数据集中的每个数据和它的分类的对应关系。在输入没有标签的新数据后,将新数据的特征与样本数据集中的对应特征进行匹对,找出样本中最接近的数据分类标签,然后选择最接近的K个数据,就是KNN算法中K的原点REF_Ref71028849\r\h[4]。一般使用哈曼顿距离、欧式距离作为衡量相似的标准,在本次设计中,采用欧式距离作为标准Di=j=1n(Sj−Sij)2。(如图2-3所示,图2-3KNN算法图解2.5行人航测算法(PDR)图2-4PDR算法图解图2-4PDR算法图解(x0,y0)为初始位置d为步长Θ为方向角,使用公式计算下一步位置REF_Ref71028913\r\h[5]:x3系统定义与可行性分析3.1系统定义设计目的:本系统旨在帮助比较大型的场所例如:室内停车场、医院、商场等行人可以快捷知道自身的位置以及到达目的地。业务需求:本系统需要包含以下功能有:①快速定位用户的位置,并将其绘制在室内平面图中;②使用航测算法推断用户的步行轨迹,绘制在地图上。③使用最短路径算法帮助用户搜寻到达目的地的最短路程。业务价值:本次设计的想法来源是在制作一个室内停车场试试监控系统时,需要一个功能较全面的定位服务模块,但是本设计并不局限于停车场。室内定位的应用如今已经非常广泛,它解决了卫星定位的盲区,使得行人在复杂的室内建筑也能和室外一样使用地图服务,适用场景包括但不限于大型商场寻找店铺,医院寻找门诊等等应用。3.3可行性分析本次设计的目的较为简单,并不涉及成本和收益问题等等,所以只分析技术上的可行性。首先设计的客户端和服务端所使用的语言和技术都比较成熟,都使用的市面上流行的开发工具进行开发,服务端的系统为Linux,不存在兼容性问题;其次,项目规模较小,功能比较简单基础,不需要进行UI方面的美化,服务端和客户端都可以由一个人开发,所以本次设计的系统从技术上来讲时可行的。4系统分析4.1功能需求分析本系统基于Android平台,实现了在室内用户通过APP端与服务器交互以精确的知道自己所处位置以及自己的运动轨迹;同时用户可以使用客户端规划自己与目标地点之间的路径,实现了类似导航的功能。本系统首先需要使用者提前采集定位区域内各个位置的WIFI信号和强度,然后上传到服务器储存,这就是“指纹的采集”。在需要定位的时候,软件会采集用户当前的位置信息,然后将其与服务器的数据对比,经过服务器的比较算法得到一个精度较高的位置;利用这个位置作为移动的起点,通过移动设备自带的传感器采集的数据,可以推算行人的动态轨迹,实现定位实时更新。若用户需要规划行走的路径,只需要进入APP上传想要到达的地方,服务器会根据路径规划算法规划出合理的路径,然后传递回Android客户端。根据以上的分析,我将本次设计的系统分为四个模块:WIFI指纹采集模块、定位模块、行人航测推算模块、路径规划模块。4.1.1WIFI指纹采集模块指纹采集模块是整个定位系统的基础。手机应该能够在这个环节中实现自动收集指纹,保证数据的准确性。由于受到硬件的制约,随着室内环境的变化WIFI的强度和数量也将随之变化,所以为了保证定位系统的稳定性,计划将只采集信号强度较稳定,不容易发生变化的几个固定AP,模块需要实现的功能:①用户在客户端设置所处位置的坐标,采集WIFI指纹信息并将其动态显示在屏幕上。②当采集到正确的WIFI指纹数据后,将其格式转换为json,然后传递到服务器上;③服务器接收指纹信息并将其储存到数据库中REF_Ref71028992\r\h[6];④如果服务器能正确的储存信息,则发送收集成功的信息回终端,如果储存出错,则发送收集失败的消息回终端。4.1.2定位模块定位模块是整个定位系统的核心,当用户点击定位按钮时,将会触发这个模块采集周围的WIFI信号强度发送给服务器,服务器得到数据后使用定位算法将其与数据库中的数据对比、处理,然后得到用户的坐标返回到客户端。本模块需要实现的功能有:①采集未知点的WIFI指纹信息,将其打包为json格式传递给服务器。②服务端中数据库中提取之前采集的指纹信息。③定位算法的实现以及调用,然后发送回客户端。④客户端显示坐标信息,并将其反馈在地图中。4.1.3行人航测推算模块行人航测的实现时建立在定位模块之上的,需要使用定位模块确定初始位置,然后通过调用Android设备的传感器通过航测算法估算用户的运动轨迹,本模块的可视化界面将和定位模块结合在一起。需要实现的功能有:①调用定位模块获取初始位置,并将处理得到的初始位置信息显示在地图中。②调用运动模型获取步数,然后获取运动方向,结合运动步数得到运动轨迹,并将其显示在地图中。4.1.4路径规划模块路径规划模块,也是基于定位模块实现的,在完成初始定位之后,由用户输入目的地的坐标,然后上传到服务器,服务器使用寻路算法进行计算,反馈到安卓端,并可视化显示在室内地图上,需要实现的功能有:①调用定位模块,确定用户初始位置,并将处理得到的初始位置信息显示在地图中。②上传用户输入的终点坐标到服务器,服务器根据相邻矩阵调用最短路径算法,计算最短路径并反馈回Android客户端,将其可视化显示。4.2非功能性分析性能是评价一款软件质量好坏的关键,制作出高性能、响应快、拓展性强的软件应该是每一个开发者应该恪守的原则。针对定位软件的特殊性,本次设计提出了3点需求:①定位精度的要求,作为一款定位软件,定位的精度直接影响了这款软件的质量,本次设计的目标精度是能够识别出不同的房间,大概是十米。②一款定位软件想要拥有良好的用户体验,其响应速度也十分关键,此次设计的响应时间希望能控制在1s以内。③将重复性较高的代码都提取出来写成单独的类,提高代码质量,以方便以后修改定位地点或定位场景。4.3域模型在软件开发的不同阶段中,我们需要建立不同的模型用来帮助开发;域模型是在软件设计阶段中对现实世界实体的抽象的建模。4.3.1域类图图4-1域类图4.3.1域类图说明域类图是我们对定位系统的几个功能模块进行建模,下面将对域类图中的类进行说明:管理员和用户公用一个移动终端,但是进入WIFI指纹信息采集需要输入管理员密码,移动终端会向服务器验证,否则只能使用定位和寻路两个模块;在使用收集或者定位功能时,终端会向服务器发送WIFI的强度信息,如果是收集,则服务器会将WIFI信息储存在数据库中,若是定位则会调用的相应的定位算法,再发送回终端。4.4用例模型用例模型用来给客户解释系统的行为和事件,因此模型必须通俗易懂。4.4.1用例图本次设计的主要任务是完善定位、航测推算、路径规划三个核心功能,其余的辅助功能不在本次开发的考虑之中;使用者分为管理员和用户两条线共用一个移动终端,其中进行WIFI指纹采集需要管理员进行身份验证,用户只能使用已有的WIFI信息。具体的事件流程在下一小节中。图4-2系统用例图4.4.2用例规约用例编号Rssi001用例名称收集WIFI指纹信息简述此用例规定了管理者收集WIFI指纹信息的过程执行者管理员前置条件管理员必须输入正确的密码后置条件储存WIFI指纹信息基本流程1、管理者携带移动终端到相应的地点;

2、输入地点的坐标;

3、验证坐标有效后储存WIFI指纹信息;

4、提示管理员收集信息。表4-1数据采集用例规约用例编号Rssi002用例名称WIFI定位服务简述此用例规定了用户定位的过程执行者用户前置条件用户处于定位区域内后置条件正确定位用户的位置基本流程1、用户携带移动终端到达指定区域内;

2、启动定位服务;

3、验证地点有效后进行定位;

4、提示用户定位成功。表4-2WIFI定位用例规约用例编号Rssi003用例名称规划路径简述此用例规定了用户规划路径的过程执行者用户前置条件用户处于定位区域内后置条件规划用户与目的地之间的最短路径基本流程1、用户定位自身坐标;

2、输入目的地的坐标;

3、验证坐标有效后规划路径;

4、提示用户行走的路径。表4-3路径规划用例规约4.5分析级静态模型4.5.1分析类图图4-3系统分析类图4.5.2分析类图说明下面将对静态类图的设计理念进行分析,通过对将要实现的类进行分析,有助于后面软件代码的实现。本图中对之前抽象的域类图中的类进行适当的抉择,对每一个模块功能从代码层面上进行归类和补充,设计一共分为定位、WIFI指纹收集、路径规划三个类型,其中类的细节只进行了部分的概括,详细的细节将在设计类图中说明。用户或管理员通过终端使用不同的功能,不同功能对应不同的类,每个类都可以与服务器进行交互来调用服务器的不同功能,经过服务器的计算,将结果反馈回终端。5系统设计与实现5.1环境介绍5.1.1开发环境本次设计的安卓客户端采用AndroidStudio4.1.1开发,SDK版本为30;服务端使用IDEA2020.3.1版本,开发的JDK版本都为1.8,开发的系统环境为Windows10。5.1.2运行环境终端的运行环境是小米手机K30S,系统版本为MIUI12.5,Android版本为11;服务端的运行系统环境为Centos7.8,使用Tomcat9.0进行部署,JDK版本1.8;数据库为MYSQL5.7版本。5.2总体设计方案根据前面的需求分析,我们已经将系统划分为四大模块,他们分别为:WIFI指纹采集模块、定位模块、行人航测推算模块、路径规划模块。图5-1系统总体设计图启动程序后,主页面将存在三个按钮,分别对应三个功能为:数据采集、定位、路径规划功能,定位模块和行人航测推算模块集成在了一个功能中。在使用本程序前,应该先开启第一个功能收集相应点位的WIFI指纹信息,信息采集完毕后,就可以打开第二个功能,在这个功能中,当用户点击定位后,客户端会采集周围的WIFI信号,将其打包好,传递给服务器进行算法的处理后,再由服务器传递回终端,并将其绘制在终端的室内地图上;当用户开始行走的时候,客户端开始调用航测推算模块进行计算,并将轨迹绘制在地图上;当用户开启第三个功能,同样也是先定位,然后等待用户输入目的地的坐标,坐标将被上传至服务器计算,服务器得到结果之后反馈给客户端,再由客户端在地图中绘制路线。5.3类的设计5.3.1服务端类的设计①JDBCUtils类和JDBC类JDBUtils是数据库连接类,JDBC是数据库操作类,这两个类独立出来可以降低程序中代码的重复性;当需要操作数据库时,只需要调用JDBC类中的方法就行,而JDBC又先调用JDBUtils进行连接再操作,只返回操作成功与否给调用者。②Main类Main负责数据收集模块的功能,同时负责与客户端的通信,当客户端传递数据过来时,Main类调用JDBC中的相应的方法对数据库进行存储操作。③KNN类和KNNManger类KNNManger类主要负责定位功能,KNN类负责定位的计算,当客户端传递客户周围WIFI指纹信息时,KNNManger调用KNN类进行计算然后将结果发送回客户端。④FindPathFindPath类主要负责路径规划功能,用来接收客户端传递的用户输入的终点坐标,然后计算最短路径传回给客户端。5.3.2客户端类的设计这里将会介绍终端中主要的类:①MainActivity这是每一个安卓应用程序都有会有的主类,通过这个类跳转到其他类实现规划好的三个功能。②Collect实现了WIFI信号强度的收集,通过Android官方提供的WIFIManger实体,返回WIFI的SSID和强度,对比客户端预先设置的AP,将这些AP的信号强度转换为json格式发送到服务器。③Location实现了定位的功能,同样使用WIFIManger得到当前位置WIFI的指纹,然后上传到服务器以及接收服务器处理完的数据,将其绘制在地图上。④step包包含了调用手机各类传感器的类,包含地磁传感器、陀螺仪、计步器等等。5.3用例设计5.3.1WIFI指纹采集模块图5-2WIFI指纹采集模块时序图说明:管理员首先在主页选择WIFI指纹收集,输入正确的管理密码后即可进入Collection()活动,当用户输入正确的坐标提交后,Collection将通过WIFIManger中的getScanresults()方法获取WIFI信号强度,然后向服务器的Main()提交WIFI信息和坐标,随后会得到Main()的反馈得知收集的成功与否,如图5-2所示。5.3.2定位模块图5-3定位模块时序图说明:用户通过主页即MainActivity跳转到Location()活动,在onCreate()生命周期中将Stepview对象实例化,这个对象中存放了定位地点的地图,然后通过Scan()方法获取WIFI信号强度并向服务器发送,在服务器的KNNManger类中处理消息计算后得到坐标信息返回到终端的Stepview类,然后绘制到地图上完成一次定位。5.3.3行人航测推算模块图5-4行人航测推算模块时序图说明:这个模块与定位模块是合并在一起的,同样在onCreate的生命周期中,Stepview对象用来存放室内地图,使用Twaiting()方法将信息上传交给服务端的KNNManger()处理,然后服务器将定位的信息传回终端,终端得到初始位置。当用户开始走动后,首先使用Step()方法得到步数,用Orient()方法得到运动方向,在autoAppPoint()方法计算之后得到沿坐标轴运动的长度,然后使用getcoord()方法处理数据后传递回Stepview的地图中绘制,至此完成运动轨迹的刷新。5.3.3路径规划模块图5-5路径规划模块时序图说明:用户通过终端的主界面进入路径规划模块即MainActivity(),然后使用PlanButton活动进行定位,在onCreate的生命周期中,实例化Pathview对象用来存放室内的地图,定位的步骤与定位模块一致;当用户输入正确的目的地坐标后,调用Twaitting()方法传递给服务器,服务器使用floyMethod()方法得到路径信息,然后传递回终端,终端在Pathview对象中将路径绘制出来。5.4设计级静态模型将主要的类使用关系图联系起来,这是设计最终阶段的静态模型,如图5-6所示图5-6类图5.5数据库关系设计属性数据类型说明XfloatX轴YfloatY轴AP1float固定的AP点1AP2float固定的AP点2AP3float固定的AP点3AP4float固定的AP点4AP5float固定的AP点5表格5-1数据库设计属性5.6数据结构与算法5.6.1室内定位算法的设计与实现室内定位算法作为整套软件的核心,它直接影响了整个软件所有功能的准确性和效率。本次设计的定位算法使用的是K值临近算法,通过在数据采集阶段收每个AP点的信号强度建立WIFI指纹数据库,在需要定位的时候,使用算法找到最可能的位置,详情如下:首先,访问数据库,通过ArrayList数据结构从数据库中提取指纹REF_Ref71029056\r\h[7],当服务器得到当前位置的WIFI信号强度后,使用discal()方法处理得到当前位置与预设的AP点的欧几里得距离,这个距离将作为判断标准,来得到K个最接近的结果,然后计算的到平均值作为当前的位置的估计值,详细流程如图所示:图5-7室内定位算法流程5.6.2路径规划算法设计和实现路径规划算法用于寻路模块,首先使用定位算法得到当前的初始位置,然后等待用户输入目的地位置,当服务器得到目的地坐标后,使用floyd算法规划出路径,路径再传递回终端由Pathview绘制在地图上,详细流程如图所示REF_Ref71029206\r\h[8]:图5-8路径规划算法流程6软件实现及测试本章将对本系统的每个功能模块使用代码进行实现与测试,终端运行环境为安卓11,服务端为CentOSWIFI指纹采集模块在进入主界面后,点击数据采集按钮进入WIFI指纹采集功能模块,在输入正确的坐标以及处在定位范围,点击采集功能,系统将会将用户当前所在位置的AP信号采集并储存至服务器。图6-2WIFI指纹图6-2WIFI指纹采集界面图6-1程序主界面6.2定位模块与行人航测模块在采集完成数据库后,就可以使用定位功能,当用户处于正确的定位范围内,点击定位按钮就可以在地图中找到自己的位置,开始走动的时候

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论