ZigBee室内定位系统定位精度优化算法研究
2013-08-13范静辉
范静辉,叶 宏
(上海师范大学信息与机电工程学院,上海 200234)
ZigBee是一种新兴的低成本、短距离、自配置、低速率以及低功耗的无线网络技术,具有比较完善的防碰撞机制、节点管理体系及电源功耗管理功能[1]。选用的无线收发芯片型号是A7105,A7105是一低成本2.4 GHz ISM频段的无线应用射频芯片。A7105内建接收信号强度指示RSSI和ADC侦测使用电压。
在无线传感器网络中,传感器节点间的测距方法是一些基于测距的定位算法的基础。测量节点间距离或方位时常用的方法有基于到达时间(TOA)、基于到达时间差(TDOA)、基于到达角度(AOA)和基于接收信号强度指示(RSSI)的方法[2],本文采用基于RSSI的测距,因为此方法无须额外的硬件设备,是一种低功率、廉价的测距技术,但是因为无线信号受反射、多径传播、非视距传播等问题影响,使得相同距离产生不同的传播损耗,因此,为了获取更加准确的RSSI,先通过中值过滤器(先把RSSI数据排序,设定阈值,根据阈值来取值),再经过均值过滤器的方法,以去除那些偏差较大的RSSI,提高了RSSI的精度。在定位过程中,本文采用基于极大似然估计法加权取均值的定位优化算法,此种定位方法提高了定位的精度。上位机利用LabVIEW软件开发,LabVIEW是一种图形化编程语言,采用工程技术人员所熟悉的术语和图形化符号代替常规的文本语言编程,具有界面友好、操作简便、操作周期短等特点[3]。本文上位机的作用是采集RSSI,实现算法及显示。
1 算法描述
1.1 RSSI测距原理及本文获取RSSI算法
1.1.1 RSSI测距原理
基于RSSI(接收信号强度)测距算法:在发射节点的发射功率确定的情况下,可以根据接收节点接收到的功率,利用理论和经验模型,得出能量损耗与距离的关系。
一般采用的RSSI测距原理如式(1)所示
式中:RSSI是接收信号强度;A为常数;d是收发节点之间的距离;n是信号传播因子。常数A和n的值决定了接收信号强度RSSI和传输距离d的关系。A和n的数值易受多种因素影响[4]。此种测距方法需确定A和n两个常数值,实现过程较复杂。
本文采用的RSSI测距原理:由于当发射节点设置不同的发射功率情况下,接收节点收到的RSSI与信号传输距离d的线性范围不一样,因此,在特定的环境中,可以通过改变发射节点的发射功率,来调节RSSI与信号传输距离呈线性关系的范围,根据接收节点接收到的不同距离处的RSSI,拟合出一个适用于此特定环境的函数表达式,可以将接收到的RSSI转化为距离[5]。
1.1.2 本文获取RSSI值算法
假设 Mi(i=1,2,…,n)为未知节点,Nj(j=1,2,…,n)为固定节点,为固定节点Nj接收到未知节点Mi的RSSI,针对一个固定节点,一组采集十次,获取10个RSSIij,由小到大排序得到:RSSIij1,RSSIij2,…,RSSIij10,然后求得这组数据的中值mid(RSSIij),为了去除掉那些因环境因素影响严重的RSSI,在这里,取一个门限值β,令
取出落在mid(RSSIij±β)的RSSI,然后求出其均值,即为RSSIij值。
1.2 极大似然估计法定位算法[6]和本文定位优化算法
1.2.1 极大似然估计法定位算法
在无线传感器网络定位算法中,如果知道移动节点与参考节点之间距离个数不小于3个时,可使用极大似然估计法来定位。
极大似然法的原理如图1所示。假设1,2,3,…,n个参考节点的坐标分别为 (xi,yi)(i=1,2,…,n),它们到移动节点的距离分别为di(i=1,2,…,n),设移动节点P的坐标为(x,y)。
图1 极大似然法原理图
可得到
依次从第一个方程减去第n个方程得到
则式(4)可以用线性方程AX=b表示,其中
使用最小均方差得节点P的坐标为
1.2.2 本文定位优化算法
假设有m(m≥4)个固定节点,令p=C4m,则可获得p 个定位的坐标分别为 N1=(x1,y1),N2=(x2,y2),…,Np=(xp,yp)。在这p个定位坐标中,可能有的定位坐标偏差比较大,为了删除掉那些偏离大多数定位坐标的坐标值,保留差别不大的坐标值。需要设置一个权值阈值,如式(9)所示
式中:k=1,2,…,p;wk愈小,说明第k个定位坐标值愈接近其余(p-1)个定位坐标值;反之,当wk愈大,说明第k个定位坐标值愈远离其余(p-1)个定位坐标值。因此,可以设置一个阈值W,若wk≤W,则保留相对应的定位坐标值Nk;反之,若wk>W,则删除掉相对应的定位坐标值Nk。
假设经过阈值判断,保留了q个坐标值。然后根据这q个坐标的权值,求出其均值,如式(10)所示
2 利用LabVIEW软件开发的上位机
这部分主要完成数据采集、定位算法和定位结果显示界面。
2.1 程序流程
程序流程图如图2所示,先判断帧头正确之后,接收来自5个基站发送的数据,提取出RSSI。先利用生产者循环存RSSI,然后通过消费者循环读数据并存入数组,数组元素达到50个时,利用抽取数组子程序,得到各个基站发送的10个RSSI,然后,通过中值和均值过滤,获得RSSI,带入拟合公式,再利用本文定位优化算法求出定位坐标并显示。
图2 程序流程图
2.2 前面板部分
前面板如图3所示,需配置基站的坐标值。
图3 坐标显示界面(截图)
3 相关实验、实验结果及误差分析
3.1 相关实验
在实验阶段,首先为了保证试验模块的一致性,减少实验误差。采用的方法是在可视距离内,接收模块固定不变,别的被测模块在4个方向不同距离处,进行多次测量取均值,根据最终测得的RSSI来选择出具有一致性的试验模块。
其次,选择合适的DataRate,全向天线和读取一帧数据的时间等,经过实验测试,设置的DataRate是250 kbit/s,全向天线的增益是0 dBm,读取一帧数据的时间为20 μs。
当这些试验参数都确定的情况下,在室内可视范围内,使用那些具有一致性的无线模块,通过在1~6 m,间隔为0.5 m,每个位置取值10次,在不同发射功率的情况下,利用先排序、滤波再取均值的方法获得RSSI,通过MATLAB把RSSI与距离值进行拟合之后的图像如图4所示。
图4 RSSI与距离的拟合图
拟合的一次函数表达式如式(11)所示定位实验部分:在室内,2 m高的平面内,布置了5个固定节点,5个固定节点的ID号及坐标分别为:01#(2.5,0);02#(0,1);03#(0,4);04#(2.5,5);05#(4.5,2.5),并且固定节点之间可视。
3.2 实验结果
实验结果见图5。
图5 实验测得结果①
3.3 误差分析
设R为通信半径,经过实验测得R为70 m。误差的计算公式如式(12)所示
定位误差比较结果见表1。
表1 定位误差比较
4 结论
本文在获得RSSI时采用先排序、再滤波进而取均值的方法,抑制了那些因多径效应、反射而读到的错误数据,提高了获取RSSI的精度;在5个固定节点获得未知节点的RSSI之后,定位的方法采用了基于极大似然估计法加权取均值的定位优化算法,与极大似然估计算法相比较,提高了定位的精度。但仍然存在一些需要改进的地方,比如可以增加固定节点数目、调整更为理想的参数,使得获取RSSI的速度更快、更准确。另外,上位机部分也需要改进,这些都会在以后的研究中进一步完善。
[1]瞿雷.Zigbee技术及应用[M].北京:北京航空航天大学出版社,2007.
[2]孙利民.无线传感器网络[M].北京:清华大学出版社,2005.
[3]雷振山.LabVIEW高级编程与虚拟仪器工程应用[M].北京:中国铁道出版社,2009.
[4]CEYLAN O,TARAKTAS K F,YAGCI H B.Enhancing RSSI technologies in Wireless sensor networks by using Different frequencies[C]//Proc.the Fifth International Conference on Broadband and Wireless Computing,Communication and Applications,BWCCA 2010.Fukuoka,Japan:Fukuoka Institute of Technology,2010:369-372.
[5]YAN Jiajun.Neighbour discovery for transmit power adjustment in IEEE 802.15.4 using RSSI[D].Chengdu:Sichuan University,2011.
[6]XU Riming.Study on RSSI-based indoor wireless location program[D].Nanjing:Nanjing University of Aeronautics and Astronautics,2010.