一种基于传统加权K近邻技术的时间窗定位方法与流程

文档序号:14155905阅读:327来源:国知局

本发明涉及一种基于传统加权k近邻技术的时间窗定位方法,具体涉及一种wifi指纹定位系统中的时间窗定位方法,属于无线指纹定位中的模式匹配技术领域。



背景技术:

传统的无线指纹定位技术,于在线定位阶段一般采用模式匹配技术,寻找与输入数据最相近的指纹数据,常见的匹配技术包括最近邻技术(nn,nearestneighbour),k近邻技术(knn,kthnearestneighbour),加权k近邻技术(wknn,weightkthnearestneighbour)。其中,wknn技术由于算法简单,定位效果良好,被广泛用于在现阶段定位匹配。

然而,传统的wknn技术,对每一次定位请求,需要对比系统中全部的指纹点信息,并按照特定匹配规则计算出与输入数据最相近的指纹数据段。此种方式计算效率低下,同时忽略了待定位用户的位置连续性,导致计算缓慢,定位精度有待提升。唐洋等人(唐洋,白勇,马跃,蓝章礼,“基于wifi的指纹匹配算法在室内定位中的应用研究”,计算机科学,pp.73-75,2016)提出了一种基于指纹簇的方式,极大地减少了定位所需时间,该方案设立特征指纹点,并通过层次搜索的方式,减少搜索次数,缺点是严重依赖于接入点的分布状态,同时没有考虑到历史位置信息,定位精度有待提升。



技术实现要素:

本发明所要解决的技术问题是:提供一种基于传统加权k近邻技术的时间窗定位方法,改进了传统wknn技术存在的问题,大幅提升计算效率,同时考虑历史位置信息,提升定位精度。

本发明为解决上述技术问题采用以下技术方案:

一种基于传统加权k近邻技术的时间窗定位方法,包括如下步骤:

步骤1,设置时间窗队列的长度以及噪声容忍限度thres,依次获取用户在各个方向的信号强度数据,并观察时间窗队列,若时间窗队列已满,则进入步骤2,否则进入步骤3;

步骤2,根据时间窗队列中存储的数据,更新各个方向上信号强度的最大、最小值,并将每个方向的最大信号强度值存储在数组rssimax[n]中,将每个方向的最小信号强度值存储在数组rssimin[n]中,其中,n为所有方向的个数;若对于第i个方向,用户在该方向的信号强度数据位于rssimin[i]-thres与rssimax[i]+thres之间,则进入步骤4,否则进入步骤3;

步骤3,根据步骤1获取的用户在各个方向的信号强度数据,采用传统加权k近邻定位算法计算定位结果,若该定位结果与时间窗队列中存储的定位结果不同,则进入步骤5,否则,将用户在各个方向的信号强度数据以及该定位结果组合后插入到时间窗队列的尾部,若插入后时间窗队列已满,则计算数组rssimax[n]和rssimin[n],并将计算的定位结果返回;

步骤4,弹出时间窗队列头部的第一组数据,根据步骤1获取的用户在各个方向的信号强度数据,采用传统加权k近邻定位算法计算定位结果,并将用户在各个方向的信号强度数据以及该定位结果组合后插入到时间窗队列的尾部,同时更新数组rssimax[n]和rssimin[n],并将计算的定位结果返回;

步骤5,清空时间窗队列、数组rssimax[n]和rssimin[n],将用户在各个方向的信号强度数据以及计算的定位结果组合后插入到时间窗队列中,并将计算的定位结果返回。

作为本发明的一个进一步方案,所述时间窗定位方法还包括步骤6,设置间隔时间,每过一个间隔时间,主动清空时间窗队列、数组rssimax[n]和rssimin[n]。

作为本发明的一个优选方案,所述间隔时间为10s。

作为本发明的一个优选方案,步骤1所述依次获取用户在各个方向的信号强度数据,若用户在某个方向上的信号强度数据未获取到,则将用户在该方向的信号强度数据默认置为-95。

作为本发明的一个优选方案,所述噪声容忍限度thres为5db。

本发明采用以上技术方案与现有技术相比,具有以下技术效果:

本发明通过使用历史位置信息而非全部指纹点数据进行定位,相比于传统的加权k近邻定位方案,既可以极大减少定位所需时间,同时提升了定位精度。

附图说明

图1是本发明基于传统加权k近邻技术的时间窗定位方法的流程图。

具体实施方式

