物联网定位技术实验DV-Hop报告.docx_第1页
物联网定位技术实验DV-Hop报告.docx_第2页
物联网定位技术实验DV-Hop报告.docx_第3页
物联网定位技术实验DV-Hop报告.docx_第4页
物联网定位技术实验DV-Hop报告.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

物联网定位技术实验报告 物联网定位技术实验报告 -DV-Hop 姓名学号:专业班级:物联网工程指导老师: 完成时间:20170425 目录实验一常用无线传感器网络定位算法实现与比较11实验背景12.实验目的13.使用的工具14.DV-Hop算法基本思想与基本原理15.实验详细设计1实验一常用无线传感器网络定位算法实现与比较1实验背景 DV-Hop定位机制由美国路特葛斯大学的Dragos Niculescu等人提出的,DV-Hop算法是为了避免对节点间的距离直接进行测量而提出的一种基于距离矢量路由(根据目的地远近决定最好路径)的非测距定位算法。非常类似于传统网络中的距离向量路由(从相邻站点收集网络列表,来路由选择)机制。2实验目的2.实验目的1. (课堂完成)掌握典型的无线传感器网络定位算法基本原理,理解所讲 的迭代式多边定位算法、DV-HOP算法、PDM定位算法、基于MDS的定位算法;2. (实验完成)利用所给的网络数据,实现两种以上的定位算法并进行比较。3.使用的工具与语言 工具:Visual studio语言:C#4.DV-Hop算法基本思想与基本原理(1)通过距离矢量路由方法使未知节点获得与信标节点之间的最小跳数(2)并计算出每跳的平均距离,然后以每跳平均距离和最小跳数的乘积作为未知节点与信标节点之间的估计距离,(3)再利用多边测量法获得未知节点的位置估算。5.实验详细设计 5.1本实验用到的基本数据类型Node(int NodeId,double x, double y,int isBeacon) /节点类 NodeId节点id X,y 节点的坐标 isBeacon 是否为锚节点List NodeList 保存节点的信息Dictionary hopCountTable 保存着路由信息double, d = new double288, 32; - 锚节点i与锚节点j之间的实际距离pathb, c 表示两点之间的跳数double avg -以锚节点i为基准,计算出的平均每跳距离本实验用到的计算方法是极大似然估计法double, A = new double31, 2; - 表示如下A的信息double B = new double31; - 表示如下B的信息double C = new double2; - 表示如下X的值 5.2本实验用到的一些函数public static void Floyd(int, path, int n)/找出两点最小跳数public static double AvgHopSize(List list)/计算每跳的平均距离public static void Multilateration(double, A, double B, double C)/多变定位本实验分四大阶段:第 1 阶段:读取信息-读取net1_pos.txt中的节点数据并存入List NodeList中,读取net1_topo-error free.txt中的节点距离数据,并存入string num中。共有32个锚节点,288个普通节点。代码如下 foreach(string line in File.ReadAllLines(net1_pos.txt) string temp = Regex.Replace(line.Trim(), s+, );/匹配空格的正则表达式 string num = temp.Split( );/将“ “去掉,并将temp转化为数组 Node tempNode = new Node(int.Parse(num0), double.Parse(num1), double.Parse(num2), int.Parse(num3); NodeList.Add(tempNode); foreach(string line in File.ReadAllLines(net1_topo-error free.txt) string temp = Regex.Replace(line.Trim(), s+, ); string num = temp.Split( ); pathint.Parse(num0), int.Parse(num1) = 1; pathint.Parse(num1), int.Parse(num0) = 1; 第2阶段:每个参考节点利用其它参考节点的位置信息和相隔最小跳数来计算平均每跳距离,并将其作为一个校正值广播至网络中。当接收到校正值后,节点根据跳数计算与参考节点之间的距离。这里用到个方法。找出两点最小跳数的Floyd(path, 320); 计算每跳的平均距离的AvgHopSize(list);这两个方法的代码如下:public static void Floyd(int, path, int n)/找出两点最小跳数 for (int a = 1; a = n; a+) for (int b = 1; b = n; b+) for (int c = 1; c = n; c+) pathb, c = Math.Min(pathb, c, pathb, a + patha, c); public static double AvgHopSize(List list)/计算平均每跳距离 double distance=0.0; int size = 0; for (int i = 0; i list.Count; i+) for (int j = i + 1; j list.Count; j+) distance += Math.Sqrt(listi.realX - listj.realX) * (listi.realX - listi.realX) + (listi.realY - listj.realY) * (listi.realY - listj.realY); size += listi.HopCountTablej + 1; double avg = distance / size; return avg; 第3阶段: 当未知节点获得与3个或更多参考节点的距离时,根据极大似然估计法来计算未知节点的位置。 在使用极大释然估计法来计算未知节点之前,准备如下: 求出A:令 点list0的x坐标为Xn,y的坐标为Yn。得到如下 double, A = new double31, 2; for (int j = 0; j 31; j+) Aj, 0 = 2 * (list0.realX - listj + 1.realX); Aj, 1 = 2 * (list0.realY - listj + 1.realY); 求出B用跳数*平均距离avg得到d,再由节点的x,y坐标的平方根据可得代码如下 double, d = new double288, 32; for (int j = 0; j NodeList.Count - 32; j+) for (int i = 0; i 32; i+) dj, i = (NodeListj + 32.HopCountTablei + 1 * avg) * (NodeListj + 32.HopCountTablei + 1 * avg); double B1 = new double31; for(int j=0;j31;j+) B1j = (NodeListj + 1.realX) * (NodeListj + 1.realX) + (NodeListj + 1.realY) * (NodeListj + 1.realY) - (NodeList0.realX) * (NodeList0.realX) - (NodeList0.realY) * (NodeList0.realY); double, B2 = new double288, 31; for (int j = 0; j NodeList.Count - 32; j+) for (int i = 0; i 31; i+) B2j,i = dj, i + 1 - dj, 0; double B = new double31; double C = new double2; for (int j = 0; j NodeList.Count - 32; j+) for (int i = 0; i 31; i+) Bi = B2j, i - B1i; 由极大似然估计法公式计算可得普通节点的坐标值根据C#的预定义函数可得如下代码:其中C , 中存着普通节点的坐标值public static void Multilateration(double, A, double B, double C)/最大释然估计法 var matrixA =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论