摘 要:针对ZigBee技术广泛采用的的三边测量定位方法应用于二维定位的问题,分析其因各节点安装高度不同而产生的误差。为维持ZigBee技术低成本的特点,导出了RSSI值修正条件及RSSI修正值与实测值的函数关系。在不增加算法复杂度的情况下,对由锚节点安装高度不一致造成的误差进行了抑制,并在CC2431模块上实现了改进后的定位算法。结果表明,改进后的定位算法以较小的系统开销提高了定位精度,具有一定的实用性和通用性。
关键词:ZigBee;三边测量;定位;误差;CC2431
ZigBee技术以独特的低成本、低功耗、低速率的特点,而拥有其他无线通信技术所无可比拟的优势。同时在其成本变化不大的情况下,增加硬件定位引擎,仅消耗极小的硬件资源,利用原有网络条件就能实现无线定位,进一步拓展了ZigBee技术的应用。基于到达时间(TOA)、到达时间差(ODOA)、到达角度(AOA)、接收信号强度(RSSI)的定位机制都适用于IEEE802.15.4网络[1]。而基于RSSI的定位机制更符合ZigBee技术低成本的特点,并能满足大部分低精确度定位的要求。
1 三边测量定位
1.1 原始定位方法
图1是一个理想的定位场景,节点1、2、3为已知坐标的锚节点,节点4为需定位的盲节点。定位方法是将由RSSI值换算而来的r1、r2、r3值,及锚节点坐标代入矩阵式(1),求解盲节点坐标值(x,y)。
显然若使式(1)与式(4)的x、y值同解,当且仅当z1=z2=z3=c。由此利用式(1)进行定位计算时,若锚节点安装高度均与盲节点高度相等,则安装高度不会产生xy平面上的定位误差。但在实际应用中,因现场情况限制,锚节点往往安装位置较高,而盲节点手持或安装于移动物体上,因此锚节点与盲节点不可能安装在同一水平面上。此时,式(1)、式(4)有不同解,这将在理论上产生定位误差。
在一定值场景中,如图2中4个锚节点安装高度为3 m,各锚节点在xy轴的投影点组成一边长为8 m的正方形。x轴和y轴均以2 m的步长取计算点,求解式(3)时,采用有约束非线性规划法,求得锚节点与盲节点的高差分别为2 m和3 m时的理论误差分布,如图3所示。由图可知,高差越大,各点误差值普遍增大,这对小空间内的定位准确度造成较大影响。
1.3 算法改进
前述算法出现误差的根本原因在于定位计算时忽略了高差因素δh,CC2431的定位引擎输入参数不包括节点安装高度[4]。但考虑到δh对于二维定位,如得到各锚节点到盲节点的投影距离,仅需在xy平面上进行计算。根据式(3)消去z轴的影响因素。改造式(2)为:
为减少CC2431在进行RSSI值修正时的系统开销,预先代入A、n、δh值等常数逐点计算式(8),得到修正值。盲节点进行修正值计算时,如修正点较少时可采用查表法计算,当各锚节点安装高度不同或修正点较多时则采用多项式拟合法计算。
2 实验对比
本实验场景为长宽为8 m×8 m,净高为3.2 m的室内空间,分别在4个墙角安装锚节点CC2430,安装高度为2.8 m。手持盲节点CC2431距地约0.8 m。以1 m为步长,总计测量81个点位接收到4个RSSI值。由式(7)、式(8)得到修正表,见表1。修正表仅占用58 B的存储空间,本次实验采用查表法进行修正。
为对改进前后的效果进行比较,每次定点测量都连续启动定位引擎两次,并分别输入RSSI(实测值)和RSSI(修正值),将两次得到的定位坐标送至PC,经Matlab处理后,得到改进后与改进前误差的差值表,如表2所示。
由表2可见,改进算法提高了散布在锚节点附近位置的定位精度,对远离锚节点的位置因不满足修正条件,则保持了原算法所得到的定位坐标。较好地解决了要求传输距离尽可能近与近距离时安装高差将产生较大误差之间的矛盾。
本文分析了基于ZigBee的三边测量定位算法在二维定位上,因节点安装高度差产生定位误差的本质原因,并通过Matlab实现了不同高差下理论误差的对比。提出了抑制该误差的RSSI修正值方法。最后通过实测对提出的方法进行了验证,体现出RSSI修正值法的有效性。
参考文献
[1] 高守玮,吴灿阳.ZigBee技术实践教程[M].北京:北京航空航天大学出版社,2009.
[2] FARAHANI S. ZigBee wirleless networks and transceivers[M]. USA: Newnes,2008.
[3] 孙佩刚,赵海,罗玎玎,等.智能空间中RSSI定位问题研究[J],电子学报,2007,35(7):1242-1243.
[4] Chipcon Inc.CC2431 Datasheet[S].2006. 5-9.
[5] 王静,张会清.基于ZigBee的无线网络定位技术的研究与实现[J],传感器与微系统,2010,29(2):15-16.