具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细说明。以下实施例用于说明本发明,但不用来限制本发明的范围。
图1a为本发明提供的一种定位方法实施例的流程示意图。如图1a所示,本实施例包括:
101、定位节点确定一第一节点的虚拟通信区域,所述第一节点为锚节点且为所述定位节点的间接邻居节点。
具体地,所述定位节点是任一可以确定自身的可能位置区域(PossibleLocationArea,简称PLA)的节点。可选地,本实施例中的节点均为无线传感器网络中的节点。
通常,根据节点是否确定自身的位置,将节点分为锚节点和非锚节点,其中,锚节点确定自身的位置,也称为信标节点,而非锚节点不确定自身的位置,也称为未知节点。至少在执行完本实施例的方法之前,本实施例中的所述定位节点不确定自身的位置,即,为一非锚节点。
通常,间接邻居节点是相对直接邻居节点来说的。具体地,一节点可以与其直接邻居节点直接交互信息,即,中间无需其它节点来转发信息,而一节点与其间接邻居节点交互信息时需要其它节点来帮助转发信息。换句话说,节点与其直接邻居节点的最小跳数为1,节点与其间接邻居节点的最小跳数大于等于2。
本实施例中,所述第一节点的虚拟通信区域(VirtualCommunicationArea,简称VCA)为参考所述第一节点的位置、所述第一节点到所述定位节点的一通信链路上除所述定位节点之外的各节点的通信半径确定的区域。
由于所述第一节点为所述定位节点的间接邻居节点,所述通信链路上除所述第一节点和所述定位节点之外还有至少一个节点,这至少一个节点也可以称为所述通信链路上所述第一节点和所述定位节点之间的中间节点。可选地,所述通信链路上除所述定位节点之外的各节点可以是锚节点,也可以是非锚节点,本实施例对此不作限定。
在一种可选的实现方式中,所述第一节点的VCA为以所述第一节点为中心、以所述第一节点到所述定位节点的一通信链路上除所述定位节点之外的各节点的通信半径之和为半径的区域。
在又一种可选的实现方式中,所述第一节点的VCA为以所述第一节点为中心、以所述第一节点到所述定位节点的一通信链路上除所述定位节点之外的各节点的通信半径之和与一系数的乘积为半径的区域。其中,所述系数与所述通信链路有关。考虑到该通信链路上相邻节点之间的距离通常小于前一节点的通信半径,以及,该通信链路上的各节点通常不位于一条直线上,所述系数具体地可以与所述通信链路上中间节点的个数,和/或,节点之间的方位有关,可以通过预先的学习得到。举例来说,当所述通信链路上有1个中间节点时,该系数的取值比如为0.95;当所述通信链路上有2个中间节点时,该系数的取值比如为0.9。又举例来说,所述通信链路上只有1个中间节点:若该中间节点相对于所述第一节点的方向和该中间节点相对于所述定位节点的方向的夹角为180度,即,该中间节点与所述第一节点之间的连线和该中间节点与所述定位节点之间的连线形成的夹角,可以认为所述第一节点、该中间节点、所述定位节点在一条直线上,在此场景下该系数的取值比如为0.95;若该中间节点相对于所述第一节点的方向和该中间节点相对于所述定位节点的方向的夹角为90度,在此场景下该系数的取值比如为0.7。
102、确定所述定位节点的PLA在所述第一节点的虚拟通信区域内。
在网络中,不直接相邻的任意两个节点之间通常可以有至少一条通信链路。在所述第一节点到所述定位节点的通信链路有多条的场景下,为了尽可能地缩小所述定位节点的PLA,可选地,所述通信链路为所述第一节点到所述定位节点的多条通信链路中跳数最少的一条。
可选地,所述确定所述定位节点的PLA在所述第一节点的VCA内,包括:
所述定位节点将所述定位节点的PLA确定为之前确定的PLA与所述第一节点的VCA的交集。
其中,所述之前确定的PLA是执行上述交集的步骤之前已经确定的所述定位节点的PLA。可选地,所述之前确定的PLA可以是预设的初始位置区域,比如:整个网络覆盖区域、无穷大的区域等,或者,是通过其它定位方法或步骤确定的所述定位节点的PLA。
在一种可能的场景中,对于所述定位节点来说,有多个第一节点,可选地,所述定位节点将所述定位节点的PLA确定为之前确定的PLA与所述第一节点的VCA的交集之后,还包括:
所述定位节点确定又一第一节点的VCA;
将所述定位节点的PLA确定为之前确定的PLA与所述又一第一节点的VCA的交集。
也就是说,针对每个第一节点,所述定位节点执行一次本实施例的方法。
在一种可选的实现方式中,本实施例还包括:
所述定位节点接收所述第一节点的至少一个第一信息包,所述至少一个第一信息包均包括:所述第一节点的节点标识、所述第一节点的位置信息、所述第一信息包所经过的至少一个中间节点的节点标识;
所述定位节点根据所述第一节点的节点标识和所述至少一个中间节点的节点标识,确定所述第一节点为锚节点且为所述定位节点的间接邻居节点。
通常,每个中间节点在转发的信息包中加入自身的节点标识,相应地,所述定位节点可以根据所述第一节点的至少一个第一信息包,确定所述第一节点到所述定位节点的至少一条通信链路。具体地,若所述定位节点接收到所述第一节点的多个第一信息包,则这多个第一信息包中所述第一节点的位置信息通常是相同的,而这多个第一信息包所经过的至少一个中间节点的节点标识可能是不同的。举例来说,所述第一节点N1到所述定位节点Ni有4条通信链路,分别为:N1→N2→Ni,N1→N2→N3→Ni,N1→N3→N2→Ni,N1→N3→Ni,相应地,所述定位节点Ni可能收到分别通过所述4条通信链路传送过来的所述第一节点N1的四个信息包,这三个信息包所经过的中间节点分别为:N2,N2和N3,N3和N2,N3。
可选地,本实施例中节点的节点标识可以标识该节点是锚节点还是非锚节点。在一种可能的场景中,节点标识中有一个用于标识是否锚节点的bit(位),比如,该bit为0时表示非锚节点,该bit为1时表示锚节点;在又一种可能的场景中,所述定位节点保存有所有锚节点的节点标识,所述定位节点通过将信息包中的节点标识与保存的所有锚节点的节点标识进行比较,确定该节点标识对应节点是锚节点还是非锚节点。
可选地,本实施例中仅锚节点的信息包中包括自身的位置信息,非锚节点的信息包中不包括自身的位置信息,相应地,所述定位节点可以根据所述第一节点的第一信息包中是否包括所述第一节点的位置信息,确定所述第一节点是否为锚节点。
可选地,各节点基于其它节点的请求发送自己的信息包,和/或,周期性地发送自己的信息包,和/或,当自己的信息包中的信息更新时(比如位置发生变化时)发送自己的信息包;其中,上述发送信息包的方式可选地为广播方式。可选地,所述定位节点接收所述第一节点的至少一个第一信息包之前,还包括:
所述定位节点广播用于请求信息包的请求信息。
通常,位于一节点的通信覆盖区域(CommunicationCoverageArea,简称CCA)内的各其它节点均可以直接接收该节点广播的信息,即,位于一节点的CCA内的各其它节点通常为该节点的直接邻居节点。类似地,一节点的间接邻居节点不能直接接收该节点广播的信息,即,一节点的间接邻居节点通常不位于该节点的CCA内。基于此,可选地,所述定位节点接收所述第一节点的至少一个第一信息包之后,还包括:
所述定位节点参考所述第一节点的位置信息和所述第一节点的通信半径,确定所述第一节点的CCA;
将所述定位节点的PLA确定为之前确定的PLA与所述第一节点的CCA的差集。
可选地,所述第一节点的CCA为以所述第一节点为中心、以所述第一节点的通信半径为半径的区域。
需要说明的是,本实施例的各区域,如VCA、CCA,均可以包括但不限于以下任一种:圆形区域,扇形区域,等。
其中,所述之前确定的PLA是执行上述差集的步骤之前已经确定的所述定位节点的PLA。可选地,上述确定所述第一节点的CCA、将所述定位节点的PLA确定为之前确定的PLA与所述第一节点的CCA的差集的步骤可以发生在102之前,或,之后。相应地,所述之前确定的PLA可以是预设的初始位置区域,比如:整个网络覆盖区域、无穷大的区域等,或者,是通过其它定位方法或步骤确定的所述定位节点的PLA,如:102确定的所述定位节点的PLA。
在一种可选的实现方式中,本实施例还包括:
所述定位节点确定一第二节点的CCA,所述第二节点为锚节点且为所述定位节点的直接邻居节点,所述第二节点的CCA为以所述第二节点为中心、以所述第二节点的通信半径为半径的区域;
将所述定位节点的PLA确定为之前确定的PLA与所述第二节点的CCA的交集。
其中,所述之前确定的PLA是执行上述交集的步骤之前已经确定的所述定位节点的PLA。可选地,上述确定一第二节点的CCA、将所述定位节点的PLA确定为之前确定的PLA与所述第二节点的CCA的交集的步骤可以发生在102之前,或,之后。相应地,所述之前确定的PLA可以是预设的初始位置区域,比如:整个网络覆盖区域、无穷大的区域等,或者,是通过其它定位方法或步骤确定的所述定位节点的PLA,如:102确定的所述定位节点的PLA,上述基于与所述第一节点的CCA的差集确定的所述定位节点的PLA,等。
与确定所述第一节点为锚节点且为所述定位节点的间接邻居节点类似,所述定位节点可以根据接收到的所述第二节点的信息包确定所述第二节点为锚节点且为所述定位节点的直接邻居节点。可选地,所述定位节点接收所述第二节点的一第二信息包,所述第二信息包包括:所述第二节点的节点标识、所述第二节点的位置信息。
在第二节点以广播的方式方式自己的信息包的场景下,所述定位节点可能接收到所述第二节点的多个信息包,并且,有的信息包可能还包括所述信息包所经过的至少一个中间节点的节点标识。举例来说,所述第一节点N2到所述定位节点Ni有5条通信链路,分别为:N2→Ni,N2→N1→Ni,N2→N1→N3→Ni,N2→N3→N1→Ni,N2→N3→Ni,相应地,所述定位节点Ni可能收到分别通过所述5条通信链路传送过来的所述第一节点N1的5个信息包,其中,通过通信链路N2→Ni传送到所述定位节点Ni的信息包中不包括中间节点的节点标识,通过其它4条通信链路传送到所述定位节点Ni的信息包均包括至少一个中间节点的节点标识。
在一种可选的实现方式中,本实施例还包括:
所述定位节点确定一第三节点的CCA,所述第三节点为锚节点且为所述定位节点的间接邻居节点,所述第三节点的CCA为以所述第三节点为中心、以所述第三节点的通信半径为半径的区域;
将所述定位节点的PLA确定为之前确定的PLA与所述第三节点的CCA的差集。
其中,所述之前确定的PLA是执行上述差集的步骤之前已经确定的所述定位节点的PLA。可选地,上述确定一第三节点的CCA、将所述定位节点的PLA确定为之前确定的PLA与所述第三节点的CCA的差集的步骤可以发生在102之前,或,之后。相应地,所述之前确定的PLA可以是预设的初始位置区域,比如:整个网络覆盖区域、无穷大的区域等,或者,是通过其它定位方法或步骤确定的所述定位节点的PLA,如:102确定的所述定位节点的PLA,上述基于与所述第一节点的CCA的差集确定的所述定位节点的PLA,上述基于与所述第二节点的CCA的交集确定的所述定位节点的PLA,等。
与确定所述第一节点为锚节点且为所述定位节点的间接邻居节点类似,所述定位节点可以根据接收到的所述第三节点的信息包确定所述第三节点为锚节点且为所述定位节点的间接邻居节点。可选地,所述定位节点接收所述第三节点的至少一第三信息包,所述至少一个第三信息包均包括:所述第三节点的节点标识、所述第三节点的位置信息、所述第三信息包所经过的至少一个中间节点的节点标识。
在又一种可选的实现方式中,本实施例既包括上述确定一第二节点的CCA、将所述定位节点的PLA确定为之前确定的PLA与所述第二节点的CCA的交集的步骤,又包括上述确定一第三节点的CCA、将所述定位节点的PLA确定为之前确定的PLA与所述第三节点的CCA的差集的步骤,且执行上述步骤的前后顺序可以是任意的。
在上述使用作为间接邻居节点和/或直接邻居节点的锚节点的CCA来确定所述定位节点的PLA的任一可选的实现方式中,为了增强所述第一节点的VCA对所述定位节点的PLA的收敛效果,可选地,101中确定所述第一节点的VCA所基于的所述通信链路上除所述第一节点之外的各节点均为非锚节点。
具体地,针对一第一节点,所述定位节点可以从所述第一节点到所述定位节点的至少一条通信链路中选择一条满足上述条件的通信链路,即选择一条中间节点均为非锚节点的所述第一节点到所述定位节点的通信链路,进一步可选地,选择中间节点均为非锚节点的所述第一节点到所述定位节点的多条通信链路中跳数最少的一条,并基于选择的该通信链路上各节点的通信半径确定所述第一节点的VCA。
本实施例中,所述通信半径为预设的参考通信半径,或者,为对应节点的实际通信半径。举例来说,为实现方便,可以认为网络中各节点的通信半径都一样,且预先设定一参考通信半径,确定CCA、VCA所需的任一节点的通信半径均以所述参考通信半径为准。又举例来说,为了更准确的定位,考虑到网络中各节点的实际通信半径可能不同,各节点可以在自己的信息包中携带上自己的实际通信半径,和/或,在转发的其它节点的信息包中除了添加自己的节点标识还添加自己的实际通信半径,这样的话,所述定位节点可以根据各其它节点的信息包,和/或,各其它节点转发的信息包,确定各其它节点的实际通信半径,从而确定所述第一节点的VCA,以及相应节点的CCA。
在上述任一可选的实现方式中,可选地,所述定位节点在确定自身的PLA之后,还可以根据确定的PLA估计自身的位置。具体地,估计的方式有多种,举例来说,可以将确定的PLA的中心作为自身的位置,本实施例对此不做限定。
图1b为本实施例的一种可选的实现方式的流程示意图,图2a~2c分别为图1b所示实现方式中各步骤的定位效果示意图。本实现方式中的定位节点用Ni表示,如图1b所示,本实现方式包括:
201、Ni广播请求消息,请求所有邻居节点的信息包。
202、Ni根据收到的信息包将邻居节点中的锚节点分为两大集合:作为直接邻居的锚节点集合{D(Ni)},作为间接邻居的锚节点集合{I(Ni)}。
203、Ni利用{D(Ni)}中所有节点的CCA缩小自身的PLA。
假设Br∈{D(Ni)},那么Ni可以直接接收到Br的信息包,Ni根据Br的位置和通信半径计算Br的CCA。
如图2a所示,虚线所围成的区域是Ni在t0时刻的PLA,表示为实线所围成的区域为Br的CCA,表示为
Ni计算其PLA与Br的CCA的交集,并将结果作为其新的PLA覆盖原PLA。如图2b,如果Br的CCA不完全包含Ni的PLA,那么,此时Ni的PLA可以缩小为两者的交集部分,则计算后Ni的PLA为图2a中的格子填充部分。
其中,Br只是表示集合{D(Ni)}中任意一个节点,对于{D(Ni)}中的其它所有节点,均可以与Br类似地用来缩小Ni的PLA。
204、Ni利用{I(Ni)}中所有节点的CCA缩小自身的PLA。
假设Bk∈{I(Ni)},那么Ni不能直接收到Bk的信息包,但是Ni能够通过它的直接邻居接收Bk的信息包。Ni根据Bk的位置和通信半径计算Bk的CCA。
如图2b所示,格子填充部分为Ni在执行完203之后,即t1时刻的PLA,表示为Bk的CCA表示为
Ni计算其PLA与Bk的CCA的差集,并将结果作为其新的PLA覆盖原值。如果Ni的PLA与Bk的CCA交集不为空,那么Ni的位置一定在两者的交集之外,此时Ni的PLA为图2b所示的格子填充部分中的深色部分。
其中,Bk只是表示集合{I(Ni)}中任意一个节点,对于{I(Ni)}中的其它所有节点,均可以与Bk类似地用来缩小Ni的PLA。
205、Ni利用{I(Ni)}中满足特定条件的节点的VCA缩小自身的PLA。
假设Bh∈{I(Ni)},Bh与Ni之间的节点均是未知节点。虽然Ni不能直接收到Bh的信息包,但是Ni必然位于Bh相对于Ni的VCA,也称为VCA内。具体地,上述特定条件是指从Ni到Bh有一条通信链路上中间节点均是非锚节点,Ni选择从Ni到Bh的中间节点均是非锚节点的通信链路中跳数最少的一条,根据该条通信链路上的各节点的通信半径和Bh的位置计算Bh的VCA。
如图2c所示,格子填充部分中的深色部分为Ni在执行完204之后,即t2时刻的PLA,表示为由虚线围成的最大的椭圆区域为Bh的VCA,表示为Ni到Bh的通信链路上的两个中间节点Nj、Nk均为非锚节点。
Ni计算其PLA与Bh的VCA的交集,并将结果作为其新的PLA覆盖原值。此时Ni的PLA为图2c中的渐变色填充部分。
其中,Bh只是表示集合{I(Ni)}中任意一个满足上述特定条件的节点,对于{I(Ni)}中的其它所有满足上述特定条件的节点,均可以与Bh类似地用来缩小Ni的PLA。
206、Ni计算自身的PLA的中心作为自己的位置。
需要说明的是,虽然图2a~2c仅以二维形式示意各CCA、VCA、PLA,但不意味着本实施例中的各CCA、VCA、PLA局限于二维的区域,本领域技术人员可以理解,本实施例还可以应用于各CCA、VCA、PLA均为三维区域的场景中。
本实施例通过定位节点确定一第一节点的VCA,所述第一节点为锚节点且为所述定位节点的间接邻居节点,确定所述定位节点的PLA在所述第一节点的VCA内,提供了一种定位方案。
图3a为本发明提供的一种定位节点实施例一的结构示意图。如图3a所示,定位节点300包括:
第一确定模块31,用于确定一第一节点的VCA,所述第一节点为锚节点且为定位节点300的间接邻居节点,所述VCA为参考所述第一节点的位置、所述第一节点到定位节点300的一通信链路上除定位节点300之外的各节点的通信半径确定的区域;
第二确定模块32,用于确定定位节点300的PLA在所述第一节点的VCA内。
具体地,本实施例中的定位节点300是任一可以确定自身PLA的节点。可选地,本实施例中的节点均为无线传感器网络中的节点。
通常,根据节点是否确定自身的位置,将节点分为锚节点和非锚节点,其中,锚节点确定自身的位置,也称为信标节点,而非锚节点不确定自身的位置,也称为未知节点。至少在第二确定模块32实现所述确定定位节点300的PLA在所述第一节点的VCA内的功能之前,定位节点300不确定自身的位置,即,为一非锚节点。
通常,间接邻居节点是相对直接邻居节点来说的。具体地,一节点可以与其直接邻居节点直接交互信息,即,中间无需其它节点来转发信息,而一节点与其间接邻居节点交互信息时需要其它节点来帮助转发信息。换句话说,节点与其直接邻居节点的最小跳数为1,节点与其间接邻居节点的最小跳数大于等于2。
本实施例中,所述第一节点的VCA为参考所述第一节点的位置、所述第一节点到所述定位节点的一通信链路上除所述定位节点之外的各节点的通信半径确定的区域。
由于所述第一节点为所述定位节点的间接邻居节点,所述通信链路上除所述第一节点和所述定位节点之外还有至少一个节点,这至少一个节点也可以称为所述通信链路上所述第一节点和所述定位节点之间的中间节点。可选地,所述通信链路上除所述定位节点之外的各节点可以是锚节点,也可以是非锚节点,本实施例对此不作限定。
在一种可选的实现方式中,所述第一节点的VCA为以所述第一节点为中心、以所述第一节点到所述定位节点的一通信链路上除所述定位节点之外的各节点的通信半径之和为半径的区域。
在又一种可选的实现方式中,所述第一节点的VCA为以所述第一节点为中心、以所述第一节点到所述定位节点的一通信链路上除所述定位节点之外的各节点的通信半径之和与一系数的乘积为半径的区域。其中,所述系数与所述通信链路有关。考虑到该通信链路上相邻节点之间的距离通常小于前一节点的通信半径,以及,该通信链路上的各节点通常不位于一条直线上,所述系数具体地可以与所述通信链路上中间节点的个数,和/或,节点之间的方位有关,可以通过预先的学习得到。举例来说,当所述通信链路上有1个中间节点时,该系数的取值比如为0.95;当所述通信链路上有2个中间节点时,该系数的取值比如为0.9。又举例来说,所述通信链路上只有1个中间节点:若该中间节点相对于所述第一节点的方向和该中间节点相对于所述定位节点的方向的夹角为180度,即,该中间节点与所述第一节点之间的连线和该中间节点与所述定位节点之间的连线形成的夹角,可以认为所述第一节点、该中间节点、所述定位节点在一条直线上,在此场景下该系数的取值比如为0.95;若该中间节点相对于所述第一节点的方向和该中间节点相对于所述定位节点的方向的夹角为90度,在此场景下该系数的取值比如为0.7。
在网络中,不直接相邻的任意两个节点之间通常可以有至少一条通信链路。在所述第一节点到所述定位节点的通信链路有多条的场景下,为了尽可能地缩小所述定位节点的PLA,可选地,所述通信链路为所述第一节点到所述定位节点的多条通信链路中跳数最少的一条。
可选地,第二确定模块32具体用于:
将所述定位节点的PLA确定为之前确定的PLA与所述第一节点的VCA的交集。
其中,所述之前确定的PLA是第二确定模块32执行上述交集的步骤之前定位节点300已经确定的定位节点300的PLA。可选地,所述之前确定的PLA可以是预设的初始位置区域,比如:整个网络覆盖区域、无穷大的区域等,或者,是通过其它定位方法或步骤确定的所述定位节点的PLA。
在一种可能的场景中,对于所述定位节点来说,有多个第一节点,可选地,第一确定模块31还用于:确定又一第一节点的VCA;
第二确定模块32还用于:将所述定位节点的PLA确定为之前确定的PLA与所述又一第一节点的VCA的交集。
也就是说,针对每个第一节点,第一确定模块31可以执行一次确定VCA的步骤,第二确定模块可以执行一次确定定位节点300的PLA的步骤。
在一种可选的实现方式中,如图3b所示,定位节点300还包括:
接收模块33,用于接收所述第一节点的至少一个第一信息包,所述至少一个第一信息包均包括:所述第一节点的节点标识、所述第一节点的位置信息、所述第一信息包所经过的至少一个中间节点的节点标识;
第三确定模块34,用于根据所述第一节点的节点标识和所述至少一个中间节点的节点标识,确定所述第一节点为锚节点且为所述定位节点的间接邻居节点。
通常,每个中间节点在转发的信息包中加入自身的节点标识,相应地,所述定位节点可以根据所述第一节点的至少一个第一信息包,确定所述第一节点到所述定位节点的至少一条通信链路。具体地,若接收模块33接收到所述第一节点的多个第一信息包,则这多个第一信息包中所述第一节点的位置信息通常是相同的,而这多个第一信息包所经过的至少一个中间节点的节点标识可能是不同的。举例来说,所述第一节点N1到定位节点300(用Ni表示)有4条通信链路,分别为:N1→N2→Ni,N1→N2→N3→Ni,N1→N3→N2→Ni,N1→N3→Ni,相应地,接收模块33可能收到分别通过所述4条通信链路传送过来的所述第一节点N1的四个信息包,这三个信息包所经过的中间节点分别为:N2,N2和N3,N3和N2,N3。
可选地,本实施例中节点的节点标识可以标识该节点是锚节点还是非锚节点。在一种可能的场景中,节点标识中有一个用于标识是否锚节点的bit(位),比如,该bit为0时表示非锚节点,该bit为1时表示锚节点;在又一种可能的场景中,所述定位节点保存有所有锚节点的节点标识,第三确定模块34通过将信息包中的节点标识与保存的所有锚节点的节点标识进行比较,确定该节点标识对应节点是锚节点还是非锚节点。
可选地,本实施例中仅锚节点的信息包中包括自身的位置信息,非锚节点的信息包中不包括自身的位置信息,相应地,第三确定模块34可以根据所述第一节点的第一信息包中是否包括所述第一节点的位置信息,确定所述第一节点是否为锚节点。
可选地,各节点基于其它节点的请求发送自己的信息包,和/或,周期性地发送自己的信息包,和/或,当自己的信息包中的信息更新时(比如位置发生变化时)发送自己的信息包;其中,上述发送信息包的方式可选地为广播方式。可选地,如图3c所示,所述定位节点还包括:请求模块35,用于广播用于请求信息包的请求信息。
通常,位于一节点的CCA内的各其它节点均可以直接接收该节点广播的信息,即,位于一节点的CCA内的各其它节点通常为该节点的直接邻居节点。类似地,一节点的间接邻居节点不能直接接收该节点广播的信息,即,一节点的间接邻居节点通常不位于该节点的CCA内。基于此,可选地,如图3d所示,定位节点300还包括:
第四确定模块36,用于参考所述第一节点的位置信息和所述第一节点的通信半径,确定所述第一节点的通信覆盖区域;
第五确定模块37,用于将所述定位节点的可能位置区域确定为之前确定的可能位置区域与所述第一节点的通信覆盖区域的差集。
可选地,所述第一节点的CCA为以所述第一节点为中心、以所述第一节点的通信半径为半径的区域。
需要说明的是,本实施例的各区域,如VCA、CCA,均可以包括但不限于以下任一种:圆形区域,扇形区域,等。
其中,所述之前确定的PLA是执行上述差集的步骤之前已经确定的所述定位节点的PLA。可选地,上述确定所述第一节点的CCA、将所述定位节点的PLA确定为之前确定的PLA与所述第一节点的CCA的差集的步骤可以发生在102之前,或,之后。相应地,所述之前确定的PLA可以是预设的初始位置区域,比如:整个网络覆盖区域、无穷大的区域等,或者,是通过其它定位方法或步骤确定的所述定位节点的PLA,如:102确定的所述定位节点的PLA。
在一种可选的实现方式中,如图3e所示,定位节点300还包括:
第六确定模块38,用于确定一第二节点的通信覆盖区域,所述第二节点为锚节点且为所述定位节点的直接邻居节点,所述第二节点的通信覆盖区域为以所述第二节点为中心、以所述第二节点的通信半径为半径的区域;
第七确定模块39,用于将所述定位节点的可能位置区域确定为之前确定的可能位置区域与所述第二节点的通信覆盖区域的交集。
其中,所述之前确定的PLA是第七确定模块39执行上述交集的步骤之前定位节点300已经确定的定位节点300的PLA。可选地,上述第六确定模块38执行确定一第二节点的CCA、第七确定模块39执行将所述定位节点的PLA确定为之前确定的PLA与所述第二节点的CCA的交集的步骤,可以发生在第二确定模块32执行将所述定位节点的PLA确定为之前确定的PLA与所述第一节点的VCA的交集之前,或,之后。相应地,所述之前确定的PLA可以是预设的初始位置区域,比如:整个网络覆盖区域、无穷大的区域等,或者,是通过其它定位方法或步骤确定的所述定位节点的PLA,如:第二确定模块32确定的所述定位节点的PLA,第五确定模块37确定的所述定位节点的PLA,等。
与第三确定模块34确定所述第一节点为锚节点且为所述定位节点的间接邻居节点类似,第六确定模块38可以根据接收模块33接收到的所述第二节点的信息包确定所述第二节点为锚节点且为所述定位节点的直接邻居节点。可选地,接收模块33还用于:接收所述第二节点的一第二信息包,所述第二信息包包括:所述第二节点的节点标识、所述第二节点的位置信息。
在第二节点以广播的方式方式自己的信息包的场景下,接收模块33可能接收到所述第二节点的多个信息包,并且,有的信息包可能还包括所述信息包所经过的至少一个中间节点的节点标识。举例来说,所述第一节点N2到定位节点300(用Ni表示)有5条通信链路,分别为:N2→Ni,N2→N1→Ni,N2→N1→N3→Ni,N2→N3→N1→Ni,N2→N3→Ni,相应地,接收模块33可能收到分别通过所述5条通信链路传送过来的所述第一节点N1的5个信息包,其中,通过通信链路N2→Ni传送到所述定位节点Ni的信息包中不包括中间节点的节点标识,通过其它4条通信链路传送到所述定位节点Ni的信息包均包括至少一个中间节点的节点标识。
在一种可选的实现方式中,如图3f所示,定位节点300还包括:
第八确定模块310,用于确定一第三节点的通信覆盖区域,所述第三节点为锚节点且为所述定位节点的间接邻居节点,所述第三节点的通信覆盖区域为以所述第三节点为中心、以所述第三节点的通信半径为半径的区域;
第九确定模块311,用于将所述定位节点的可能位置区域确定为之前确定的可能位置区域与所述第三节点的通信覆盖区域的差集。
其中,所述之前确定的PLA是第九确定模块311执行上述差集的步骤之前定位节点300已经确定的定位节点300的PLA。可选地,上述第八确定模块310执行确定一第三节点的CCA、第九确定模块311执行将所述定位节点的PLA确定为之前确定的PLA与所述第三节点的CCA的差集的步骤,可以发生在第二确定模块32执行将所述定位节点的PLA确定为之前确定的PLA与所述第一节点的VCA的交集之前,或,之后。相应地,所述之前确定的PLA可以是预设的初始位置区域,比如:整个网络覆盖区域、无穷大的区域等,或者,是通过其它定位方法或步骤确定的所述定位节点的PLA,如:第二确定模块32确定的所述定位节点的PLA,第五确定模块37确定的所述定位节点的PLA,第七确定模块39确定的所述定位节点的PLA,等。
与第三确定模块34确定所述第一节点为锚节点且为所述定位节点的间接邻居节点类似,第八确定模块310可以根据接收模块33接收到的所述第三节点的信息包确定所述第三节点为锚节点且为所述定位节点的间接邻居节点。可选地,接收模块还用于:接收所述第三节点的至少一第三信息包,所述至少一个第三信息包均包括:所述第三节点的节点标识、所述第三节点的位置信息、所述第三信息包所经过的至少一个中间节点的节点标识。
在又一种可选的实现方式中,定位节点300既包括第六确定模块38、第七确定模块39,又包括第八确定光模块310、第九确定模块311。
在上述使用作为间接邻居节点和/或直接邻居节点的锚节点的CCA来确定所述定位节点的PLA的任一可选的实现方式中,为了增强所述第一节点的VCA对所述定位节点的PLA的收敛效果,可选地,所述通信链路上除所述第一节点之外的各节点均为非锚节点。
具体地,针对一第一节点,第一确定模块31可以从所述第一节点到所述定位节点的至少一条通信链路中选择一条满足上述条件的通信链路,即选择一条中间节点均为非锚节点的所述第一节点到所述定位节点的通信链路,进一步可选地,第一确定模块31选择中间节点均为非锚节点的所述第一节点到所述定位节点的多条通信链路中跳数最少的一条,并基于选择的该通信链路上各节点的通信半径确定所述第一节点的VCA。
本实施例中,所述通信半径为预设的参考通信半径,或者,为对应节点的实际通信半径。举例来说,为实现方便,可以认为网络中各节点的通信半径都一样,且预先设定一参考通信半径,确定CCA、VCA所需的任一节点的通信半径均以所述参考通信半径为准。又举例来说,为了更准确的定位,考虑到网络中各节点的实际通信半径可能不同,各节点可以在自己的信息包中携带上自己的实际通信半径,和/或,在转发的其它节点的信息包中除了添加自己的节点标识还添加自己的实际通信半径,这样的话,第一确定模块31、第四确定模块36、第六确定模块38、第八确定模块310均可以根据接收模块33接收到的其它各节点的信息包,和/或,其它各节点转发的信息包,确定其它各节点的实际通信半径,从而确定所述第一节点的VCA以及相应节点的CCA。
在上述任一可选的实现方式中,可选地,定位节点300在确定自身的PLA之后,还可以根据确定的PLA估计自身的位置。具体地,估计的方式有多种,举例来说,可以将确定的PLA的中心作为自身的位置,本实施例对此不做限定。
本实施例通过定位节点中的第一确定模块确定一第一节点的VCA,所述第一节点为锚节点且为所述定位节点的间接邻居节点,第二确定光模块确定所述定位节点的PLA在所述第一节点的VCA内,提供了一种定位方案。
图4为本发明提供的一种定位节点实施例二的结构示意图。如图4所示,定位节点400包括:
处理器(processor)41、通信接口(CommunicationsInterface)42、存储器(memory)43、以及通信总线44。其中:
处理器41、通信接口42、以及存储器43通过通信总线44完成相互间的通信。
通信接口42,用于与比如直接邻居节点等外部设备的通信。
处理器41,用于执行程序432,具体可以执行上述定位方法实施例中的相关步骤。
具体地,程序432可以包括程序代码,所述程序代码包括计算机操作指令。
处理器41可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成实施定位方法实施例的一个或多个集成电路。
存储器43,用于存放程序432。存储器43可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。程序432具体可以用于使得定位节点400执行以下步骤:
确定一第一节点的虚拟通信区域,所述第一节点为锚节点且为所述定位节点的间接邻居节点,所述虚拟通信区域为参考所述第一节点的位置、所述第一节点到所述定位节点的一通信链路上除所述定位节点之外的各节点的通信半径确定的区域;
确定所述定位节点的可能位置区域在所述第一节点的虚拟通信区域内。
程序432中各步骤的具体实现可以参见上述定位方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述定位方法实施例中的对应过程描述,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对原有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。