刘 鋆, 赵尔敦, 陈 怡
(1. 华侨大学 信息化建设与管理处, 福建 厦门 361021; 2. 华中师范大学 计算机学院, 武汉 430079)
·计算机技术应用·
ZStack传感器网络定位系统设计
刘 鋆1, 赵尔敦2, 陈 怡2
(1. 华侨大学 信息化建设与管理处, 福建 厦门 361021; 2. 华中师范大学 计算机学院, 武汉 430079)
在无线传感器网络定位系统中,由于元器件品控和外界环境等因素的差异,以往测出的衰减模型参数的经验值并不能适应当下的定位环境,以至定位精度很低,实验过程不具重复性。根据待定位节点临近的参考节点多次互发报文,经过最小二乘法拟合出衰减模型参数。算法对所有参考节点根据RSSI值进行排序,选取RSSI值最小的3个节点用三边定位算法计算待定位节点坐标。最后,设计了一个基于ZStack协议栈的定位原型系统。算法经过进一步简化,大幅度减小了由于衰减模型参数不准确对定位精度的影响,为今后深入研究室内定位打下基础。
无线传感器网络; 定位; 衰减模型; ZStack
近年来,基于位置服务(LBS)[1]和大数据[2]技术进一步的挖掘了移动终端的服务潜力,增加了用户的可选度,为用户提供了更有价值的决策支持信息。随着应用展示越来越多样化,现有的基于位置服务已经不能满足用户需求,仍旧停留在室外定位,如区域定位、街道定位等。而诸如停车位寻找,大型展览馆导航等室内定位项目,定位精度仍然达不到用户需求。
全球定位系统(GPS)早已成为室外定位中的主要支撑技术,民用级别的精度是1 m。但由于室内建筑材料复杂,GPS的信号无法穿透,使其无法应用于室内环境的定位。超声波定位精准,得益于其测距精确度高的优点(实验环境中,超声波测距精度能达到1 cm)[3]。但对超声收发元器件的品控要求较高,也和项目实施过程中节点的摆放位置和角度有直接影响[4]。基于RSSI的定位系统[5],不依赖于捆绑其他的传感器,在组网的同时利用无线信号接收强度进行测距,即可达到定位的目的。随着传感器的软、硬件技术的成熟和无线技术的快速发展,行业内已经可以实现1 000个以上的无线传感器节点大规模自组织组网,针对大规模部署产生的漏斗效应,也有了较好的解决方案[6]。并且,无线传感器节点量产成本很低,适合大规模部署。因此,在无线传感器网络收集数据的项目中,添加定位功能,无论在经济上和技术上都是具有可行性的。本文将进一步探究基于信号接收强度和距离的转换关系,及其参数如何适应不同环境的解决方案。
ZStack是德州仪器公司专门为cc243x和cc253x芯片组定制的一个小型的假实时操作系统。它优异地集成ZigBee,ZigBee PRO的绝大部分特性,被ZigBee测试机构,国家技术服务公司(NTS)评为ZigBee联盟业内最高水平[7]。
ZStack协议栈的任务调度机制是非常经典的轮询机制。作为一个增强型的单片机,轮询无疑是最简洁高效的。每个任务链表都有一个单独的消息队列,消息队列由各种事件产生的标志位组成,系统通过判断标志位进而对相应的事件进行响应。标志位的修改可以通过轮询或中断来实现。当传感器节点上电,系统会初始化任务链表,配合OSAL完成整个协议栈的稳定运行[8]。
在基于测距的定位算法中,信号衰减模型被用于信号强度与距离的转换。
(1)
表1 路径衰减系数经验值
在环境中存在的阻挡越多,信号强度衰减得越多。因此,n值大致能说明传播介质的通过率。实际工程中,经常把一些尚未研究出规律的、影响无线信号传播的因素归入信号噪声。式(1)中的ε,代表环境的噪声干扰,ε是一个服从高斯分布(0,δdB)的随机数。δdB为遮蔽方差(Shadowing deviation),不同环境下,测量出来的遮蔽方差是不一样的[9]。
在实际的工程中,往往会使用衰减模型的另一种形式,即
(2)
式中:A为单位距离的信号强度;n为定位环境的衰减系数,这2个参数直接决定了测距的精准度。
为了使衰减模型中的参数实时适应测量环境,本文将通过修改通信协议,选择待定位节点周围的参考节点并让它们发送探测报文,提取RSSI值和参考节点的位置信息,从而计算出A和n。如果在每一次计算待定位节点之前,都进行一次A、n的测算,那么即使定位区域的环境发生变化,A和n也将随环境而改变。这种利用待定位节点附近的参考节点信息使定位计算适应定位环境的方法,可进一步简化定位算法,屏蔽A、n计算过程。
在定位系统中,有m个参考节点,它们之间相邻的距离为d1,d2,d3,…,dm,对应的节点接受到报文的信号强度为|RSSI|1,|RSSI|2,|RSSI|3,…,|RSSI|m。则有
(3)
式(3)可以写成Y=bX的形式:
(4)
式中:
左乘bT,矩阵可以降至2维
bTY=bTbX
(5)
式中:
结合提取到的待定位节点的信号接收强度均值|RSSI|,可列出下面的方程组,解出的r即为待定位节点与参考节点的距离
(6)
在基于测距的定位算法中,三边定位算法是经典算法。在所有参考节点中,选择RSSI值最小的3个节点与待定位节点的距离用于计算坐标
(7)
式中,(x,y)为待定位节点的坐标,(x1,y1) (x2,y2) (x3,y3)是参考节点的坐标。当3个参考节点不在同一条直线,方程组有解,即
实时计算衰减模型中的参数,对定位结果的精准度有非常重要的意义。本节将设计并实现一个对环境自适应的定位系统,在该系统中,将不需要再考虑衰减模型参数对测距的影响。
4.1 系统总体框架
图1所示为经典的无线传感器网络应用的系统原型。无线传感器负责组织网络和数据采集(比如温度、湿度和震动等),通过一个或者多个网关节点传输至上位机,上位机进行数据处理和展示。本文的定位原型系统也是依据此框架设计的。
图1 定位系统项目框架
4.2 系统的软、硬件平台
4.2.1 无线传感器节点
本系统将使用由TI公司研发的CC2530芯片为主控的无线传感器。它们有配套的ZStack协议栈,实现了Zigbee2007 Pro中的几乎所有功能。不仅如此,作为增强型的单片机,只需适当的修改驱动,就能支持诸如msstatePAN、TinyOS[13]和FreakZ等开源协议栈。目前TI公司的CC253X芯片在市场上的占有率稳定,投入到生产环境中的案例很多。
4.2.2 定位系统软件开发平台
(1) 协议栈开发工具。底层的无线传感器网络使用TI公司开发的ZStack协议栈中的CC2530版本作为软件系统。使用瑞典IAR公司的C编译器IAR Embedded Workbench for 8051,并结合芯片配置文件CC2530.i51,便可在ZStack协议栈上开发。
(2) 定位系统和展示界面开发工具。上位机的数据处理程序和核心算法是在.Net 3.5框架上由C#实现。每轮定位后,使用GDI+实时绘出。GDI+是Windows的一个子系统,主要负责在打印设备和显示屏输出。GDI+屏蔽了应用程序和图形输出设备之间的复杂细节,开发人员只需要编写设备无关的应用程序,提高了开发效率。
4.3 系统设计
4.3.1 数据采集系统
ZigBee协议中,无线传感器网络节点被分为3类:协调器、路由器和终端节点。为了叙述方便,系统将延用ZStack中的定位例程的节点分类:Dongle、Router和Blind。Dongle在系统初始化时创建网络,并在系统运行过程中对网络进行维护。它通过仿真器与电脑连接,系统运行过程中,不处理任何来自Router的RSSI数据,透明传输至上位机。Router负责RSSI收集,并在网络传输过程起路由作用。Blind是待定位节点,不工作时处于深度睡眠状态,每隔一段时间由定时器唤醒。
在图2中,Dongle只有1个,Router和Blind有多个,其中Router的数目为3个以上。系统中有9类报文,它们以Cluster ID作为标识。
图2 ZStack应用层通信协议
节点发送报文之前,必须定义报文中的Cluster ID。当传感器接收到一个报文,会依据报文中的Cluster ID做出不同的处理。报文的发送由定时器或者回调函数触发,按照序号的字典顺序执行。
0. LOCATION_ROUTER_KEEP_ALIVE
1. LOCATION_ROUTER_TABLE_CREATE
2. LOCATION_ROUTER_INFO
3. LOCATION_ROUTER_RSSI_REQUEST
4. LOCATION_ROUTER_UNICAST
5. LOCATION_ROUTER_RSSI_RESPONSE
6. LOCATION_BLIND_RSSI_REQUEST
7. LOCATION_BLIND_BLAST
8. LOCATION_BLIND_RSSI_RESPONSE
本系统应用于室内定位,Dongle和Router均由外接电源持续供电,Blind由于是待定位节点,需要不断移动,由5号电池供电。系统上电初始化,Dongle进行硬件上电核查、短地址初始化、节点ID写入,选择信道并开始广播网络组建帧。Router和Blind进行硬件上电核查、短地址初始化,开始寻找和加入网络。如果Router和Blind没有接收到Dongle广播的网络组建帧,将进入等待状态。当加入网络的Router和Blind的数目满足后,Dongle将启动应用层路由表创建。
当无线传感器网络组建完成,并且网络上的节点足够时,Dongle采用多播的方式每隔3 s发送Cluster ID为LOCATION_ROUTER_TABLE_CRE-ATE的报文给Router。Router接收后,将以单播的形式、Cluster ID为LOCATION_ROUTER_INFO,发送其短地址和上电时写入的节点ID给Dongle。Dongle接收此类报文后,提取节点ID和短地址,按节点ID的字典顺序插入路由表。应用层路由表的结构如下:
struct _router table
{
struct _router_talbe *next;
uint8 node_id;
uint16 short_addr;
uint8 alive_count;
}
路由表是一个按节点ID从小到大的单循环链表,每条路由信息包括节点id,短地址和存活计数。维护路由表借鉴了经典的心跳机制。Dongle每隔3 s向Router多播Cluter ID为LOCATION_-ROUTER_KEEP_ALIVE的报文,并将路由表中的所有节点的alive_count加1。Router收到后将立即触发回调函数,以LOCATION_ROUTER_INFO为Cluster ID的报文单播Router节点信息给Dongle。Dongle将会顺序查找路由表,如果路由表中已有这条路由信息,则此节点的alive_count重置为初始化值0。Dongle通过osal_timer函数向任务链表中添加定时任务,每隔60 s执行alive_count参数巡查。当路由表中某个Router的alive_count超过10,该节点的路由信息将会从路由表中删去。
应用层路由表形成后,Dongle遍历路由表,提取目的节点的下一个节点的短地址填充报文中的destID,将此报文的Cluster ID设为LOCATION_-ROUTER_RSSI_REQUEST,以单播的形式发送给Router。报文结构如表2。Router收到后,提取报文中的destID,以单播的形式向destID发送Cluster ID为LOCATION_ROUTER_UNICAST的报文。短地址为destID的节点接收到报文后,调用回调函数。回调函数将提取RSSI值,发送地址和接收地址填充报文,以LOCATION_ROUTER_RSSI_RESPON-SE为Cluster ID单播给Dongle。Dongle接收后,将触发串口发送函数,通过串口原样发送至上位机处理。在ZStack中,多播和单播在网络层有校验、重传等纠错机制的,但在串口传输过程,需要手工添加校验字段,本系统选择CRC16算法。
表2 LOCATION_ROUTER_RSSI_REQUEST报文格式
当Dongle发送完一轮Cluster ID为LOCATION_ROUTER_RSSI_RESPONSE报文后,立即以单播的形式向Blind发送Cluster ID为LOCATION_BLIND_RSSI_REQUEST的报文。Blind收到后,将广播50个路由超时跳数为1的,Cluster ID为LOCATION_BLIND_BLAST的空数据报文。相邻的Router收到后,提取RSSI值,以单播的形式发送Cluster ID为LOCATION_BLIND_-RSSI_RESPONSE的报文给Dongle,Dongle接收后,调用串口发送函数原样发送给上位机。考虑到在实际应用中,待定位节点是不断移动的,因此Blind在第1次广播完成后,为了尽量节能,电源模式置为PM2模式。当芯片进入PM2模式,电压调节器到数字核心是不工作,16 MHz的RC振荡器和32 MHz晶振都不运行,耗电非常低。由于CC2530主控不支持睡眠中被无线信号唤醒,每隔1 s,定时器将唤醒节点并且广播50次Cluster ID为LOCATION_BLIND_BLAST的报文,又立即进入PM2模式。Blind在定位系统中因为是移动的,它的代码量最小,绝大多数时间处于睡眠状态。为了定位不断出现的待定位节点,Dongle每隔2 s发送1次LOCATION_BLIND_RSSI_REQUEST报文。
4.3.2 核心定位系统
为了尽量降低系统模块的耦合性,底层的数据采集系统和上位机中的定位数据处理系统没有交互。数据采集系统只是将数据单向传递至上位机,上位机并不发送任何指令或数据给底层的数据采集系统。独立的设计能降低系统的开发成本和调试的难度,使定位原型系统架构清晰。图3展示了上位机定位系统的流程,在实现过程中,如果不注意一些细节,会直接影响定位效果。
图3 上位机定位系统流程图
底层的数据发送周期可以根据待定位节点的广播报文周期调整。当上位机接收到底层传来的一个报文的周期数据后,将判断数据量是否足够。由于计算坐标位置需要3个以上的参考节点的RSSI值,并且还要进行滤波运算,如果数据量不够,将继续接受下一轮数据。在ZStack中,信号单元结构体中是采用链路质量指示LQI来代表信号强度的,因此,在使用衰减模型之前,需要将LQI转换成RSSI。LQI与RSSI的关系为
LQI=255×(RSSI+81)/91
(8)
在德州仪器出具的Datasheet明确建议使用-95~-40之间的RSSI值用作计算,如果超出该区间,RSSI值的参考性将降低。因此,当RSSI值不在区间内,对应的数据将丢弃,不用于计算。经过滤波算法后,将一个节点的RSSI数据集,收敛成一个RSSI值。再用于计算坐标位置,最后通过GDI+实时绘出待定位节点所在位置。
定位系统测试在节点距离为3、8和12 m时,定位精度分别为0.3、0.8和1.5 m,节点平均距离增大,定位误差将增大。
图4所示为定位原型系统的展示界面,由4个参考节点组成的3 m×3 m的正方形区域,蓝色的待定位节点放置在(1.5,3)位置,系统定位的结果为(1.33,2.93),误差为0.184 0 m。
图4 定位原型系统展示界面
本文通过研究传统的基于测距的定位算法易产生误差的原因,着重阐述了由于硬件品质及环境因素对定位计算的影响。利用参考节点信息,解决了衰减模型参数不适用实际定位环境的问题。并进一步提出了无需计算衰减模型参数的算法,使得定位算法具有自适应环境的能力。降低外部环境对定位的影响,为今后定位算法的深入和追踪算法的研究打下基础。
[1] 刘学斌, 程朋根, 徐云和. 基于位置服务的关键技术与应用[J]. 江西科学, 2005, 23(1): 43-48.
[2] 王 珊, 王会举, 覃雄派, 等. 架构大数据: 挑战, 现状与展望[J]. 计算机学报, 2011, 34(10): 1741-1752.
[3] 赵海鸣, 卜英勇, 王纪婵. 一种高精度超声波测距系统的研制[J]. 矿业研究与开发, 2006, 26(3): 62-65.
[4] 孙牵宇, 童 峰, 许肖梅. 一种大角度范围的高精度超声波测距处理方法[J]. 厦门大学学报 (自然科学版), 2006, 45(4): 513-517.
[5] Zàruba G V, Huber M, Kamangar F A,etal. Indoor location tracking using RSSI readings from a single Wi-Fi access point[J]. Wireless Networks, 2007, 13(2): 221-235.
[6] 张 磊,周 福. 基于图论的温室WSN测控系统冗余节点部署算法[J].农机化研究, 2011(6):14-17.
[7] 李晓维,徐永军,任丰原. 无线传感器网络技术[M]. 北京:北京理工大学出版社, 2007.
[8] 李战明, 刘 宝, 骆东松. Zigbee 技术规范与协议栈分析[J]. 信息化纵横, 2009(5): 45-48.
[9] 王继春. 无线传感器网络节点定位若干问题研究[D]. 合肥: 中国科技大学,2009.
[10] Hossain A, Van H N, Soh W S. Fingerprint-Based location estimation with virtual access points[C]//Computer Communications and Networks, 2008. ICCCN'08. Proceedings of 17th International Conference on. IEEE, 2008: 1-6.
[11] Bahl P, Padmanabhan V N. RADAR: An in-building RF-based user location and tracking system[C]//INFOCOM 2000. Nineteenth Annual Joint Conference of the IEEE Computer and Communications Societies. Proceedings IEEE, 2000, 2: 775-784.
[12] Lorincz K, Welsh M. Motetrack: A robust, decentralized approach to RF-based location tracking[C]∥Location-and Context-Awareness. Berlin Heidelberg: Springer, 2005: 63-82.
[13] 刘信新, 邵明凯. 无线传感器网络操作系统 TinyOS 研究[J]. 计算机与数字工程, 2008 (7): 66-68.
Design of the Localization System in Wireless Sensor Networks
LIUJun1,ZHAOErdun2,CHENYi3
(1. Information Construction and Management,Huaqiao University, Xiamen 361021, Fujian, China; 2. Department of Computer Science,Central China Normal University, Wuhan 430079,China)
In the localization system of wireless sensor networks, due to differences in quality control and external environment, empirical value of attenuation model cannot meet the current environment, the result may lead to low positioning accuracy and non-repeatable experiment. In this paper, the parameters of the model are fitted by the least square method, according to the reference nodes which send messages mutually close to the nodes to be located. All the reference nodes are sorted by their RSSI values, and the three nodes with the smallest RSSI values are selected to calculate the coordinates of the nodes to be located. Finally, a prototype system is designed and implemented for localization based on protocol stack of ZStack. Further simplifying algorithm greatly reduces model parameter inaccuracies on positioning accuracy, it provides the foundation for further research.
wireless sensor networks; localization; attenuation model; ZStack
2016-05-12
国家自然科学基金项目资助(61202470)
刘 鋆(1987-),男,福建厦门人,助理工程师,研究方向:无线定位,智慧校园。E-mail:liuj@hqu.edu.cn
TN 929.5; TP 393
A
1006-7167(2017)02-0112-05