著录项信息
专利名称 | 一种定位节点的方法和节点 |
申请号 | CN201010253889.6 | 申请日期 | 2010-08-13 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2010-12-15 | 公开/公告号 | CN101917763A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04W64/00 | IPC分类号 | H;0;4;W;6;4;/;0;0查看分类表>
|
申请人 | 北京邮电大学 | 申请人地址 | 北京市海淀区PE大厦107号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京智慧图科技发展有限责任公司 | 当前权利人 | 北京智慧图科技发展有限责任公司 |
发明人 | 徐连明;邓中亮;薛广普;刘雯 |
代理机构 | 北京三高永信知识产权代理有限责任公司 | 代理人 | 何文彬 |
摘要
本发明公开了一种定位节点的方法和节点,属于通信领域。所述方法包括:根据待定位节点分别与每个分层锚节点之间的接收的信号强度指示RSSI值以及任意两个分层锚节点之间的RSSI值,确定出所述待定位节点位于的层次;根据分层策略和所述待定位节点位于的层次,确定定位锚节点;以所述定位锚节点为球心,获取所述球心对应的半径;根据所述球心以及所述球心对应的半径画球;获取所述球相交的区域的重心的坐标,将所述坐标作为所述待定位节点的坐标。所述节点包括:第一确定模块、第二确定模块、第一获取模块、画球模块和第二获取模块。本发明能够在实际无规则的室内环境中,准确的对节点进行定位。
1.一种定位节点的方法,其特征在于,所述方法包括:
根据待定位节点分别与每个分层锚节点之间的接收的信号强度指示RSSI值以及任意两个分层锚节点之间的RSSI值,确定出所述待定位节点位于的层次;
根据分层策略和所述待定位节点位于的层次,确定定位锚节点;
以所述定位锚节点为球心,获取所述球心对应的半径;
根据所述球心以及所述球心对应的半径画球;
获取所述球相交的区域的重心的坐标,将所述坐标作为所述待定位节点的坐标; 其中,所述根据分层策略和所述待定位节点位于的层次,确定定位锚节点之前,还包括:
所述待定位节点接收网络中的锚节点发送的信标消息和RSSI消息,所述信标消息携带所述锚节点的ID和坐标,所述RSSI消息携带所述锚节点的ID、所述锚节点的邻居节点的ID和所述锚节点与所述邻居节点之间的RSSI值,获取自身与所述锚节点之间的RSSI值,所述锚节点包括定位锚节点和分层锚节点;
所述待定位节点将所述锚节点的ID和坐标存储在自身锚节点信息表中,所述锚节点信息表包括分层锚节点信息表和定位锚节点信息表;
所述待定位节点将自身的ID、所述锚节点的ID以及自身与所述锚节点之间的RSSI值存储在自身锚节点RSSI值信息表中,将所述锚节点的ID、所述邻居节点的ID以及所述锚节点与所述邻居节点之间的RSSI值存储在所述锚节点RSSI值信息表中,所述锚节点RSSI值信息表包括分层锚节点RSSI值信息表和定位锚节点RSSI值信息表;
其中,所述根据分层策略和所述待定位节点位于的层次,确定定位锚节点,具体包括: 所述待定位节点根据自身位于的层次和所述分层策略,确定目标层次,获取划分所述目标层次的两个分层锚节点的ID;
所述待定位节点根据所述两个分层锚节点的ID,从所述锚节点信息表中分别查找所述两个分层锚节点的坐标;
所述待定位节点从所述锚节点信息表中,查找竖坐标位于所述两个分层锚 节点的竖坐标之间的定位锚节点; 其中,所述以所述定位锚节点为球心,获取所述球心对应的半径,具体包括: 所述待定位节点以自身与所述球心之间的RSSI值为参考值,将与所述球心之间的RSSI值小于所述参考值的定位锚节点划分为第一组,将与所述球心之间的RSSI值大于所述参考值的定位锚节点划分为第二组; 所述待定位节点从所述第一组中选取与所述球心之间的RSSI值最大的定位锚节点,将所述球心与所述RSSI值最大的定位锚节点之间的距离作为半径; 所述待定位节点从所述第二组中选取与所述球心之间的RSSI值最小的定位锚节点,将所述球心与所述RSSI值最小的定位锚节点之间的距离作为半径。
2.如权利要求1所述的方法,其特征在于,所述根据待定位节点分别与每个分层锚节点之间的接收的信号强度指示RSSI值以及任意两个分层锚节点之间的RSSI值,确定出所述待定位节点位于的层次之前,还包括:
从分层锚节点RSSI值信息表中,查找所述待定位节点与所述每个分层锚节点之间的RSSI值以及所述任意两个分层锚节点之间的RSSI值。
3.一种节点,其特征在于,所述节点包括:
第一确定模块,用于根据待定位节点分别与每个分层锚节点之间的接收的信号强度指示RSSI值以及任意两个分层锚节点之间的RSSI值,确定出所述待定位节点位于的层次; 第二确定模块,用于根据分层策略和所述待定位节点位于的层次,确定定位锚节点; 第一获取模块,用于以所述定位锚节点为球心,获取所述球心对应的半径; 画球模块,用于根据所述球心以及所述球心对应的半径画球;
第一获取模块,用于获取所述球相交的区域的重心的坐标,将所述坐标作为所述待定位节点的坐标;
其中,所述节点还包括:
接收模块,用于接收网络中的锚节点发送的信标消息和RSSI消息,所述信标消息携带所述锚节点的ID和坐标,所述RSSI消息携带所述锚节点的ID、所 述锚节点的邻居节点的ID和所述锚节点与所述邻居节点之间的RSSI值,获取自身与所述锚节点之间的RSSI值,所述锚节点包括定位锚节点和分层锚节点;
第一存储模块,用于将所述锚节点的ID和坐标存储在锚节点信息表中,所述锚节点信息表包括分层锚节点信息表和定位锚节点信息表;
第二存储模块,用于将所述待定位节点的ID、所述锚节点的ID以及自身与所述锚节点之间的RSSI值存储锚节点RSSI值信息表中,将所述锚节点的ID、所述邻居节点的ID以及所述锚节点与所述邻居节点之间的RSSI值存储在所述锚节点RSSI值信息表中,所述锚节点RSSI值信息表包括分层锚节点RSSI值信息表和定位锚节点RSSI值信息表; 其中,所述第二确定模块具体包括:
确定单元,用于根据自身位于的层次和所述分层策略,确定目标层次,获取划分所述目标层次的两个分层锚节点的ID;
第一查找单元,用于根据所述两个分层锚节点的ID,从所述锚节点信息表中分别查找所述两个分层锚节点的坐标;
第二查找单元,用于从所述锚节点信息表中,查找竖坐标位于所述两个分层锚节点的竖坐标之间的定位锚节点;
其中,所述第一获取模块具体包括:
划分单元,用于以所述待定位节点与所述球心之间的RSSI值为参考值,将与所述球心之间的RSSI值小于所述参考值的定位锚节点划分为第一组,将与所述球心之间的RSSI值大于所述参考值的定位锚节点划分为第二组;
第一选取单元,用于从所述第一组中选取与所述球心之间的RSSI值最大的定位锚节点,将所述球心与所述RSSI值最大的定位锚节点之间的距离作为半径; 第二选取单元,用于从所述第二组中选取与所述球心之间的RSSI值最小的定位锚节点,将所述球心与所述RSSI值最小的定位锚节点之间的距离作为半径。
4.如权利要求3所述的节点,其特征在于,所述节点还包括:
查找模块,用于从分层锚节点RSSI值信息表中,查找所述待定位节点与所述每个分层锚节点之间的RSSI值以及所述任意两个分层锚节点之间的RSSI值。
一种定位节点的方法和节点 \n技术领域\n[0001] 本发明涉及通信领域,特别涉及一种定位节点的方法和节点。 \n背景技术\n[0002] 在无线传感器网络中,节点定位算法作为其关键的支撑技术,对无线传感器网络的应用和基于位置的信息融合、网络路由协议等研究都有重要意义。 \n[0003] 目前已存在多种用于节点定位的节点定位算法,且这些算法都是基于三维空间的算法,其中,该算法根据是否需要测量准确的距离信息,可以分为2类,分别为:距离定位(range-based)算法和非距离定位(range-free)算法。 \n[0004] 在实现本发明的过程中,发明人发现现有技术至少存在以下问题: [0005] 现有的节点定位算法都是基于规则的理想环境,而在实际无规则的室内环境中,利用这些节点定位算法不能准确的对应节点进行定位。 \n发明内容\n[0006] 为了能够在实际无规则的室内环境中,准确的对节点进行定位,本发明提供了一种定位节点的方法和节点。所述技术方案如下: \n[0007] 一种定位节点的方法,所述方法包括: \n[0008] 根据待定位节点分别与每个分层锚节点之间的RSSI(Received Signal Strength Indication,接收的信号强度指示)值以及任意两个分层锚节点之间的RSSI值,确定出所述待定位节点位于的层次; \n[0009] 根据分层策略和所述待定位节点位于的层次,确定定位锚节点; [0010] 以所述定位锚节点为球心,获取所述球心对应的半径; \n[0011] 根据所述球心以及所述球心对应的半径画球; \n[0012] 获取所述球相交的区域的重心的坐标,将所述坐标作为所述待定位节点的坐标。 [0013] 所述根据分层策略和所述待定位节点位于的层次,确定定位锚节点之前, 还包括: \n[0014] 所述待定位节点接收网络中的锚节点发送的信标消息和RSSI消息,所述信标消息携带所述锚节点的ID和坐标,所述RSSI消息携带所述锚节点的ID、所述锚节点的邻居节点的ID和所述锚节点与所述邻居节点之间的RSSI值,获取自身与所述锚节点之间的RSSI值,所述锚节点包括定位锚节点和分层锚节点; \n[0015] 所述待定位节点将所述锚节点的ID和坐标存储在自身锚节点信息表中,所述锚节点信息表包括分层锚节点信息表和定位锚节点信息表; \n[0016] 所述待定位节点将自身的ID、所述锚节点的ID以及自身与所述锚节点之间RSSI值存储在自身锚节点RSSI值信息表中,将所述锚节点的ID、所述邻居节点的ID以及所述锚节点与所述邻居节点之间的RSSI值存储在所述锚节点RSSI值信息表中,所述锚节点RSSI值信息表包括分层锚节点RSSI值信息表和定位锚节点RSSI值信息表。 \n[0017] 所述根据分层策略和所述待定位节点位于的层次,确定定位锚节点,具体包括: [0018] 所述待定位节点根据自身位于的层次和所述分层策略,确定目标层次; [0019] 所述待定位节点从所述锚节点信息表中,查找划分所述目标层次的两个分层锚节点的坐标; \n[0020] 所述待定位节点从所述锚节点信息表中,查找竖坐标位于两个分层锚节点之间的定位锚节点。 \n[0021] 所述以所述定位锚节点为球心,获取所述球心对应的半径,具体包括: [0022] 所述待定位节点以自身与所述球心之间的RSSI值为参考值,将与所述球心之间的RSSI值小于所述参考值的定位锚节点划分为第一组,将与所述球心之间的RSSI值大于所述参考值的定位锚节点划分为第二组; \n[0023] 所述待定位节点从所述第一组中选取与所述球心之间的RSSI值最大的定位锚节点,将所述球心与所述RSSI值最大的定位锚节点之间的距离作为半径; \n[0024] 所述待定位节点从所述第二组中选择与所述球心之间的RSSI值最小的定位锚节点,将所述球心与所述RSSI值最小的定位锚节点之间的距离作为半径。 \n[0025] 所述根据待定位节点分别与每个分层锚节点之间的RSSI值以及任意两个分层锚节点之间的接收的信号强度指示RSSI值,确定出所述待定位节点位于的层次之前,还包括: \n[0026] 从分层锚节点RSSI值信息表中,查找所述待定位节点与所述每个分层锚节点之间的RSSI值以及所述任意两个分层锚节点之间的RSSI值。 \n[0027] 一种节点,所述节点包括: \n[0028] 第一确定模块,用于根据待定位节点分别与每个分层锚节点之间的RSSI值以及任意两个分层锚节点之间的RSSI值,确定出所述待定位节点位于的层次; [0029] 第二确定模块,用于根据分层策略和所述待定位节点位于的层次,确定定位锚节点; \n[0030] 第一获取模块,用于以所述定位锚节点为球心,获取所述球心对应的半径; [0031] 画球模块,用于根据所述球心以及所述球心对应的半径画球; \n[0032] 第一获取模块,用于获取所述球相交的区域的重心的坐标,将所述坐标作为所述待定位节点的坐标。 \n[0033] 所述节点还包括: \n[0034] 接收模块,用于接收网络中的锚节点发送的信标消息和RSSI消息,所述信标消息携带所述锚节点的ID和坐标,所述RSSI消息携带所述锚节点的ID、所述锚节点的邻居节点的ID和所述锚节点与所述邻居节点之间的RSSI值,获取自身与所述锚节点之间的RSSI值,所述锚节点包括定位锚节点和分层锚节点; \n[0035] 第一存储模块,用于将所述锚节点的ID和坐标存储在锚节点信息表中,所述锚节点信息表包括分层锚节点信息表和定位锚节点信息表; \n[0036] 第二存储模块,用于将所述待定位节点的ID、所述锚节点的ID以及自身与所述锚节点之间RSSI值存储锚节点RSSI值信息表中,将所述锚节点的ID、所述邻居节点的ID以及所述锚节点与所述邻居节点之间的RSSI值存储在所述锚节点RSSI值信息表中,所述锚节点RSSI值信息表包括分层锚节点RSSI值信息表和定位锚节点RSSI值信息表。 [0037] 所述第二确定模块具体包括: \n[0038] 确定单元,用于根据所述待定位节点位于的层次和所述分层策略,确定目标层次; \n[0039] 第一查找单元,用于从所述锚节点信息表中,查找划分所述目标层次的两个分层锚节点的坐标; \n[0040] 第二查找单元,用于从所述锚节点信息表中,查找竖坐标位于两个分层锚节点之间的定位锚节点。 \n[0041] 所述第一获取模块具体包括: \n[0042] 划分单元,用于以所述待定位节点与所述球心之间的RSSI值为参考值,将与所述球心之间的RSSI值小于所述参考值的定位锚节点划分为第一组,将与所述球心之间的RSSI值大于所述参考值的定位锚节点划分为第二组; \n[0043] 第一选取单元,用于从所述第一组中选取与所述球心之间的RSSI值最大的定位锚节点,将所述球心与所述RSSI值最大的定位锚节点之间的距离作为半径; [0044] 第二选取单元,用于从所述第二组中选择与所述球心之间的RSSI值最小的定位锚节点,将所述球心与所述RSSI值最小的定位锚节点之间的距离作为半径。 [0045] 所述节点还包括: \n[0046] 查找模块,用于从分层锚节点RSSI值信息表中,查找所述待定位节点与所述每个分层锚节点之间的RSSI值以及所述任意两个分层锚节点之间的RSSI值。 \n[0047] 通过待定位节点与分层锚节点之间的RSSI值以及任意两分层锚节点之间的RSSI值确定待定位节点位于的层次,根据该层次以及分层策略,确定目标层次,获取目标层次内的定位锚节点,将获取的定位锚节点作为球心,获取每个球心的半径,根据每个球心和其对应的半径画球,获取每个球相交的区域的重心的坐标,将获取的坐标作为待定位节点的坐标。其中,通过分层策略选取复杂度较低的目标层次,利用目标层次内的定位锚节点可以准确的对待定位节点进行定位,如此实现了在实际无规则的室内环境中,准确的对节点进行定位。 \n[0048] 附图说明\n[0049] 图1是本发明实施例1提供的一种定位节点的方法流程图; \n[0050] 图2是本发明实施例2提供的一种定位节点的方法流程图; \n[0051] 图3是本发明实施例2提供的一种空间分层模型; \n[0052] 图4是本发明实施例2提供的多球定位待定位节点的示意图; \n[0053] 图5是本发明实施例3提供的一种节点示意图。 \n[0054] 具体实施方式\n[0055] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。 \n[0056] 实施例1 \n[0057] 如图1所示,本发明实施例提供了一种定位节点的方法,包括: \n[0058] 步骤101:根据待定位节点分别与每个分层锚节点之间的RSSI值以及任意两个分层锚节点之间的RSSI值,确定出待定位节点位于的层次; \n[0059] 步骤102:根据分层策略和待定位节点位于的层次,确定定位锚节点; [0060] 步骤103:以确定的定位锚节点为球心,获取球心对应的半径; \n[0061] 步骤104:根据球心以及球心对应的半径画球; \n[0062] 步骤105:获取球相交的区域的重心的坐标,将获取的坐标作为待定位节点的坐标。 \n[0063] 在本发明实施例中,通过待定位节点与分层锚节点之间的RSSI值以及任意两分层锚节点之间的RSSI值确定待定位节点位于的层次,根据该层次以及分层策略,确定目标层次,获取目标层次内的定位锚节点,将获取的定位锚节点作为球心,获取每个球心的半径,根据每个球心和其对应的半径画球,获取每个球相交的区域的重心的坐标,将获取的坐标作为待定位节点的坐标。其中,通过分层策略选取复杂度较低的目标层次,利用目标层次内的定位锚节点可以准确的对待定位节点进行定位,如此实现了在实际无规则的室内环境中,准确的对节点进行定位。 \n[0064] 实施例2 \n[0065] 本发明实施例提供了一种定位节点的方法。本实施例提供的方法应用于实际的室内环境,事先在室内环境中设置多个锚节点,用于组成一个网络,这些锚节点可以分为两类:包括分层锚节点和定位锚节点,当有待定位节点加入到该网络时,可以采用本实施例提供的方法对其进行定位。如图2所示,该方法包括: \n[0066] 步骤201:当待定位节点加入到网络中时,待定位节点接收网络中的锚节点广播的信标消息,其中,该信标消息至少携带该锚节点的ID和坐标; \n[0067] 其中,对于网络中的任意一个锚节点,该锚节点周期性地广播信标消息,该信标消息至少包括该锚节点的ID和坐标;该锚节点还接收其邻居锚节点广播的信标消息,获取接收该信标消息的RSSI值,获取的RSSI值为其与邻居锚节点之间的RSSI值,将自身的ID、其邻居节点的ID和获取的RSSI值存储在RSSI 值信息表中。 \n[0068] 其中,网络中的每个锚节点都与该锚节点一样,都周期性地广播信标消息,并且每接收到邻居节点发送的信标消息,获取接收该信标消息的RSSI值,将自身的ID、邻居节点的ID以及获取的RSSI值存储在自身的RSSI值信息表中。 \n[0069] 其中,网络中的每个锚节点的RSSI值信息表,用于存储自身的ID、邻居节点的ID和其与邻居节点之间的RSSI值的对应关系。 \n[0070] 例如,如图3所示的空间分层模型,由定位锚节点la、lb、lc、ld以及分层锚节点A、B、C组成的网络,对于网络中的任一个锚节点la,锚节点la周期性的广播信标消息,该信标消息携带自身的ID为IDa以及自身的坐标为(xa,ya,za);当锚节点la接收其邻居节点广播的信标消息,假设锚节点la接收到其邻居节点lb的信标消息,该信标消息携带lb的ID为IDb以及lb的坐标为(xb,yb,zb),锚节点la获取接收该信标消息的RSSI值为RSSIab,将该自身的IDa,其邻居节点lb的IDb以及获取的RSSIab存储在如表1所示的RSSI值信息表中。 \n[0071] 其中,在表1中IDc、IDd、IDA、IDB和IDC分别为锚节点lc、ld、A、B和C的ID,RSSIac、RSSIad、RSSIaA、RSSIaB和RSSIaC分别为锚节点la与lc之间的RSSI值、锚节点la与ld之间的RSSI值、锚节点la与A之间的RSSI值、锚节点la与B之间的RSSI值以及锚节点la与C之间的RSSI值。 \n[0072] 表1 \n[0073] \n 锚节点ID IDb IDc IDd IDA IDB IDC\n IDa RSSIab RSSIac RSSIad RSSIaA RSSIaB RSSIaC\n[0074] 假设待定位节点S加入到如图3所示的网络中,待定位节点S接收网络中的锚节点的信标消息,例如,接收锚节点la、lb、lc、ld、A、B和C广播的信标消息。 [0075] 步骤202:待定位节点获取接收信标消息的RSSI值,确定广播该信标消息的锚节点为分层锚节点还是定位锚节点,如果是分层锚节点,则执行步骤203;如果是定位锚节点,则执行步骤204; \n[0076] 其中,分层锚节点的ID与定位锚节点的ID结构不同,或者分层锚节点的ID与定位锚节点的ID位于不同的范围。因此,待定位节点根据信标消息中携带的ID,判断广播该信标消息的锚节点为分层锚节点还是定位锚节点。 \n[0077] 例如,待定位节点S根据接收的每个信标消息中携带的锚节点的ID分别判断锚节点la、lb、lc和ld为定位锚节点,锚节点A、B和C为分层锚节点。 \n[0078] 其中,在本实施例中,在室内设置三个分层锚节点,将整个室内空间分成三个层次,分别为第一层、第二层和第三层,其中,第一层离地面最近、第三层离地面最远、第二层位于第一层和第三层之间。例如,在如图3所示的空间分层模型中,分层锚节点A、B和C将整个空间分成三层,分别为第一层、第二层和第三层。 \n[0079] 步骤203:待定位节点将信标消息携带的锚节点ID与坐标存储在分层锚节点信息表中,将自身的ID、信标消息携带的ID以及获取的RSSI值存储在分层锚节点RSSI值信息表中,执行步骤205; \n[0080] 例如,待定位节点S接收邻居节点A发送的信标消息,获取接收该信标消息的RSSI值为RSSIsA,将邻居节点A的IDA以及坐标(xA,yA,zA)存储在如表2所示的定位锚节点信息表中;待定位节点S将自身的ID即IDs、信标消息携带的IDA以及获取的RSSIsA存储在如表2所示的分层锚节点RSSI值信息表中。当待定位节点S接收到锚节点B和C发送的信标消息后,待定位节点S重复地执行上述步骤。 \n[0081] 表2 \n[0082] \n 锚节点的ID x y z\n IDA xA yA zA\n IDB xB yB zB\n IDC xC yC zC\n[0083] 表3 \n[0084] \n 锚节点的ID IDA IDB IDC IDs\n IDA RSSIsA\n IDB RSSIsB\n IDC RSSIsC\n[0085] 步骤204:待定位节点将信标消息携带的锚节点ID与坐标存储定位节点信息表中,将自身的ID、信标消息携带的ID以及获取的RSSI值存储在定位节点RSSI值信息表中; [0086] 例如,待定位节点S接收邻居节点la发送的信标消息,获取接收该信标消息的RSSI值为RSSIsa,将该信标消息携带的IDa以及坐标(xa,ya,za)存储在自身的如表3所示的定位锚节点信息表中;将自身的IDs、信标消息携带的IDa以及获取的RSSIsa存储如表5所示定位锚节点RSSI值信息表中。当待定位节点S接收到lb、lc、ld发送的信标消息后,待定位节点S重复地执行上述步骤。 \n[0087] 表4 \n[0088] \n 锚节点的ID x y z\n IDa xa ya za\n IDb xb yb zb\n IDc xc yc zc\n IDd xd yd zd\n[0089] 表5 \n[0090] \n 锚节点的ID IDa IDb IDc IDd IDs\n IDa RSSIsa\n IDb RSSIsb\n IDc RSSIsc\n IDd RSSIsd\n[0091] 步骤205:待定位节点接收网络中的锚节点广播的RSSI消息,该RSSI消息携带该锚节点的ID,该锚节点中存储的邻居节点的ID以及其与邻居节点之间的RSSI值; [0092] 其中,网络中每个锚节点当接收其邻居节点广播的信标消息后,从自身存储的RSSI值信息表中,读取其邻居节点的ID以及其与邻居节点之间的RSSI值,生成携带自身的ID、读取的其邻居节点的ID以及其与邻居节点之间的RSSI值的RSSI消息。 [0093] 例如,锚节点la当接收到其邻居节点的信标消息后,从如表1所示的RSSI信息表中读取其邻居节点的ID以及其与邻居节点之间的RSSI值,生成携带其自身的Ida、读取的其与邻居节点之间的RSSI值的RSSI消息,广播该RSSI消息。待定位节点S接收锚节点la广播的RSSI消息。 \n[0094] 步骤206:待定位节点判断该锚节点是分层锚节点还是定位锚节点,如果是 分层锚节点,则执行步骤207;如果是定位锚节点,则执行步骤208; \n[0095] 步骤207:待定位节点将该信标消息携带的该锚节点的ID、该锚节点的邻居节点的ID以及该锚节点与邻居节点之间的RSSI值存储在自身的分层锚节点RSSI值信息表中,执行步骤209; \n[0096] 例如,待定位节点S接收分层锚节点A的RSSI消息后,将RSSI消息携带的分层锚节点A的IDA、分层锚节点A的邻居节点的ID以及其与邻居节点之间的RSSI值存储在如表\n3所示的分层锚节点RSSI值信息表中,得到的结果如表6所示。 \n[0097] 表6 \n[0098] \n 锚节点的ID IDA IDB IDC IDs\n IDA RSSIBA RSSICA RSSIsA\n IDB RSSIAB RSSICB RSSIsB\n IDC RSSIAC RSSIBC RSSIsC\n[0099] 步骤208:待定位节点将该信标消息携带的该锚节点的ID、该锚节点的邻居节点的ID以及该锚节点与邻居节点之间的RSSI值存储在自身的定位锚节点RSSI值信息表中; [0100] 例如,待定位节点S接收定位锚节点la的RSSI消息后,将RSSI消息携带的定位锚节点la的IDa、定位锚节点la的邻居节点的ID以及其与邻居节点之间的RSSI值存储在如表5所示的定位锚节点RSSI值信息表中,得到的结果如表7所示。 \n[0101] 表7 \n[0102] \n 锚节点的ID IDa IDb IDc IDd IDs\n IDa RSSIba RSSIca RSSIda RSSIsa\n IDb RSSIab RSSIcb RSSIdb RSSIsb\n IDc RSSIac RSSIbc RSSIdc RSSIsc\n IDd RSSIad RSSIbd RSSIcd RSSIsd\n[0103] 步骤209:待定位节点根据分层锚节点RSSI值信息表中存储的其与每个分层锚节点之间的RSSI值,以及各分层锚节点之间的RSSI值确定自身所在的层 次; [0104] 例如,对于待定位节点S中的如表6所示的分层锚节点RSSI值信息表,如果RSSIBS≥RSSIAS≥RSSICS且RSSIAB≥RSSIBS,则确定出待定位节点S位于第3层;如果RSSIAS≥RSSICS、RSSIBS≥RSSICB、RSSIAS≥RSSIAB以及RSSIBS≥RSSIAB,则确定出待定位节点S位于第2层;如果RSSIBS≥RSSIAS、RSSICS≥RSSIAS、RSSICS≥RSSIBC以及RSSIBS≥RSSIBC,则确定出待定位节点S位于第1层。 \n[0105] 假设,在本实施例中,待定位节点S确定出自身所在的层次为第二层。 [0106] 步骤210:待定位节点根据自身所在的层次,通过分层策略确定出目标层次,获取目标层次内的定位锚节点; \n[0107] 其中,分层策略为:如果待定位节点位于第一层,则采用第一层和第二层的定位锚节点对待定位节点进行定位,即第一层和第二层为目标层次;如果待定位节点位于第二层,则采用第二层的定位锚节点对待定位节点进行定位,即第二层为目标层次;如果待定位节点位于第三层,则采用第二层的定位锚节点对待定位节点进行定位,即第二层为目标层次。 [0108] 其中,待定位节点获取目标层次内的定位锚节点的操作,具体为:待定位节点确定划分目标层次的两个分层锚节点,从分层锚节点信息表中查找确定的两个分层锚节点的坐标,从定位锚节点信息表中查找竖坐标位于确定的两分层锚节点的竖坐标之间的定位锚节点,查找的定位锚节点为目标层次内的定位锚节点。 \n[0109] 例如,待定位节点S根据自身所在的第二层,通过分层策略确定出目标层次为第二层,确定划分第二层的分层锚节点为A和B,从如表2所示分层锚节点信息表中查找分层锚节点A和B的坐标分别为(xA,yA,zA)和(xB,yB,zB),从如表3所示的定位锚节点信息表查找竖坐标位于zA和zB之间的定位锚节点la、lb和lc。 \n[0110] 其中,第一层离地面最近,由于地面上的物体较多,第一层的空间最复杂;第三层离室内的天花板最近,中间层即第二层的空间最空旷,所以第二层的空间复杂度最低,因此最好选用第二层的定位锚节点对待定位节点进行定位,如此可以定位的准确性。 [0111] 步骤211:待定位节点针对一个定位锚节点,将该定位锚节点作为球心,获 取该球心的两个半径; \n[0112] 具体地,从定位锚节点RSSI值信息表中,获取球心与待定位节点之间的RSSI值以及球心与其他每个定位锚节点之间的RSSI值,将球心与待定位节点之间的RSSI值作为参考值,将与球心之间的RSSI值小于参考值的定位锚节点划分为第一组,将与球心之间的RSSI值大于参考值的定位锚节点划分为第二组,从第一组中选取与球心之间的RSSI值最大的定位锚节点,将球心与该定位锚节点之间的距离作为球心的一个半径,从第二组中选取与球心的RSSI值最小的定位锚节点,将球心与该定位锚节点之间的距离作为球心的另一个半径。 \n[0113] 其中,待定位节点分别将获取的每个定位锚节点作为球心,并获取每个球心对应的两个半径。 \n[0114] 例如,待定位节点S以定位锚节点la为球心,从如7所示的定位锚节点的信息表中获取球心la与待定位节点S、定位锚节点lb和lc之间的RSSI值分别为RSSIaS、RSSIab和RSSIac,以球心la与待定位节点S之间的RSSIaS为参考值,假设,RSSIaS大于RSSIab且小于RSSIac,将与球心之间的RSSI值小于参考值RSSIaS的定位锚节点lb划分为第一组,将与球心la之间的RSSI值大于参考值的定位锚节点lc划分为第二组,从第一组中选取与球心la之间的RSSI值最大的定位锚节点lb,将球心la与定位锚节点lb之间的距离作为一个半径;从第二组中选取与球心la之间的RSSI值最小的定位锚节点lc,将球心la与定位锚节点lc作为中一个半径。 \n[0115] 其中,待定位节点S将lb作为球心,并按相同的方法将球心lb与la之间的距离和球心lb与lc之间的距离作为球心lb的两个半径;将lc作为球心,并按相同的方法将球心lc与la和lb之间的距离作为球心lc的两个半径。 \n[0116] 步骤212:待定位节点以每个球心以及每个球心对应的两个半径画球,获取每个球相交的区域的重心的坐标,将该坐标作为待定位节点的坐标。 \n[0117] 例如,如图4所示,待定位节点S根据球心la以及其对应的两个半径画球,根据球心lb以及其对应的两个半径画球,根据球心lc以及其对应的两个半径画球,其中,画出的每个球相交垢区域为EFGH,获取区域EFGH的重心的坐标,半重心的坐标作为待定位节点S的坐标。 \n[0118] 在本发明实施例中,通过待定位节点与分层锚节点之间的RSSI值以及任意两分层锚节点之间的RSSI值确定待定位节点位于的层次,根据该层次以及分层 策略,确定目标层次,获取目标层次内的定位锚节点,将获取的定位锚节点作为球心,获取每个球心的半径,根据每个球心和其对应的半径画球,获取每个球相交的区域的重心的坐标,将获取的坐标作为待定位节点的坐标。其中,通过分层策略选取复杂度较低的目标层次,利用目标层次内的定位锚节点可以准确的对待定位节点进行定位,如此实现了在实际无规则的室内环境中,准确的对节点进行定位。 \n[0119] 实施例3 \n[0120] 如图5所示,本发明实施例提供了一种节点,包括: \n[0121] 第一确定模块301,用于根据待定位节点分别与每个分层锚节点之间的RSSI值以及任意两个分层锚节点之间的RSSI值,确定出待定位节点位于的层次; \n[0122] 第二确定模块302,用于根据分层策略和待定位节点位于的层次,确定定位锚节点; \n[0123] 第一获取模块303,用于以确定的定位锚节点为球心,获取球心对应的半径; [0124] 画球模块304,用于根据球心以及球心对应的半径画球; \n[0125] 第一获取模块305,用于获取每个球相交的区域的重心的坐标,将获取的坐标作为待定位节点的坐标。 \n[0126] 进一步地,该节点还包括: \n[0127] 接收模块,用于接收网络中的锚节点发送的信标消息和RSSI消息,该信标消息携带该锚节点的ID和坐标,该RSSI消息携带该锚节点的ID、该锚节点的邻居节点的ID和该锚节点与邻居节点之间的RSSI值,获取待定位节点与锚节点之间的RSSI值,其中,锚节点包括定位锚节点和分层锚节点; \n[0128] 第一存储模块,用于将该锚节点的ID和坐标存储在锚节点信息表中,其中,锚节点信息表包括分层锚节点信息表和定位锚节点信息表; \n[0129] 第二存储模块,用于将待定位节点的ID、该锚节点的ID以及自身与该锚节点之间的RSSI值存储锚节点RSSI值信息表中,将该锚节点的ID、邻居节点的ID以及该锚节点与邻居节点之间的RSSI值存储在锚节点RSSI值信息表中,其中,锚节点RSSI值信息表包括分层锚节点RSSI值信息表和定位锚节点RSSI值信息表; \n[0130] 其中,第二确定模块302具体包括: \n[0131] 确定单元,用于根据自身位于的层次和分层策略,确定目标层次,获取划分该目标层次的两个分层锚节点的ID; \n[0132] 第一查找单元,用于根据两个分层锚节点的ID,从锚节点信息表中分别查找两个分层锚节点的坐标; \n[0133] 第二查找单元,用于从锚节点信息表中,查找竖坐标位于两个分层锚节点的坚坐标之间的定位锚节点; \n[0134] 其中,第一获取模块303具体包括: \n[0135] 划分单元,用于以待定位节点与球心之间的RSSI值为参考值,将与球心之间的RSSI值小于参考值的定位锚节点划分为第一组,将与球心之间的RSSI值大于参考值的定位锚节点划分为第二组; \n[0136] 第一选取单元,用于从第一组中选取与球心之间的RSSI值最大的定位锚节点,将球心与RSSI值最大的定位锚节点之间的距离作为半径; \n[0137] 第二选取单元,用于从第二组中选取与球心之间的RSSI值最小的定位锚节点,将球心与RSSI值最小的定位锚节点之间的距离作为半径; \n[0138] 进一步地,该节点还包括: \n[0139] 查找模块,用于从分层锚节点信息表中,查找待定位节点与每个分层锚节点之间的RSSI值以及任意两个分层锚节点之间的RSSI值。 \n[0140] 在本发明实施例中,通过待定位节点与分层锚节点之间的RSSI值以及任意两分层锚节点之间的RSSI值确定待定位节点位于的层次,根据该层次以及分层策略,确定目标层次,获取目标层次内的定位锚节点,将获取的定位锚节点作为球心,获取每个球心的半径,根据每个球心和其对应的半径画球,获取每个球相交的区域的重心的坐标,将获取的坐标作为待定位节点的坐标。其中,通过分层策略选取复杂度较低的目标层次,利用目标层次内的定位锚节点可以准确的对待定位节点进行定位,如此实现了在实际无规则的室内环境中,准确的对节点进行定位。 \n[0141] 以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。 [0142] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2014-06-25
- 2012-02-08
专利申请权的转移
登记生效日: 2011.12.26
申请人由北京邮电大学变更为北京智慧图科技发展有限责任公司
地址由100876 北京市北京邮电大学116信箱变更为100080 北京市海淀区PE大厦107号
- 2011-02-02
实质审查的生效
IPC(主分类): H04W 64/00
专利申请号: 201010253889.6
申请日: 2010.08.13
- 2010-12-15
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-12-05
|
2005-10-27
| | |
2
| |
2010-06-16
|
2009-12-25
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |