Advertisement

android 室内定位方法,基于Android的室内定位

阅读量:

室内定位项目已进入收尾阶段。该系统基于kNN方法计算出当前无线信号与数据库中的信号库进行比对,并得出它们之间的相似度指标作为权重值。随后利用粒子滤波算法确定当前位置的概率分布

目前的方案是:

为了更好地实现对比目的,请先对当前位置收集到的 RSSI 向量与数据库中的所有 RSSI 向量进行比较分析。该距离计算方法旨在通过将测试集某一个 AP 的 RSSI 值与数据库中对应位置 AP 的 RSSI 值相减来获得。

由于每个位置在各个方向上均收集了30组数据 即相当于单个位置方向共有120组数据 具体来说 每个位置对应四个不同的方向 对于这些收集到的数据 我们针对每组数据计算与当前WiFi信号的距离值 然后针对每一个位置及其所对应的四个方向 计算每组数据与其所在位置的平均距离值 并将其存储起来作为后续分析的基础

在空间中随机生成一批具有均匀分布的粒子集合,在本例中共包含10个不同的位置点,在每一个位置点上对应4种可能的方向值。因此总共会产生至少40个独立的粒子个体。每一个体携带的位置信息及其方向信息都是其独特的属性。随后会对这些个体赋予一个概率值,在本方案中设定为等概率分配策略即每个个体的概率值均为1/N(其中N代表总样本数量)。

在之前的计算中获得的每个position与direction之间的距离,在经过处理后作为高斯函数的输入进行分析。这表示该位置与方向之间的关系强度越大(即distance较小),其对应的权重值也就越高;反之,则权重值较低(即distance较大)。

计算权值与各粒子概率的乘积,并将其视为新的概率分布;因为新的累积概率之和不再等于1, 因此需要将各个粒子的概率重新按其总和进行归一化处理

针对新的概率分布模型,在蒙特卡洛模拟中我们从中随机选取N个微粒作为样本点。其中高概率密度区域的微粒更容易被选中而低概率密度区域的微粒则可能被遗漏掉。并将其分布在坐标系中以图形形式展示出来。

这个项目目前阶段也已初具规模,并面临诸多挑战;结果如何仍属未知数。

该项目自去年8月起就已经启动了。当时教授要求我使用一个RN131EK模块来尝试检测某个区域内的WiFi信号及其强度等具体数据。然而由于该模块存在诸多不便,我与导师讨论后决定采用Android手机作为工具。随后,在兼顾上课的同时也不忘进行其他项目开发的过程中,这个项目得以顺利开展并逐步推进。

最初面临的挑战主要源于Android编程这一领域。尽管它以Java为根基但其独特的编程特性与Java存在显著差异因此在使用过程中会遇到许多定制类库以及难以预料的软件缺陷(BUG)。有时修复一个BUG所需时间长达一周之久

随后便面临算法选择的权衡。仅凭WiFi信号的定位精度尚显有限,在长距离追踪方面仍具应用潜力。尽管目前并未实际应用该技术(Inertial sensors),但其漂移误差问题不容忽视,在短距离测量中表现尚可满足需求。若能将两者结合使用,则有望显著提升定位精度。

该算法对于室内定位问题的应用极为广泛。可能源于分类器精度的问题, 该方法对于室内外定位测试表现出色。现采用自始至终以来一直沿用的k-近邻法(kNN)。问题在于, 不同地点所拥有的无线热点数量存在差异, 即使是在同一地点, 每次测量所得的数据量也有所不同。

在使用WiFi信息与数据库信息对比时会遇到若干个wifi节点信息出现缺失的现象 这会导致定位精度受到较大影响 因此目前所采用的解决方案并非直接确定当前位置 而是通过估算该区域范围内各点的概率分布来进行定位工作 这种方法的基本思路是在覆盖区域内随机撒布一定数量的采样点 每个采样点都携带各自携带的信息数据 然后通过欧氏距离计算得到的误差值作为权重系数 将这些加权后的采样点进行重新采样处理后 就能得到该区域范围内各点位置的概率分布信息。

一种可行的改进方法是:采用进化算法对粒子滤波器的重采样环节进行优化;将空间中的点先进行聚类处理后进行分类操作,从而能够有效降低计算复杂度,并且有望提升分类精度

全部评论 (0)

还没有任何评论哟~