本发明涉及无线传感网络定位领域,尤其涉及一种定位方法、装置、设备及存储介质。
背景技术:
无线传感网络是由部署在监测区域内的大量微型传感器节点组成,通过无线通信方式形成的一种多跳自组织网络系统。它通过感知、采集和处理网络疯爱区域中感知对象的信息(例如光、声、热、电、力学、化学、位置等各种信息),与互联网结合形成一巨大网络,在环境监测、空间探索、智能家居、工业控制等领域具有广泛的应用前景。而定位技术是无线传感网络重要的支撑技术,很多情况下,无线传感网络中的节点需要知道自身的物理位置,如果网络不能提供相应的位置信息,那么传感器的许多功能是毫无意义的。
目前,现有的定位技术是基于rssi的加权质心算法,例如专利申请号为:“20410382556.1”的《一种基于无线传感网加权阈值质心定位方法》,该发明方法是在基于rssi上,在定位的过程中未知节点接收到多个节点信息时,先利用多个参考节点信息定位出多个不同距离,通过最小二乘法辨识出多个未知节点的初次坐标,再引入加权阈值质心定位,设定一个倒数阈值,舍去不在阈值内的未知节点的坐标,对保留下来的初次定位加权求出未知节点最终的坐标位置。
但是,这种基于rssi的加权质心算法其主要是利用参考节点和位置节点之间的rssi为依据,来计算每个固定参考节点的权值,利用权值来体现固定参考节点对质心位置的影响程度,反映其内在联系,这种算法由于路径衰减因子等的影响,定位精度较低,同时由于参考节点数据较大,导致定位计算量较大。
技术实现要素:
针对上述问题,本发明的目的在于提供一种定位方法、装置、设备及存储介质,能够减少定位的计算量,同时提高定位精度。
第一方面,本发明实施例提供了一种定位方法,包括以下步骤:
根据未知节点与锚节点之间的信号强度,从锚节点中确定若干个参考节点;
根据若干个所述参考节点的位置,对所述锚节点的位置进行修正;
根据修正后的各个锚节点的位置与其对应的预设的修正参数,计算所述未知节点的位置;
根据所述参考节点的数目、所述锚节点的数目以及通信半径,对所述未知节点的位置进行仿真误差分析,获取所述未知节点的平均误差;
根据所述未知节点的平均误差,对所述未知节点的位置进行校正。
优选地,所述根据若干个所述参考节点的位置,对所述锚节点的位置进行修正,具体包括:
根据各个所述参考节点到所述未知节点的距离,获得所述未知节点与所述参考节点的距离关系;
根据所述距离关系,计算所述锚节点的修正参数;
根据所述参考节点的位置与所述锚节点对应的修正参数,对所述锚节点的位置进行修正。
优选地,所述方法还包括以下修正参数确定步骤:
根据所述距离关系与所述锚节点的通信半径,计算所述锚节点的修正参数;
其中,所述距离关系是以所述参考节点的通信半径为所述参考节点到所述未知节点的距离计算所得。
优选地,所述方法包括:
根据公式(1),对所述锚节点的位置进行修正;
其中,qj为锚节点pi(xi,yi)的修正参数;pj(xj,yj)为参考节点pj的位置;k为参考节点的数目。
优选地,所述根据所述未知节点的平均误差,对所述未知节点的位置进行校正,具体包括:
以所述参考节点的数目为自变量、所述平均误差为因变量,获得邻点加权质心定位下的第一定位折线图;
根据邻点加权质心定位下的第一定位折线图,对所述平均误差与质心算法下的平均误差进行比较,获得所述平均误差的第一差异值;
以所述锚节点的通信半径为自变量、所述平均误差为因变量,获得邻点加权质心定位下的第二定位折线图;
根据邻点加权质心定位下的第二定位折线图,对所述平均误差与质心算法下的平均误差进行比较,获得所述平均误差的第二差异值;
根据所述第一差异值和所述第二差异值,确定所述未知节点的修正关系;
根据所述未知节点的修正关系,对所述未知节点的位置进行校正。
优选地,所述未知节点的修正关系的函数表示为:
其中,pi(xi,yi)为锚节点pi的位置;n为锚节点的数目;pj(xj,yj)为参考节点pj的位置;k为参考节点的数目;wk为锚节点pi的修正参数,且wk=q1=q2=…=qk。
优选地,所述根据修正后的各个锚节点的位置与其对应的预设的修正参数,计算所述未知节点的位置,具体包括:
根据公式(3),计算所述未知节点的位置;
其中,pi(xi,yi)为锚节点pi的位置;n为锚节点的数目;pj(xj,yj)为参考节点pj的位置;k为参考节点的数目;qj为锚节点pi的修正参数,wk为锚节点pi的修正参数,且wk=q1=q2=…=qk。
第二方面,本发明实施例提供了一种定位装置,包括:
参考节点确定模块,用于根据未知节点与锚节点之间的信号强度,从锚节点中确定若干个参考节点;
位置修正模块,用于根据若干个所述参考节点的位置,对所述锚节点的位置进行修正;
位置坐标计算模块,用于根据修正后的各个锚节点的位置与其对应的预设的修正参数,计算所述未知节点的位置;
误差分析模块,用于根据所述参考节点的数目、所述锚节点的数目以及通信半径,对所述未知节点的位置进行仿真误差分析,获取所述未知节点的平均误差;
位置校正模块,用于根据所述未知节点的平均误差,对所述未知节点的位置进行校正。
第三方面,本发明实施例提供了一种定位设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面中任意一项所述的定位方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如第一方面中任意一项所述的定位方法。
相对于现有技术,本发明实施例提供的一种定位方法的有益效果在于:所述定位方法包括:根据未知节点与锚节点之间的信号强度,从锚节点中确定若干个参考节点;根据若干个所述参考节点的位置,对所述锚节点的位置进行修正;根据修正后的各个锚节点的位置与其对应的预设的修正参数,计算所述未知节点的位置;根据所述参考节点的数目、所述锚节点的数目以及通信半径,对所述未知节点的位置进行仿真误差分析,获取所述未知节点的平均误差;根据所述未知节点的平均误差,对所述未知节点的位置进行校正。依据未知节点接收到的信号强度,从锚节点中选取若干个参考节点对锚节点的位置进行修正,再对未知节点的位置进行估计,能够在体现不同参考节点对未知节点影响的基础上,减少修正参数数据,从而减少定位的计算量,同时能够在环境改变时修正参数基本保持不变,大大提高定位精度。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明第一实施例提供的定位方法的流程示意图;
图2是图1中所述定位方法的算法的流程示意图;
图3是本发明第二实施例提供的定位装置的结构示意图;
图4是本发明第三实施例提供的定位设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参照图1,本发明第一实施例提供了一种定位方法,其可由定位设备来执行,并包括以下步骤:
s11,根据未知节点与锚节点之间的信号强度,从锚节点中确定若干个参考节点;
在本发明实施例中,所述定位设备可为电脑、手机、平板电脑、门禁设备、笔记本电脑或者服务器等计算设备,所述定位方法可作为其中一个功能模块集成与所述定位设备上,由所述定位设备来执行。
所述未知节点在接收到各个锚节点的信号后,根据接收到的rssi信号强度从大至小对各个锚节点进行排序,并选取信号强度信号较大的前k个节点作为参考节点。通过rssi信号强度,选取出距离所述未知节点距离最近的k个参考节点,筛选方法简单,简化了定位算法。
s12,根据若干个所述参考节点的位置,对所述锚节点的位置进行修正;
依据选取出的距离所述未知节点距离最近的k个参考节点对锚节点的位置进行修正,能够体现出不同参考节点对未知节点影响的基础上,通过修正后的锚节点的位置对未知节点进行定位,能够提高位置节点的定位精度。
s13,根据修正后的各个锚节点的位置与其对应的预设的修正参数,计算所述未知节点的位置;
s14,根据所述参考节点的数目、所述锚节点的数目以及通信半径,对所述未知节点的位置进行仿真误差分析,获取所述未知节点的平均误差;
在本实施例中,通过所述参考节点的数目、所述锚节点的数目以及通信半径、以及锚节点的位置,模拟仿真不同环境下,不同参考节点的数目下的无线传感网络,并以所述参考节点的数目、所述锚节点的数目以及通信半径为自变量,对所述未知节点的位置进行仿真误差分析,得出所述未知节点的平均误差,从而得到采用步骤s11-s13对所述未知节点的定位精度。通过分别对筛选出的参考节点数目的比较以及对参考节点的通信半径的比较得出定位精度误差分析,准确把握定位精准程度。
s15,根据所述未知节点的平均误差,对所述未知节点的位置进行校正。
本实施中,依据未知节点接收到的信号强度,从锚节点中选取距离未知节点距离最近的若干个参考节点对锚节点的位置进行修正,再对未知节点的位置进行估计,能够在体现不同参考节点对未知节点影响的基础上,减少修正参数数据,从而减少定位的计算量,同时能够在环境改变时修正参数基本保持不变,大大提高定位精度。
在一种可选的实施例中,所述根据若干个所述参考节点的位置,对所述锚节点的位置进行修正,具体包括:
根据各个所述参考节点到所述未知节点的距离,获得所述未知节点与所述参考节点的距离关系;
根据所述距离关系,计算所述锚节点的修正参数;
根据所述参考节点的位置与所述锚节点对应的修正参数,对所述锚节点的位置进行修正。
在一种可选的实施例中,所述方法还包括以下修正参数确定步骤:
根据所述距离关系与所述锚节点的通信半径,计算所述锚节点的修正参数;
其中,所述距离关系是以所述参考节点的通信半径为所述参考节点到所述未知节点的距离计算所得。
修正参数与参考节点密度成正比,和通信半径邻似成正相关且较前更加敏感,在本实施例中,以所述参考节点的通信半径为所述参考节点到所述未知节点的距离,通过统计分析各个参考节点的通信半径,可以得到所述未知节点与所述参考节点的距离关系。以邻1点定位算法、邻2点定位算法为例,可以得到如下的距离关系:
其中,r为参考节点的通信半径。
在一种可选的实施例中,所述方法包括:
根据公式(1),对所述锚节点的位置进行修正;
其中,qj为锚节点pi(xi,yi)的修正参数;pj(xj,yj)为参考节点pj的位置;k为参考节点的数目。
在本实施例中,修正参数qj是未知节点到参考节点关于距离的函数,具体如上述公式(4)和(5)所示。若未知节点与参考节点无法通信,则修正参数设置为0。
在一种可选的实施例中,所述根据修正后的各个锚节点的位置与其对应的预设的修正参数,计算所述未知节点的位置,具体包括:
根据公式(3),计算所述未知节点的位置;
其中,pi(xi,yi)为锚节点pi的位置;n为锚节点的数目;pj(xj,yj)为参考节点pj的位置;k为参考节点的数目;qj为锚节点pi的修正参数,wk为锚节点pi的修正参数,且wk=q1=q2=…=qk。
在本发明实施例中,设wk=q1=q2=…=qk=wk,通过公式(3)可看出,该算法的关键是找出距离未知节点rssi信号强度最大(距离最近)的k个参考节点、全部锚节点的位置之和以及修正参数wk。通过上述算法,可以有效减少了修正参数的数目,同时该算法将修正参数qj设有同一参考值wk,这避免增加干扰因素,如无需考虑路径传播模型中路径衰减因子的影响,简化了定位过程,同时提高定位精度。
在一种可选的实施例中,所述根据所述未知节点的平均误差,对所述未知节点的位置进行校正,具体包括:
以所述参考节点的数目为自变量、所述平均误差为因变量,获得邻点加权质心定位下的第一定位折线图;
根据邻点加权质心定位下的第一定位折线图,对所述平均误差与质心算法下的平均误差进行比较,获得所述平均误差的第一差异值;
以所述锚节点的通信半径为自变量、所述平均误差为因变量,获得邻点加权质心定位下的第二定位折线图;
根据邻点加权质心定位下的第二定位折线图,对所述平均误差与质心算法下的平均误差进行比较,获得所述平均误差的第二差异值;
根据所述第一差异值和所述第二差异值,确定所述未知节点的修正关系;
根据所述未知节点的修正关系,对所述未知节点的位置进行校正。
在本实施例中,通过对参考节点数目比较进行误差分析和定位精度与参考节点数目和参考节点通信半径之间的关系以及与质心算法比较作分析,具体,采用matlab画出以参考节点的数目为自变量、所述平均误差因变量的第一定位折线图,并比较质心算法和邻点加权质心定位下的平均误差的差异,得到第一差异值。采用matlab分别画出以参考节点间通信半径为自变量平均误差因变量的第二定位折线图,并比较质心算法和邻点加权质心定位下平均误差的差异,得到第二差异值;根据第一差异值和第二差异值,确定所述未知节点的修正关系;例如以邻1点定位算法、邻2点定位算法为例,可以得出结论:锚节点的数目较少或者通信半径较低的情况下,邻1点加权质心算法的定位精度比邻2点要高,反之,则邻2点加权质心算法的定位精度比邻1点要高。根据这个结论,可以确定如下修正关系:
其中,pi(xi,yi)为锚节点pi的位置;n为锚节点的数目;pj(xj,yj)为参考节点pj的位置;k为参考节点的数目;wk为锚节点pi的修正参数,且wk=q1=q2=…=qk。
本发明通过依据误差分析对未知节点的位置做出校正,可以更进一步提高定位精度。
进一步地,对不同数目的参考节点下求得的各个修正后的未知节点的位置求平均值,可以得到所述未知节点的最终位置。
即
设邻1点定位算法(即参考节点数目为1)、邻2点定位算法(即参考节点数目为2)所得的估计位置分别为:(x′1,y′1)、(x′2,y′2),取两者平均值作为最后结果,得到最后估计位置:
进一步地,所述方法还包括:对修正后的未知节点的位置进行误差分析。
具体利用matlab画出以参考节点的数目为自变量、平均误差因变量的第三折线图,并比较将采用质心定位算法得到的未知节点的位置、基于rssi加权质心定位算法得到的未知节点的位置、邻点质心定位算法得到的未知节点的位置(即为校正前的位置节点的位置)以及最后的校正定位后的位置,通过比较结果,可以得出采用本方发明的对未知节点进定位,定位精度更高。
本发明的算法流程如图2所示,具体可以总结为以下六个步骤:
1、比较锚节点的信号强度;
2、选取信号强度较大、距离最近的若干个参考节点;
3、修正锚节点位置,估计未知节点的位置;
4、验证算法有效性;
5、误差分析
6、得出校正方案,实现定位校正。
请参阅图3,是本发明第二实施例提供的定位装置的示意图。该装置包括:
参考节点确定模块1,用于根据未知节点与锚节点之间的信号强度,从锚节点中确定若干个参考节点;
位置修正模块2,用于根据若干个所述参考节点的位置,对所述锚节点的位置进行修正;
位置坐标计算模块3,用于根据修正后的各个锚节点的位置与其对应的预设的修正参数,计算所述未知节点的位置;
误差分析模块4,用于根据所述参考节点的数目、所述锚节点的数目以及通信半径,对所述未知节点的位置进行仿真误差分析,获取所述未知节点的平均误差;
位置校正模块5,用于根据所述未知节点的平均误差,对所述未知节点的位置进行校正。
在一种可选的实施例中,位置修正模块2包括:
距离关系获取单元,用于根据各个所述参考节点到所述未知节点的距离,获得所述未知节点与所述参考节点的距离关系;
修正参数计算单元,用于根据所述距离关系,计算所述锚节点的修正参数;
锚节点位置修正单元,用于根据所述参考节点的位置与所述锚节点对应的修正参数,对所述锚节点的位置进行修正。
在一种可选的实施例中,所述修正参数计算单元,具体用于根据所述距离关系与所述锚节点的通信半径,计算所述锚节点的修正参数;
其中,所述距离关系是以所述参考节点的通信半径为所述参考节点到所述未知节点的距离计算所得。
在一种可选的实施例中,所述位置修正模块2,用于根据公式(1),对所述锚节点的位置进行修正;
其中,qj为锚节点pi(xi,yi)的修正参数;pj(xj,yj)为参考节点pj的位置;k为参考节点的数目。
在一种可选的实施例中,所述位置校正模块5包括:
第一折线图获取单元,用于以所述参考节点的数目为自变量、所述平均误差为因变量,获得邻点加权质心定位下的第一定位折线图;
第一比较单元,用于根据邻点加权质心定位下的第一定位折线图,对所述平均误差与质心算法下的平均误差进行比较,获得所述平均误差的第一差异值;
第二折线图获取单元,用于以所述锚节点的通信半径为自变量、所述平均误差为因变量,获得邻点加权质心定位下的第二定位折线图;
第二比较单元,用于根据邻点加权质心定位下的第二定位折线图,对所述平均误差与质心算法下的平均误差进行比较,获得所述平均误差的第二差异值;
修正关系确定单元,用于根据所述第一差异值和所述第二差异值,确定所述未知节点的修正关系;
未知节点位置校正单元,用于根据所述未知节点的修正关系,对所述未知节点的位置进行校正。
在一种可选的实施例中,所述未知节点的修正关系的函数表示为:
其中,pi(xi,yi)为锚节点pi的位置;n为锚节点的数目;pj(xj,yj)为参考节点pj的位置;k为参考节点的数目;wk为锚节点pi的修正参数,且wk=q1=q2=…=qk。
在一种可选的实施例中,所述位置坐标计算模块3,用于根据公式(3),计算所述未知节点的位置;
其中,pi(xi,yi)为锚节点pi的位置;n为锚节点的数目;pj(xj,yj)为参考节点pj的位置;k为参考节点的数目;qj为锚节点pi的修正参数,wk为锚节点pi的修正参数,且wk=q1=q2=…=qk。
本实施中的定位装置与第一实施例中的定位方法的原理和过程相同,在此不在重复说明。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
参见图4,是本发明第三实施例提供的定位设备的示意图。如图4所示,该定位设备包括:至少一个处理器11,例如cpu,至少一个网络接口14或者其他用户接口13,存储器15,至少一个通信总线12,通信总线12用于实现这些组件之间的连接通信。其中,用户接口13可选的可以包括usb接口以及其他标准接口、有线接口。网络接口14可选的可以包括wi-fi接口以及其他无线接口。存储器15可能包含高速ram存储器,也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器15可选的可以包含至少一个位于远离前述处理器11的存储装置。
在一些实施方式中,存储器15存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:
操作系统151,包含各种系统程序,用于实现各种基础业务以及处理基于硬件的任务;
程序152。
具体地,处理器11用于调用存储器15中存储的程序152,执行上述实施例所述的定位方法,例如图1所示的步骤s11。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能,例如参考节点确定模块。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述定位设备中的执行过程。
所述定位设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述定位设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图仅仅是定位设备的示例,并不构成对定位设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
所称处理器11可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器11是所述定位设备的控制中心,利用各种接口和线路连接整个定位设备的各个部分。
所述存储器15可用于存储所述计算机程序和/或模块,所述处理器11通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述定位设备的各种功能。所述存储器15可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器15可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
其中,所述定位设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
本发明第四实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如第一实施例中任意一项所述的定位方法。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。