下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本发明公开了一种wifi指纹定位系统中的时间窗定位方法,先对信号强度数据按照传统加权k近邻技术进行计算,若判决于相同的位置点n次,则直接使用历史数据进行位置计算。和传统的加权k近邻技术相比,本发明避免了每次定位过程都需要与全部的指纹点数据进行比对,能够有效地提高计算速度。同时,传统的加权k近邻技术没有充分考虑到用户移动的惯性信息,而本发明倾向于选择用户之前n次相同定位的位置,提升了定位精度。

每次定位先观察队列,若队列不满,则使用传统的wknn定位算法进行定位,如果wknn算法新计算的定位结果与队列中其他数据的定位结果不同,则清空队列,并将新计算的结果插入队列,如果新计算的位置和队列中的其他位置都相同,将新计算的结果插入到队列尾。同时更新数组rssimax,rssimin上所有方向的最大信号强度和最小信号强度,对于一部分没有采集到终端信号的ap,则将强度默认置为-95。当队列满时,新到的数据不再和指纹库中全部数据逐一对比,而是和rssimin以及rssimax中的数据进行比对,看自身在每个维度上的数据是否处于rssimin-thres到rssimax+thres之间,thres参数代表噪声容忍限度,如5db。如果不在容忍区间内,则重新进行wknn定位,同时清空时间窗,包括清除队列和rssimax,rssimin信息,并将新输入数据和计算结果插入到rssiqueue队列上,如果在噪声容纳区间上,则去除队列头部的一个数据,并将新的数据入队,同时更新rssimax和rssimin数组。具体实施过程如图1所示:

步骤1:获取信号强度数据,观察队列rssiqueue,若队列满,进入步骤2,否则进入步骤3;

步骤2:设置噪声容纳范围thres,如果对于每一个方向i,新的信号强度数据都在rssimin[i]-thres到rssimax[i]+thres之间,则进入步骤4,否则进入步骤3;

步骤3:使用传统的wknn定位算法进行定位,如果wknn算法计算的定位结果与队列中其他数据的已有定位结果不同,进入步骤5,否则将信号强度数据、定位结果数据组合插入到队列尾,如果插入后队列满,计算rssimax、rssimin数组,并将计算结果返回;

步骤4:弹出队列头部的第一个数据,并将最新的定位数据插入到队列尾,同时更新rssimax、rssimin数组。将计算结果返回;

步骤5:清空rssiqueue队列,rssimax与rssimin数组。将新计算的结果插入到rssiqueue队列中,并返回计算结果。

另外,为了避免噪声积累,设置后台任务,每10s对rssiqueue队列,rssimax与rssimin数组进行一次主动清空。

下面以3个接入点(即3个方向)的情形为例,并假设时间窗队列rssiqueue的大小为5,噪声容限thres为5db。假设已经采集4次信号强度数据,根据传统wknn算法,均定位于某个指纹点a。此时rssiqueue中存放的数据为[(-24,-56,-72,a),(-20,-61,-67,a),(-23,-52,-71,a),(-26,-50,-70,a)],rssimax存放每个方向上的最大的信号强度值,rssimin存放每个方向上最小的信号强度值,但此时队列不满,因此两个数组为空,当下一次请求为(-25,-60,-73)时,同时定位在指纹点a处,则rssiqueue中存放数据为[(-24,-56,-72,a),(-20,-61,-67,a),(-23,-52,-71,a),(-26,-50,-70,a),(-25,-60,-73,a)],同时rssimax更新为[-20,-50,-67],rssimin更新为[-26,-61,-73],此时队列数据满。当下一次到达数据为[-23,-52,-69]时,不再通过传统wknn算法进行计算,而是比较新数据的每个方向的值是否位于rssimin中每个方向的值减去thres和rssimax中每个方向值加上thres之间,即[-31,-66.-78]与[-15,-45,-62]之间,由于新数据在两个数组之间,因此判定位于指纹点a,队列中第一个数据,并把新数据入队,此时队列中结果为[(-20,-61,-67,a),(-23,-52,-71.a),(-26,-50,-70,a),(-25,-60,-73,a),(-23,-52,-69,a)],同时更新rssimax,rssimin。此时rssimax为[-20,-50,-67],rssimin为[-26,-61,-73],此时若下一次接收数据为(-10,-80,-52),新数据不在rssimin-thres与rssimax+thres之间,清空队列和数组rssimin,rssimax。并使用wknn算法计算指纹位置,发现位于指纹位置b,将新计算结果插入队列,此时rssiqueue中存放数据为[(-10,-80,-52,b)],此时队列不满,rssimax与rssimin为空,不更新。

以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1