目前最主要的室内定位算法基本都是脱胎于三角定位算法、指纹定位算法、质心定位算法,前两者的核心思想是通过手机系统的SDK获取到周围各个AP(Access Point)发送的信号强度RSSI(Received Signal Strength Indication 接收信号指示强度
))及AP地址,跟据信号衰减模型(信号强度与距离信号源的距离相关)来确定位置,三角定位算法和指纹定位算法使用不同的方式来确定该位置,而质心定位算法则是利用网络的连通性进行定位。
-
三角定位算法
三角定位算法在需要进行定位的空间放置3个AP,并且3个AP的位置已知,如果知道该空间内某位置的信号强度则可建立信号衰减模型,根据该信号强度计算出该位置到三个AP的距离使用某位置移动设备的信号强度即可估算出其到附近AP的距离,如果能确定若干AP的位置,即可确定该移动设备的位置,显然,三角定位算法只适用于固定场所的定位,并且由于障碍物的存在,信号衰减模型在实际使用时会存在一定误差。
-
指纹定位算法
指纹定位算法是基于室内环境复杂,信号反射折射所形成的在不同位置形成的不同的信号强度信息而提出的一套算法,指纹算法能很好的利用了反射折射所形成的信号信息,离线先生成指纹信号强度数据库,在线定位中再通过实际测量的一组RSSI值来计算位置距离。指纹算法分为两大阶段:
-
离线训练阶段
将需要进行定位的空间划分多重区域,按固定间距建立采样点,使用WiFi接受设备逐个采样点采样,记录该点位置、所获取的RSSI及AP地址,最后对采样数据进行预处理,并保存在数据库中。
-
在线定位阶段
在进行定位时,根据实时获取当前RSSI及AP地址,将该信息上传到服务器按一定规则进行匹配,常见的匹配规则有KNN、神经网络、随即森林等等,本质上其实就是分类算法,根据观测数据将RSSI划分到距离类中。
显然,相较三角定位算法,指纹算法更加繁琐,对硬件、算法有着更高的要求,顺理成章的其定位精度也优于三角定位算法。
-
-
质心算法
质心算法是一种基于网络连通性的质心定位算法,相较其它算法,其优越之处在于无需测距,其基本思想是:未知节点以所有在其通信范围内锚节点的几何质心作为自己的估计位置。传统的质心算法成本低、计算量小、简单易实现。然而,由于定位精度过度依赖于节点密度,并且精度也较低。为此,很多学者对质心定位算法进行了不同方式的改良,如,基于距离倒数的质心加权和基于RSSI倒数的质心加权算法以及基于最大似然估计的加权质心定位算法。
关于具体的算法理论部分,等后面有时间再进行更新。