基于TinyOS平台的RSSI改进定位系统设计与实现
2013-10-17李雪莲乔钢柱曾建潮
李雪莲,乔钢柱,曾建潮
(太原科技大学电子信息工程学院,山西太原 030024)
WSN(Wireless Sensor Network)的定位技术应用广泛,除了可以反应出事发地点之外,还可以跟踪目标、实时监测目标的行动状态、预测目标的行动轨迹等[1]。目前的定位算法可以分为两类:基于测距的定位算法(如到达角度AOA,到达时间TOA,到达时间差TDOA,接收信号强度RSSI)和无需测距的定位算法(如质心、DV-Hop、Amorphous、APIT 定位算法等)[2]。由于基于测距的定位是采用实际测得节点间的距离或者角度,因此定位精度较高,对硬件也提出了一定的要求,在定位过程中相对消耗的能量较多。无需测距的定位算法不需要实际测量距离或角度信息,对节点不存在特殊的要求,定位过程中无需考虑能量消耗问题,但定位精度及其节点覆盖率却有待提高[5]。在基于测距的定位算法中,RSSI(Received Signal Strength Indicator)定位算法相对而言通信开销较小,对硬件要求较低,是一种较为实用的定位算法。本文在TinyOS软件平台上利用Crossbow公司提供的硬件设施对RSSI改进定位系统进行了实验验证,并结合实际情况对所得实验数据进行了分析。
1 TinyOS操作系统及实验硬件平台
TinyOS是UC Berkeley(加州大学伯克利分校)开发的一种用于无线传感网络节点的开源操作系统,以其组件化的编程、事件驱动的执行模式、微型的内核以及良好的移植性等特点作为目前WSN系统上的主流操作系统[3]。加州大学伯克利分校在C语言的基础上开发了一种专门适合于无线传感网络编程的NesC(C language for Network embedded systems)语言,TinyOS操作系统和其上运行的应用程序都是用NesC语言开发的[4]。本文硬件部分采用Crossbow公司的mib520接口板和iris节点。iris节点工作在2.4 GHz,支持IEEE802.15.4协议的Mote模块,用于低功耗无线传感网络[6]。
2 RSSI改进定位算法
传统的RSSI定位算法中衰减指数β采用的是经验值,依据具体的实验环境而定,这样会导致定位结果误差较大。本算法主要针对RSSI定位算法中衰减指数β的值进行改进,利用节点接收信号强度值计算出同一实验环境中不同位置的衰减指数β,进而得出未知节点的位置坐标,减小了误差,提高了定位精度。
2.1 无线信号传播模型
其中,β是路径损耗指数,从式(1)可以得出距离r的计算公式为
屏蔽模型第2部分内容为指出在固定距离上节点接收的信号能量符合对数正态随机变化,其具体公式如下
Ψ是个无实际意义的随机变量,是一个零均值的高斯随机变量,是因为不同的实验环境而产生。但是通过多次实验计算得知,Ψ的值对实验结果r的值影响不大,因此为了计算简单,文中采用简化的路径损耗模型,如式(4)所示
2.2 动态路径损耗指数的获取
实验中每个信标节点周期性的发送自身信息,当信标节点接收到其它信标节点发来的信息时,通过节点ID号判断是否是距离最近的4个节点,如果是则记录4个临近节点发送的RSSI均值,记录为RSSIS-2,RSSIS-1,RSSIS+1,RSSIS+2。信标节点如果接收到超过阈值的邻接信标的信息时,根据式(5)计算出新的β值,并代替保存的原有β值
式(5)中,β是通过实际实验中信号强度衰减得到的,依据节点所处环境的不同而不同,比以往采用的衰减指数经验值减小定位误差。
2.3 三边测量法计算未知节点坐标
通过计算得到衰减指数β,结合式(1)可以得到盲节点与信标节点之间的距离,然后利用三边测量法计算出盲节点位置坐标。三边测量法[9]是无线传感器网络定位算法中最典型的一种。在盲节点通过基于RSSI的测距方法获取到3个或以上信标节点的距离以后,就可以利用三边测量法进行自身定位。如图1所示,已知3 个信标节点 A、B、C 的坐标(x1,y1)、(x2,y2)、(x3,y3)。假设盲节点的坐标为(x,y),根据盲节点接收到的RSSI值,得盲节点到A,B,C的距离分别为d1、d2、d3。
图1 三边测量法的定位原理
则根据三边测量法原理,有式(6)成立
由式(6)可以求得盲节点的坐标如式(7)所示
3 RSSI算法在TinyOS操作平台的实现
在这环节中,主要用NesC语言在TinyOS环境下将RSSI改进定位算法具体实现,编译成功后将NesC程序分别烧到对应的硬件节点中进行实验。其实验结构如图2所示,信标节点发送包含自身坐标和自身ID的数据包到盲节点,盲节点通过接收信息中的ID号来判断是否为距离自己最近的4个信标节点,如果不是则丢弃此信息,如果是则记录其RSSI值,并对每一节点RSSI值取平均,利用此RSSI值并根据路径损耗指数β的计算公式得出此位置的损耗指数值。盲节点利用此β值结合信标节点的RSSI值计算出到与其距离最近的3个信标节点的距离,盲节点利用这3个距离值并结合信标节点位置坐标计算出自身坐标值,并将结果发送至基站节点。基站节点接收一切数据包,并将其发送到XServe中转站。PC机上的XServe作为节点网络和操作者之间通信的主要通道,提供多个通信端口用于输入信息,以便与网络间传送数据;操作者可以通过终端接口或者XML RPC命令接口与其进行通信;它可以解析、转换和处理节点传送的数据;在解析过程中,将原始格式的数据转换到相应的传感器读数测量单位;最后将转换后的数据显示于XSniffer界面中。PC机上的XSniffer可以显示出XServe传送的所有数据;能够让操作者监测到网络中所有节点是否都在正常通信;监测到数据包的序列号以及传送地址是否正确;监测到路由的更新和时间同步消息。
图2 实验结构图
3.1 总体实验思路
信标节点:负责发送包含自身位置坐标和ID的数据包到信标节点S和盲节点。信标节点S:负责计算出衰减指数β。盲节点:负责接收信标节点发来的数据包,结合信标节点的位置坐标计算出盲节点自身位置坐标值,并将此值发送到基站节点。基站节点:负责接收所有能听见的数据包,并将其转发到XServe,最后显示到XSniffer界面中,如图3所示。
图3 XSniffer数据显示界面
图3中,后5位数据(15)为自行定义,发送给2号节点的5位数据中,前3位是接收到的3个已知节点RSSI值,后两位是计算出的盲节点坐标值,为便于显示,最后两位数据分别扩大了10倍,实际值应当缩小为10%,不影响结果。发送给5号节点的数据是信标节点自身的坐标值。
3.2 具体实现思路
3.2.1 信标节点
实验中采用多个信标节点,首先分别指定每个信标节点的ID,以便距离盲节点最近的一个信标节点能够区分开距离自己最近的4个信标节点以及在XSniffer界面中清晰观察到每个信标节点发来的数据。信标节点在实验中起着关键作用,只有保证信标节点之间进行正常通信,才可以得到可信的盲节点位置坐标。具体实现思路如下:(1)定义一个缓存区,用来存储自身的坐标值和自身ID。(2)设置一个定时器,计时时间到发送出缓存区中的数据到盲节点,为避免数据覆盖现象,每个信标节点发送时间不同,并且不成倍数关系;指定红色LED灯亮,并通过XSniffer界面观察数据发送是否正确。(3)数据发送成功,指定绿色LED灯亮。
3.2.2 信标节点S
信标节点S主要作用是得出此位置的衰减指数β,以便对盲节点进行定位计算,随着环境的不同,β值也不同,减小了定位误差。具体实现思路如下:(1)定义一个缓存区,用来存储自身的坐标值和自身ID。(2)定义两个缓存区,其中一个用来接收距离其最近的4个信标节点发来的RSSI值,并计算每一个信标节点的RSSI平均值。(3)设置4个不同的定时器,到时分别提取接收缓存区的4个RSSI平均值到另一个缓存区中,并计算出此时衰减指数β。
3.2.3 盲节点
实验目的是测出盲节点的位置,因此盲节点是实验的目标节点。首先指定其ID,以便在XSniffer界面中读取数据。其次要保证能够正常接收并提取信标节点发送的数据,才可以计算出正确的节点间距离值,并得到可信的自身位置坐标。具体实现思路:(1)定义一个接收缓存区和两个发送缓存区,及其对应的变量指针。(2)接收信标节点发来的数据包,提取信标节点S发过来的衰减指数β值,黄色LED灯亮。(3)利用此RSSI值和衰减指数分别计算出每个信标节点和盲节点之间的距离,选出较小的3个距离值存放到发送缓存区一中。(4)设置4个不同的计时器,前3个时间到分别提取接收缓存区一中数据到发送缓存区二,第4个时间到利用发送缓存区二中数据计算出盲节点坐标值,红色LED灯亮。(5)发送成功,指定绿色LED灯亮。(6)将盲节点的坐标值发送到基站,并通过XSniffer界面读取数据。
3.2.4 基站节点
基站节点用于接收信标节点和盲节点发送来的数据,并将数据向上传送,使得实验者能够明确每个节点发送的数值。具体实现思路如下:(1)定义一个缓存区,用来存储接收到的数据。(2)利用接收函数接收一切可听到的信号。(3)将接收到数据通过串口传送到XServe,通过 XServe中转数据显示到 XSniffer界面中。
4 实验结果及数据分析
实验环境为20×20的实验室内和室外操场。
4.1 4个信标节点放置在坐标轴上,另外一个随机放置
信标节点的坐标设为(0,2),(0,6),(4,0),(8,0),(6,6)。
表1 室内实验结果对比
表2 室外实验结果对比
从表1和表2发现,当信标节点放置于坐标轴上时,数据误差较大,是因为室内坐标轴选为墙壁,会发生信号反射,室外坐标轴所选为操场周围的栅栏,也会对无线信号传输产生较大影响。但是明显可以发现,数据差值要比直接的RSSI定位算法小,数据的可靠性提高了许多,可见信号衰减指数β是一个较为关键的因素。
4.2 信标节点构成正五边形
信标节点的实际坐标设为(20,10),(13,19),(13,0),(2,4)。
表3 室内实验结果对比
表4 室外实验结果对比
从表3和表4发现,摆放信标节点成正五边形时,数据误差较第一种情况好,是因为此时信标节点的位置不在墙壁和操场围栏处,而且盲节点摆放的位置处于正五边形中。且此时数据差值较直接RSSI算法好,因为衰减指数β值的改变。从总体数据看,盲节点摆放位置越接近于正五边形中心时差值越小,盲节点位置一直放于正五边形中,RSSI值衰减比第一种情况稳定,从而数据差值较小。
4.3 随机摆放信标节点
信标节点的实际坐标设为(3,3),(5,2),(7,1),(8,4),(6,2)。
表5 室内实验结果对比
表6 室外实验结果对比
从表5和表6发现,在随机摆放信标节点的情况下,数据误差较第2种情况大,因为此时盲节点放置的位置远,室内物品较多,干扰较大,室外无线信号干扰,导致RSSI衰减不稳定。但是总体数据差值<RSSI直接定位算法所得的数据差值,可见衰减指数β对定位有着一定的影响。
4.4 数据误差分析
实验环境是20×20的实验室内和室外操场,由于实验环境的局限性,RSSI值会受到多种因素的干扰,实验室内的设备以及人员的走动都会对无线信号产生影响,使得信号发生反射、绕射、受到障碍物阻挡等现象,操场中会存在其它的无线通讯信号,以及铁栏杆等障碍物会使信号发生不稳定的衰减,导致RSSI值不稳定,产生误差。但数据误差要比直接的RSSI算法优化了一些,原因是没有采用经验的衰减指数,而是计算所得。
5 结束语
本文在TinyOS操作平台上利用Crossbow公司的硬件对无线传感网RSSI改进定位算法进行了实验验证。通过节点间的收发数据,得到RSSI值,得到不同位置的衰减指数值,从而计算出盲节点与信标节点之间的距离,最后利用三边定位算法计算出盲节点的具体位置坐标值。在大型网络中,此方法仍然适用,此时盲节点会接收到多个信标节点发送的数据,计算出多个距离值,只需提取3个最小的距离计算出盲节点的坐标值。
[1]孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清华大学出版社,2005.
[2]李晓维.无线传感器网络技术[M].北京:北京理工大学出版社,2007.
[3]LEV IS P,MADDEN S,POLASTRE J,et al.TinyOS:An operating system forwireless sensor networks[C].Berlin:Proceedings of the 7 th International Conference on Mobile Data Management(MDM 2006), Springer2verlag, 2005:115-148.
[4]李丽娜,石高涛,廖明宏.传感器网络操作系统 TinyOS关键技术分析[J].哈尔滨工业大学学报,2005(6):724-727.
[5]李晶,王福豹,段渭军.无线传感器网络中TinyOS的研究[J].计算机测量与控制,2006(6):838-840.
[6]Crossbow Technology,Inc.Mica2 wireless measurement system[EB/OL].(2004-10-11)[2012-10-11]http://www.xbow.com.
[7]Crossbow Technology,Inc.Mica2dot wireless microsensor mote[EB/OL].(2004-09-12)[2012-10-20]http://www.xbow.com.
[8]汪炀,黄刘生,肖明军,等.一种基于RSSI校验的无线传感器网络节点定位算法[J].小型微型计算机系统,2009,30(1):59-62.
[9]SAVARESE C,RABAEY J M,BEUTEL J.Locationing in dist ributed Ad Hoc wireless sensor network [C].Salt Lake:Proc.of the 2001 IEEE Int'l Conf.on Acoustics,Speech,and Signal,IEEE SignalProcessing Society,2001(4):2037-2040.
[10]王福豹,史龙,任丰原.无线传感器网络中的自身定位系统和算法[J].软件学报,2005,16(5):1148-1157.
[11]刘喜梅,张超,胡继珍.一种复杂环境下无线传感器网络定位算法[J].青岛科技大学学报:自然科学版,2009(2):173-175.