三边测量法,分步定位法比较
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
通信专业课程设计一
太原科技大学
课程设计(论文)
设计(论文)题目:基于RSSI的三边测量法和分步定位法在ZigBee定位系统中的研究及比较
姓名鲁骥
学号 ************
班级通信101501
学院电子信息工程学院
指导教师郑秀萍
2013年 12 月 20 日
太原科技大学课程设计(论文)任务书
学院(直属系):电子信息工程学院时间: 2013年11月25日
基于RSSI的三边测量法和分步定位法在ZigBee
定位系统中的研究及比较
摘要
目前无线定位技术是Zigbee无线传感器网络研究的热点问题之一,随着定位需求与应用的增加,如何提高基于Zigbee技术的无线定位系统的定位精度是Zigbee无线传感器网络领域亟待解决的问题。
在三边测量法分析基础上,提出一种新型分步定位法。
通过利用待测移动节点最近的3个参考节点可快速计算出移动节点的坐标值,从而使定位算法更容易实现。
通过matlab 平台仿真,结果表明,分步定位法在不增加任何硬件成本的前提下可显著减小定位误差,提高定位精度。
与三边测量法相比,分步定位法可广泛应用于各种基于RSSI的定位场合。
关键词:ZigBee;RSSI( 接收信号强度指示);三边测量法;分步定位法
目录
摘要 (I)
第1章绪论 (1)
第2章基于RSSI算法的三边测量法和分步定位法 (2)
2.1三边测量法和分步定位法概述 (2)
2.2基于测距的RSSI算法 (2)
2.2.1 RSSI算法原理 (2)
2.2.2 RSSI算法原理的实现 (3)
2.3基于RSSI的三边测量法和分步定位法 (3)
2.3.1 基于RSSI的三边测量法 (3)
2.3.2 基于RSSI的分步定位法 (4)
第3章三边测量法和分步定位法仿真及分析比较 (6)
3.1实验过程 (6)
3.2实验结果分析 (8)
3.3总结 (8)
参考文献 (9)
附录 (10)
附录一:三边测量法仿真程序 (10)
附录二:分步定位法仿真程序 (10)
第1章绪论
ZigBee 技术是短距离无线通信中的一种技术,人们已经利用它解决了许多实际的问题。
该技术具备很多优点和几个突出的优势:
(1)低功耗。
ZigBee节点的电池工作时间可以维持半年到两年。
(2)低成本。
ZigBee技术不仅数据传输量小而且速率低,因此成本得到大幅度降低,另外ZigBee协议相对简单并且是免费的。
(3)高可靠性。
使用了CSMA/CA机制,避免数据发送时发生争用信道。
(4)低传输速率。
数据传输速率最大只有250kbit/s,最小是仅为lOkbit/s。
(5)大容量网络。
最多能够支持65000个节点。
(6)短时延性。
ZigBee设备搜索时延和通信时延都很短。
(7)安全性高。
提供AES(高级加密标准)-128加密算法,具备数据完整性认证功能。
以ZigBee无线传感为基础的无线传感网,在实际应用时经常需要对网络中存在的移动节点进行位置判断。
无线传感网不同于传统的无线定位系统,由于低功耗、低成本的要求,这种定位计算要求使用的网络通信开销尽可能小,对硬件设备的要求尽可能低。
因此需要一种针对ZigBee无线传感网络特点的定位算法来解决这个问题。
常用的基于ZigBee的定位算法分为:基于测距的定位算法和基于非测距的定位算法。
常用的基于测距的定位算法有:基于接收信号强度测量法(RSSI)、到达时间测量法(TOA)、到达时间差测量法(TDOA)和到达角度测量法(AOA)。
常用的基于非测距的定位算法有:质心算法、凸规划法、网络多跳路由算法(DV-hop)。
这两类算法各有优缺点:基于测距的定位算法精度较高,但是对硬件要求也高,功耗大,算法处理复杂,不适合大规模应用的 ZigBee 传感网络。
而基于非测距的定位算法较简单,实现成本低,相对而言功耗也低,非常适合大规模的应用的ZigBee无线传感网络,但是精度较低,对网络节点依赖度高。
其中,基于RSSI的三边测量法是定位技术的基本模块之一,三边测量法使得每个移动节点利用三个或三个以上的参考节点即可定位,但是定位精度不高。
分步定位算法只需要3个参考节点,定位精度比较好,但是在功耗和成本方面比较大,该算法避免了采用三边测量法可能无解的情况,使得其适应性更强。
本文研究了基于RSSI(Received Signal Strength Indication,接收的信号强度指示)的三边测量法和分步定位算法,并在MatLab平台对其进行研究及比较。
在相同条件下,分步定位算法可显著减小定位误差。
第2章基于RSSI算法的三边测量法和分步定位法
2.1 三边测量法和分步定位法概述
三边测量法是基于RSSI原理,选择三个或三个以上的参考节点,相互连接成若干个三角形,构成各种网(锁)状图形。
通过观测三角形的边长,再根据参考节点的坐标,起始边的边长和坐标方位角,经解算三角形和坐标方位角推算可得到三角形各边的边长和坐标方位角,进而有直角坐标正算公式计算移动节点的平面坐标。
分步定位算法是基于RSSI原理,通过利用待测移动节点最近的 3个参考节点可快速计算出移动节点的坐标值,从而使定位算法更容易实现实验结果表明,该方法在不增加任何硬件成本的前提下可显著提高定位精度并增强系统稳定性,同时降低环境噪声带来的测量误差与常规定位算法相比,该算法可广泛应用于各种基于距离的定位场合。
2.2基于测距的RSSI算法
基于测距的定位技术需要测量参考节点到移动节点之间的距离,然后根据几何三边定位算法,两角一边定位算法计算移动节点坐标。
测量误差的大小将直接影响最后计算出的移动节点坐标。
基于非测距的定位技术在计算移动节点坐标时,不需要事先测量到参考节点的距离,而是通过移动节点与参考节点的网络拓扑关系来估算移动节点坐标。
这种方式由于少了距离测量这个步骤,对网络节点硬件要求大大降低。
但是由于是估算,定位精度一般不如基于测距的定位算法。
在节点定位中,涉及到两类重要的节点,即参考节点和移动节点。
它们的本质区别在于节点在加入网络之前能否知道自己的坐标位置,参考节点是知道的,而移动节点不知道,移动节点只能借助参考节点和网络中其它的参数来计算自己的坐标位置。
2.2.1 RSSI算法原理
RSSI(Received Signal Strength Indication,接收的信号强度指示)是指网络中的移动节点通过测量来自静态的参考节点信号的信号强度来确定自身位置的一种算法。
由移动节点发送定位请求,RF通信范围内接收到定位请求的参考节点自动回应移动节点。
移动节点在能够接收到回应信号中选择三个信号强度最大的信号,提取信号强度并且根据强度判断出自己与系统中三个参考节点之间的距离。
移动节点的轨迹就是以参考节点为圆心,以两种节点之间的距离为半径的圆周上。
三个参考节点就可以确定三条动态轨迹,三条动态轨迹的交点就是移动节点。
该定位算法的基本原理如图2.1所示。
其中SN是参考(静态)节点,DN是移动(动态)节点,r是移动节点到对应参考节点的距离,移动节点的位置就是三个圆的交点。
图2.1 RSSI定位算法示意图
2.2.2 RSSI算法原理的实现
zigbee定位系统采用基于RSSI的技术,定位系统由协调器节点,参考节点和移动节点组成。
协调器节点用串口线与PC连接,负责将接收到的信息发送到PC处理。
移动节点从参考节点处接收数据包信号,获得参考节点位置坐标及相应的RSSI值并将其送入定位引擎,然后可以读出由定位引擎计算得到的自身位置。
由参考节点发送给移动节点的数据包至少包含参考节点的坐标参数(X,Y),而RSSI值可由接收节点计算获得。
RSSI的理论值可表示为:
RSSI=−(10n∙lgd+A) (2−1)式2-1中,射频参数 A和n用于描述网络工作环境。
在全向模式下,射频参数A被定义为以 dBm(分贝毫瓦)为单位表示的距发射端 1m处接收到的信号强度绝对值。
如信号强度为-40dBm,那么参数n被定为40定位引擎的期望。
参数 A 为30.0~50.0,精度为0.5。
A的一个典型值为 40.0。
d 为节点之间的距离。
n的取值范围为15~25。
2.3基于RSSI的三边测量法和分步定位法
2.3.1 基于RSSI的三边测量法
三边测量法的原理如下图2.2所示,以三个节点A、B、C为圆心作圆,坐标分别为(X a,Y a),(X b,Y b),(X c,Y c),这三个圆周相交于一点D,交点D即为移动节点,A、B、C即为参考节点,A、B、C与交点D的距离分别为d a,d b,d c。
假设交点D的坐标为(X,Y)。
图2.2 三边测量法示意图
{√(X−X a)2+(Y−Y a)2=d a
√(X−X b)2+(Y−Y b)2=d b
√(X−X c)2+(Y−Y c)2=d c
(2−2)
由式2-2可以得到交点D的坐标为:
(X
Y
)=(
2(X a−X c) 2(Y a−Y c)
2(X b−X c) 2(Y b−Y c)
)
−1
(
X a2−X c2+Y a2−Y c2+d c2−d a2
X a2−X c2+Y b2−Y c2+d c2−d b2
) (2−3)
三边测量法的缺陷是:由于各个节点的硬件和功耗不尽相同,所测出的距离不可能是理想值,从而导致上面的三个圆未必刚好交于一点,在实际中,肯定是相交于一个小区域,因此利用此方法计算出来的(X,Y)坐标值存在一定的误差。
这样就需要通过一定的算法来估计一个相对理想的位置,作为当前移动节点坐标的最优解。
2.3.2 基于RSSI的分步定位法
分步定位法测量原理如图2.3所示:
图2.3 分步定位法测量原理图
分步定位法的步骤如下:
1.分别以参考节点 A ,B 为圆心,以测得的参考节点与移动节点之间的距离RA ,RB
为半径画圆,这两圆的位置可能出现以下3种情况: 两圆相离,没有交点;两圆相切,有
一个交点; 两圆相交,有两个交点。
2.两圆相离时,则判定以参考节点A ,B 为圆心,定位出的移动节点O 的AB 相关位置
OAB 在线段AB 上,且两线段长度|AOAB|:|OABB|=RA :RB ;当两圆相切时,则判定以参考
节点A ,B 为圆心,定位出的移动节点 O 的AB 相关位置 OAB 就是该切点; 当两圆相交时,
则根据参考节点C 的坐标和RC 作方向参考,可以确定出其中一个交点为相对合适的移动
节点O 的AB 相关位置OAB 。
3.再分别以参考节点A ,C 为圆心,参考节点B ,C 为圆心,重复步骤1,2可分别确
定出移动节点O 的AC 相关位置OAC ,以及移动节点O 的BC 相关位置OBC 。
4.理想状态下OAB ,OAC ,OBC 相交于一点,则该交点即为移动节点O 的实际位置坐标。
5.当OAB (X AB ,Y AB ),OAC (X AC ,Y AC ),OBC (X BC ,Y BC )不重合时,求出△OABOACOBC 的中
心坐标作为移动节点O (X,Y )的实际位置坐标。
O (X,Y )的坐标值可通过方程2-4求得。
{X =X AB +X AC +X BC 3Y =Y AB +Y AC +Y BC 3
(2−4) 采用分步定位法测量一个移动节点的位置,只需要3个参考节点。
该定位法还避免了
采用三边测量法可能无解的情况,使得该方法的适应性更强。
另外,分步定位法分别计算
OAB ,OAC ,OBC 的坐标,然后计算出移动节点O (X,Y )的坐标,可以将由于环境噪声所带来
的误差相抵消,达到提高定位精度的目的。
第3章三边测量法和分步定位法仿真及分析比较
3.1 实验过程
两种定位算法的MatLab定位程序说明(MatLab7.10.0下):
一、由三个文件组成,分别是
(1)triposition.m
(2)find_three_p.m
(3)locac3.m
设置参数:坐标系为(-50,100)(-50,100)。
三个参考节点坐标为(8,50),(30,10),(50,50)。
随意选定一个移动节点,对该节点进行七次定位,求出定位误差。
分步定位法
图3.1 分步定位法的定位效果图
图3.2 分步定位法的定位误差图
由图3.1和3.2可以看出:分步定位法的定位效果较为准确,定位误差小。
图3.3 三边测量法的定位效果图
012
3
4567
-20
-10
10
20
30
40
50
x/误差率
y /误差
-500
50
100
三边测量法
图3.4 三边测量法的定位误差图
由图3.3和3.4可以看出:三边测量法的定位效果不够准确,定位误差较大。
3.2 实验结果分析
以上分别采用三边测量法,分步定位法进行定位实验,由图可以看出:
1.采用三边测量法测得移动节点的位置坐标比较分散,与实际位置坐标偏离较远。
这是因为,三边测量法是最简单的一种定位算法,但是正因为简单,算法没有相应的去除噪声的机制,诸多噪声的叠加会严重影响定位精度。
2. 采用分步定位法得出的数据与实际坐标值较接近。
这是因为分步定位法首先选取离待测移动节点最近的3个参考节点,分别利用这3个参考节点中的2个,求出移动节点的3个相关位置OAB ,OAC ,OBC ,求出△OABOACOBC 的中心,即移动节点O 的坐标值。
这种方法不仅减小了三边测量法中环境噪声带来的测量误差,而且降低了对硬件资源的要求,提高了定位精度,且增强了系统稳定性,可广泛应用于各种基于距离的定位场合。
3.3 总结
ZigBee 技术是一种低成本,低功耗,低复杂度的无线通信技术,广泛应用于各种场合的定位系统中。
分析了常用的三边测量算法,并总结了此算法的优缺点。
提出了分步定位法,并通过实验对该算法进行了验证。
实验结果表明,该算法在不增加任何硬件成本的前提下,减小了环境噪声带来的测量误差,提高了定位精度。
具有一定的实际应用价值。
012
34567
-20
-10
10
20
30
40
50
x/误差率
y /误差
参考文献
[1] 孙妍,基于ZigBee的井下人员管理系统的设计[D].上海:上海交通大学,2009.
[2] 梁维斌,基于ZigBee的无线传感器网络技术研究[D].上海:上海大学,2007.
[3] GuoqiangMao,BarisFidan,Briand.O.Anderson.Wirelesssensornetwork localization techniques[J].Computer Networks,2007,51(10):2529-2553.
[4] Priyantha NB,Chakraborty A,Balakrishnan H.The cricket location support system.In:Proc.of the 6th Annual IntlConf.on Mobile Computing and Net working.Boston :AC MPress.2006 :32-43P.
[5] 任小洪,乐英高.ZigBee技术在物联网系统中的应用研究[J].单片机与嵌入式系统应用,2011:23-27.
[6] 任小洪,乐英高,徐卫东,周天鹏.无线传感agBee技术在物联网中的应用[J].电子技术应用,2011:45-49.
[7] 李万昌.基于ZigBee的WSN定位技术研究[D].北京:北京理工大学,2011.
[8] 陈昌祥,达维,周洁.基于RSSI的无线传感器网络距离修正定位算法[J],通信技术,2011,44(2):65-67.
[9] 张橙,宋学瑞.基于ZigBee的RSSI测距方法精度研究[J].湖南工业大学学报,2011,25(5):37-41.
[10] 王小平,罗军,沈昌祥.三边测量法的结果稳定性研究[J].计算机工程与科学,2012,34(6):12-17.
附录
附录一:三边测量法仿真程序
clear all
disp('三边测量法')
x=[8 30 50]
y=[50 10 50]
plot(x,y,'o')
axis([-5 65 -5 65])
hold on
[x0,y0]=ginput(1)
plot(x0,y0,'g:o')
axis([-5 65 -5 65])
distance=[0 0 0]
for i=1:3
distance(i)=sqrt((x(i)-x0)^2+(y(i)-y0)^2)
end
error=rand(1,3)-0.3
for j=1:7
distance=distance-distance.*(error*j/7); %误差控制
aa=inv(2*([x(1)-x(3) y(1)-y(3);x(2)-x(3) y(2)-y(3)]))
bb=[x(1)^2-x(3)^2+y(1)^2-y(3)^2+distance(3)^2-distance(1)^2;x(2)^2-x(3)^2+y(2)^2-y(3)^2+ distance(3)^2-distance(2)^2]
cc(j,:)=(aa*bb)' %计算并存放估算位置
plot(cc(j,1),cc(j,2),'+')
axis([-50 100 -50 100])
e(j)=sqrt((cc(j,1)-x0)^2+(cc(j,2)-y0)^2) %求出误差
end
legend('参考节点','移动节点','三边测量',4) %标出图例
s='三边测量法' %书写图名
title(s)
hold on
figure
rate=1:1:7
plot(rate,e,'g:*')
xlabel('x/误差率') %是xlabel,x-l-a-b-e-l
ylabel('y/误差')
axis([0 7 -20 50])
hold on
附录二:分步定位法仿真程序
clear all
disp('分步定位法')
x=[8 30 50]
y=[50 10 50]
plot(x,y,'o')
axis([-5 65 -5 65])
hold on
[x0,y0]=ginput(1)
plot(x0,y0,'g:o')
axis([-5 65 -5 65])
distance=[0 0 0]
fori=1:3
distance(i)=sqrt((x(i)-x0)^2+(y(i)-y0)^2)
end
error=rand(1,3)-0.3
for j=1:7
distance=distance-distance.*(error*j/7); %误差控制
aa=inv(2*([x(1)-x(3) y(1)-y(3);x(2)-x(3) y(2)-y(3)]))
bb=[x(1)^2-x(3)^2+y(1)^2-y(3)^2+distance(3)^2-distance(1)^2;x(2)^2-x(3)^2+y(2)^2-y(3)^2+ distance(3)^2-distance(2)^2]
cc(j,:)=(aa*bb)' %计算并存放估算位置
plot(cc(j,1),cc(j,2),'+')
axis([-50 100 -50 100])
e(j)=sqrt((cc(j,1)-x0)^2+(cc(j,2)-y0)^2) %求出误差
end
legend('参考节点','移动节点','分步定位',4) %标出图例
s='分步定位法' %书写图名
title(s)
hold on
figure
rate=1:1:7
plot(rate,e,'g:*')
xlabel('x/误差率') %是xlabel,x-l-a-b-e-l
ylabel('y/误差')
axis([0 7 -20 50])
hold on。