- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
中南大学
信息科学与工程学院
物联网定位技术实验报告书
实验名称:网络定位算法研究
成员:董嘉伟
指导老师:张士庚
完成时间:2013-6-1
目录
实验目的
实验设备
实验要求
实验背景
实验原理
实验实现〔局部〕
实验结果展示及分析
实现小结
一、实验目的
掌握常用网络定位算法,并能够独立完成和实现。
二、实验设备
硬件:计算机
软件:VS2012、C#4.0
三、实验要求
在给定的两个网络中,编程实现前面所讲的定位算法
选择至少两个定位算法进行实现
计算所得的定位结果的误差
对不同定位算法的效果进行分析比拟
撰写实验报告
扩展:考虑距离测量有误差的情况?
实验背景
无线传感器网络(WSN)定位问题在军事、楼宇自动化、跟踪与监测等方面都有广泛的应用,一直是WSN的技术热点之一。尽管全球无线定位系统(GPS)提供了很好定位手段,并在很多方面发挥着重要的作用,但也存在着一些缺乏。比方:GPS不适合于室内环境定位,其能量消耗将减少传感器节点的生存寿命,GPS及其天线增大了节点的体积等,
因此GPS并不适用于无线传感器网络。针对无线传感器网络开展专门的不依赖于GPS的定位研究〔特别是分布式定位算法〕,具有重要的意义。
很多学者研究了无线传感器网络节点精确定位问题,提出了许多有效的算法。这些算法依据是否计算节点间的距离,可分为距离无关定位算法和距离相关定位算法。距离无关定位算法如最小包含圆算法、DV-Hop(distancevector-hop)算法、多向度量法(MDS)等。这些方法大多通过几何方法实现,依赖于网络的拓扑结构,从而影响了定位精度。距离相关定位算法一般先通过某种测距方法确定未知节点与初始锚节点的距离,然后根据这个距离利用三边关系、多边关系或边角关系等确定未知节点的位置。测距方法有到达时间法(TOA)、到达时间差法(TDOA)、接收信号强度法(RSSI)等。距离相关定位算法的定位精度依赖于测距的准确性,其测距误差可用测距的百分比来衡量。依据到初始锚节点的跳数可以分为单跳定位和多跳定位,单跳定位算法如APIT定位算法,到达角定位算法[10]等。多跳定位算法如DV-Hop(distancevector-hop)算法、迭代多边定位(iterativemultilateration)算法等。单跳定位早于无线传感器网络的出现,是多跳定位的根本技术。
实验原理
当网络的连通性较好时(每个节点至少有3个邻居节点),设盲节点(xi,Yi)的周围有k个参考节点(x1,y1),(x2,y2),(x3,y3)…(x4,Y4),它们与盲节点(xi,yi)的之间的测距离为r,1,r2,r3,…,rk。设(Xi,yi)的估计值为(x0,y0)。参考节点到估计位置距离与测距之间的差异用fi〔x0,y0〕表示:
求解如下最小二乘估计来获得最优的位置估计(x0,y0):
当矩阵A是列满秩时可以得到如式所示的最小二乘解。
迭代多边定位过程如下:首先由预定的锚节点(坐标给定)通过式估计盲节点的坐标,然后将这些已定位的盲节点当作参考节点参与其他盲节点的定位,下一轮得到坐标的盲节点又可以做为参考节点参与其他盲节点的定位。依次类推,式层层迭代运行,对网络中的所有盲节点进行定位(如图1所示)。
图1多边定位迭代运行
在图1中初始锚节点1,节点2,节点3可用来估计节点4的位置,初始锚节点3,节点5,节点6可用来估计节点7的位置,节点4和节点7当做参考节点,和节点6一起估计节点8的位置。当然节点8可以当作参考节点去参与其他盲节点的定位。
实验实现
本次使用C#语言来实现,详细源码看压缩包中工程文件。
节点类Node:
usingSystem;
usingSystem.Collections;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespace网络定位算法比拟
{
classNode//节点类
{
//节点属性
privateintNodeID;//节点ID号
privatedoublerealX;//节点的真实经度
privatedoublerealY;//节点的真实纬度
privateboolIsBasic;//是否为锚节点
privateArrayListarNode=newArrayList();//索引器数组
publicvoidsetID(intid)
{
this.NodeID=id;
}
publicintgetID()
{
returnthis.NodeID;
文档评论(0)