本公开属于二维平面传感器定位领域,尤其涉及一种考虑测量误差的二维平面传感器定位方法及系统。
背景技术:
本部分的陈述仅仅是提供了与本公开相关的背景技术信息,不必然构成在先技术。
当前的传感器网络定位技术中,主要的定位方法是先通过某一方法求得未知位置的传感器节点关于其邻节点的重心坐标,然后在已知重心坐标的基础上,通过迭代算法求得该传感器节点的平面或者空间坐标。在求未知位置节点关于其邻节点的重心坐标的过程中,首先要测量的是该节点和其邻节点中的n个邻节点组成的n+1个节点中两两之间的距离(在二维空间中n=3,三维空间中n=4,并假设选取的这n个邻节点是两两分别可通信的)。在用传感器测量距离的过程中,由于传感器精度和一些其他因素的影响,不可避免的会出现一定的测量误差。这就需要定位方法具有很好的鲁棒性。
发明人发现,现存的传感器定位技术只有在没有误差的理想情况下或者在测量误差相对较小的时候,才能得到接近真实位置的坐标。在用传感器定位的过程中,或多或少总会产生一些噪声,这些噪声主要是由一些影响传感器测量的不确定因素,如:人为因素、环境因素、传感器本身的测量精度等。在带有一定噪声的环境中,现存的传感器定位技术很难达到理想的准确度,无法很好的收敛到待定位节点的真实坐标附近。
技术实现要素:
为了解决上述问题,本公开的第一个方面提供一种考虑测量误差的二维平面传感器定位方法,其在考虑一定程度的测量误差干扰的情况下,基于重心坐标解决二维平面分布式定位问题,提高了定位精度。
为了实现上述目的,本公开采用如下技术方案:
一种考虑测量误差的二维平面传感器定位方法,包括:
在整个二维平面的传感器网络中,选择三个位置已知的节点作为锚节点;
利用多维标度法,计算待定位节点相对其所有邻节点的重心坐标;
随机给待定位节点一个初始状态,并利用分布式迭代算法,通过有限次迭代计算待定位节点真实坐标的预测值。
为了解决上述问题,本公开的第二个方面提供一种考虑测量误差的二维平面传感器定位系统,其在考虑一定程度的测量误差干扰的情况下,基于重心坐标解决二维平面分布式定位问题,提高了定位精度。
为了实现上述目的,本公开采用如下技术方案:
一种考虑测量误差的二维平面传感器定位系统,包括:
锚节点选择模块,其用于在整个二维平面的传感器网络中,选择三个位置已知的节点作为锚节点;
重心坐标计算模块,其用于利用多维标度法,计算待定位节点相对其所有邻节点的重心坐标;
定位节点坐标预测模块,其用于随机给待定位节点一个初始状态,并利用分布式迭代算法,通过有限次迭代计算待定位节点真实坐标的预测值。
本公开的有益效果是:
本公开在考虑一定程度的测量误差干扰的情况下,基于重心坐标解决二维平面分布式定位问题的方法,达到一种高精度、抗干扰、低成本的目的。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1为本公开实施例提供的一个13个节点的传感器网络的示意图;
图2为图1所示传感器网络无噪声时的迭代仿真示意图;
图3为图1所示传感器网络带服从(-0.02,+0.02)均匀分布的噪声时的迭代仿真示意图;
图4为图1所示传感器网络在带期望为0,方差为0.01的高斯噪声时的迭代仿真示意图;
图5为本公开实施例提供的一个30节点的传感器网络示意图;
图6为本公开实施例提供的30节点传感器网络,在带高斯噪声的情况下的迭代仿真示意图;
图7为本公开实施例提供考虑测量误差的二维平面传感器定位方法流程图。
具体实施方式
下面结合附图与实施例对本公开作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本公开提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
实施例一
术语解释:
1、重心坐标
重心坐标是描述某一点关于其他点的相对位置的几何概念。
设i,j,k是二维平面中不共线的三个点,l是平面中另外一个点,pl,pj,pk和pl分别表示i,j,k,l四个点的欧几里得坐标,若存在三个实数ai,aj,ak满足
pl=alipi+aljpj+alkpk(1)
ali+alj+alk=1(2)
则称ai,aj,ak为点l关于点i,j,k的重心坐标。
2、多维标度法(mds)
多维标度法是将要计算的某一节点和它的n个邻节点组成的传感器网络子图a(在二维平面中n=3,在三维空间中n=4),转化为另外一个子图b。图b中各节点之间的相对位置关系和图a是相同的。图a中的待定位节点关于其余节点的重心坐标是可以使用对应的面积比直接求得。
在本实施例中考虑的是二维平面空间传感器网络的定位问题,因此在本实施例中图a是由待定位节点和它的三个可以互相通信的邻节点组成的。
本实施例实施的前提条件为:
假设一:已知位置的锚节点有三个,并且这三个锚节点不共线;
假设二:对每个未知位置的传感器节点,其邻节点中至少有一组节点是可以互相两两通信的(在二维平面中一组包括三个节点)。
如图7所示,本实施例的一种考虑测量误差的二维平面传感器定位方法,其包括:
在整个二维平面的传感器网络中,选择三个位置已知的节点作为锚节点;
利用多维标度法,计算待定位节点相对其所有邻节点的重心坐标;
随机给待定位节点一个初始状态,并利用分布式迭代算法,通过有限次迭代计算待定位节点真实坐标的预测值。
为了更清楚的说明多维标度法,下面举例说明多维标度法在二维平面的应用。
在一个无线传感网络中,若待求节点和它的邻节点的节点标号分别为l,i,j,k(其中l是待求节点,i,j,k是l的邻节点),且4个节点两两之间可以互相通信。用pl,pl,pj,pk分别表示节点l,i,j,k的平面欧几里得平面坐标,用多维标度法(mds)计算q。主要步骤如下:
1.当已知节点之间的距离dij时,建立矩阵
2.计算中心矩阵
i表示4×4的单位向量,l4表示元素全为1的4维向量,
3.计算矩阵
4.进行奇异值分解x=v∧ut
其中v=[v1,v2,v3,v4]∈r4×4是酉矩阵,∧是对角矩阵,其对角元素满足λ1≥λ2≥λ3≥λ4≥0,其中u也表示一个酉矩阵。
5.取∧*=diag(λ1,λ2)∈r2×2,v*=[v1,v2]∈r4×2
6.计算
q=[ql,qi,qj,qk]矩阵总共有4列,每列都是一个节点的坐标,则ql相对于qi,qj,qk的重心坐标和节点l相对于i,j,k的重心坐标相同。这一性质是可以通过严格的数学证明过程证明的。
用gn表示n个节点组成的传感器网络图,其中节点1到3表示位置已知锚节点,其余节点4到n表示位置未知的待定位节点,用p表示节点的坐标。
步骤一:对于待定位节点i(3<i<n),找到它的所有邻节点nl。从它的邻节点中选择三个节点j、k、l,判断这4个节点之间是不是可以互相通信,若可以互相通信则进行步骤二,否则继续选择另外一组邻节点,直到满足进入步骤二的条件。
在上面的假设二中,已经假设了每一个节点的邻节点中,至少有一组可以满足步骤一。
步骤二:用传感器测量这四个节点中每两个节点之间的距离dli,dlj,dlk,dij,dik,djk。
在用传感器测量距离的过程中,由于传感器精度等因素的影响,此时会产生测量误差。
步骤三:由步骤二中传感器测量得到的距离,使用上面介绍的多维标度法计算得到q。
步骤四:由得到的矩阵q计算节点i关于j、k、l的重心坐标。
上面计算得到q=[ql,qi,qj,qk],其中q的每一列表示一个平面坐标,则可以由公式(3)得到以其中i,j,k三个点为顶点的三角形面积
同样可以得到以其它任意三点为顶点的三角形面积。
再利用公式(4)分别求出点l关于i,j,k的重心坐标
令als=0,其中s∈nl-{i,j,k}
步骤五:计算待定位节点l关于其所有邻节点的重心坐标。
由于在一个传感器网络中一个点l的邻节点不一定只有三个,为了充分利用每个邻节点的位置信息,所以求待定位节点关于其所有邻节点的重心坐标。邻节点多余三个时,(1)(2)式的形式如下:
在l的所有邻节点nl中选择三个不同于i,j,k的节点,返回步骤二计算重心坐标得到
步骤六:分别求出所有待定位节点关于邻节点的重心坐标,并把所有待定位节点坐标用矩阵ps表示,锚节点坐标用pa表示。这样所有待定位节点的重心坐标可以用矩阵的形式表示(6)
[bc]中的第i行代表ps中第i行表示的待定位节点关于所有节点(包括锚节点)的重心坐标(非i的邻居节点则为0)。其中pa中的每行表示一个锚节点的坐标,ps中的每行表示一个待定位节点的坐标,接着可以求出
m=i-c,
ε是一个标量,当ε为一预设的小量数值的时候可以保证(7)收敛。而当ε取值满足上式时,算法(7)收敛,并且收敛速度是最快的。
m是由上面的式子m=i-c计算得到,其中i是一个与c维度相同的单位矩阵。
其中λmax,λmin分别表示最大和最小特征值。
步骤七:通过分布式迭代算法(7)经过有限次的迭代,可以得到最终的收敛坐标。
这里η只是表示一个中间变量。
图1为一个13个节点的传感器网络的示意图,其中用三个空心圆表示三个锚节点的位置,用实心圆表示待定位的节点的位置,两节点之间连线表示两节点是可以互相通信的;
图2为图1所示传感器网络无噪声时的迭代仿真示意图,其中用“*”表示三个锚节点,“x”表示待定位节点的真实坐标,实心圆表示随机初始化的待定位节点迭代过程的位置变化;
图3为图1所示传感器网络带服从(-0.02,+0.02)均匀分布的噪声时的迭代仿真示意图,其中用“*”表示三个锚节点,“x”表示待定位节点的真实坐标,实心圆表示随机初始化的待定位节点迭代过程的位置变化;
图4为图1所示传感器网络在带期望为0,方差为0.01的高斯噪声时的迭代仿真示意图,其中用“*”表示三个锚节,“x”表示待定位节点的真实坐标,实心圆表示随机初始化的待定位节点迭代过程的位置变化;
图5为一个30节点的传感器网络示意图,其中由三个空心圆表示三个锚节点的位置,由标号为4到30的实心圆表示待定位的节点的位置,两节点之间连线表示两节点是可以互相通信的;
图6为30节点传感器网络,在带高斯噪声的情况下的迭代仿真示意图,其中用“*”表示三个锚节点,“x”表示待定位节点的真实坐标,空心圆表示有限次迭代后预测的位置。
实施例二
本实施例提供一种考虑测量误差的二维平面传感器定位系统,其包括:
(1)锚节点选择模块,其用于在整个二维平面的传感器网络中,选择三个位置已知的节点作为锚节点;
其中,三个位置已知的节点不共线。
对每个未知位置的传感器节点,其邻节点中至少有一组节点是可以互相两两通信的;在二维平面中一组包括三个节点。
(2)重心坐标计算模块,其用于利用多维标度法,计算待定位节点相对其所有邻节点的重心坐标;
在重心坐标计算模块中,计算待定位节点相对其所有邻节点的重心坐标的过程为:
对于待定位节点,找到它的所有邻节点;从它的邻节点中选择三个节点,判断该待定位节点和它的三个邻节点之间是否互相通信,若可以互相通信,则进行下一步,否则继续选择另外一组邻节点;
用传感器测量该待定位节点和它的三个邻节点中每两个节点之间的距离;
在用传感器测量该待定位节点和它的三个邻节点中每两个节点之间的距离的过程中,任意i和j两个节点之间的距离等于测量从i到j点之间距离与从j到i点之间距离之和的均值。
多维标度法计算得到矩阵q,矩阵q总共有4列,每列都是一个节点的坐标,进而计算该待定位节点关于它的三个邻节点的重心坐标;再计算待该待定位节点关于其所有邻节点的重心坐标。
(3)定位节点坐标预测模块,其用于随机给待定位节点一个初始状态,并利用分布式迭代算法,通过有限次迭代计算待定位节点真实坐标的预测值。
本实施例在考虑一定程度的测量误差干扰的情况下,基于重心坐标解决二维平面分布式定位问题的方法,达到一种高精度、抗干扰、低成本的目的。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。