ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:34.20KB ,
资源ID:4749097      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4749097.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(中南大学物联网定位实验报告.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

中南大学物联网定位实验报告.docx

1、中南大学物联网定位实验报告物联网定位技术实验报告学生姓名关华学 号01专业班级物联网工程1301班指导老师张士庚学 院信息科学与工程学院完成时间2016年6月 实验一 Wi-Fi指纹定位系统的实现与性能评价1. 实验目标通过实现一个基于Wi-Fi指纹的室内定位系统,掌握指纹定位的原理和实现方式,并进行测试,对所实现的指纹定位系统的误差性能进行评价。2. 实验背景WIFI位置指纹定位技术是基于接收信号传播特性而进行定位的,与传统定位技术相比,其无需额外添加设备来进行角度测量与时间同步,且充分利用了己有W1FI无线网络,降低其使用成本。其次,WIFI位置指纹定位技术与传统室内定位技术(如:视频信号

2、与红外定位)相比,其扩展性更强、应用范围更广。由于WIFI信号传输时受非视距、多径衰落等因素影响较小,故基于WIFI网络的指纹定位系统稳定性较强,而基于红外或视频信号定位技术在使用时较易受限,比如:在阳光直射或突光照射下基于红外技术定位的精度将大大降低,而基于视频信号的定位技术使用前提是移动终端必须在可视条件下。在城市人口居住密集的今天,由于室内与地下的无线基站信号较弱,现有主流定位技术GPS、AGPS、Google Map等在室内与地下定位时均存在盲区,且定位精度不高,而WIFI位置指纹定位技术可通过WIFI网络中的AP进行定位,避免了对无线基站网络的依赖,从而实现了地下或室内环境的准确高效

3、定位,其在地下室内商场、停车场、物流等行业均具有潜在应用价值。3. 实验原理 wifi基础知识 W1FI网络的组成结构如下图2-1所示,主要包括了接入点(Access Point,AP)、站点(Station,STA)、无线传输介质(Wirless Medium,WM)与分布式系统(DistributionSystem,DS)。WIFI无线网络工作原理框图 室内定位方法建模 传播模型定位法是根据信号传播距离与衰减的关系进行建模,并通过建立的传播模型将RSS转换成信号的传播距离,从而完成对移动终端的定位。传播模型法在定位时无需额外的硬件设备,故其定位成本很低,且其在定位时不会影响到现有网络数据的

4、传输。 虽然传播模型定位法有以上优点,但由于其定位精度不高导致其应用范围不是很广,目前播模型定位法只应用于粗略定位与测距中,其定位步骤如下:在己知室内环境下,利用接收信号强度估计此环境下的传播模型与参数值;利用中的传播模型,通过获取未知终端节点的RSS来完成对其定位。位置指纹定位法是通过移动终端的RSS与指纹库中的指纹数据进行匹配,然后再通过某种算法来计算其位置。 指纹定位算法 无线信号依赖传播环境,在不同位置上,其信道的多径特征也均不相同。无线信号在传播过程中经反射、折射、散射后,生成与传播环境相关且独特的信号,我们称此多径特征为“位置指纹”。信号的多径特征包括信号强度、脉冲响应时间、信噪比

5、等,本文主要釆用接收AP信号的强度值(即RSS)作为信号指纹特征。位置指纹法在定位过程中分离线/训练与在线/定位两个阶段,其定位流程如下图所示。离线/训练阶段指纹定位在离线阶段主要采集定位场所中各参考点位置上的信号多径特征(信号强度),从而建立位置指纹数据库。在线/定位阶段在实际定位过程中,移动终端首先会接收到周围AP接入点发出的信号特征记为Rss,然后则可遍历指纹数据库对此RSS矢量进行匹配,最后再采取某种指纹定位算法计算出移动终端的位置。常用的指纹定位算法有:最近邻法CNN)、K近邻法(KNN)、K加权近邻法(WKNN)、贝叶斯概率算法、BP神经网络算法等.假设在定位区域中共有L个位置指纹

6、参考点,记为F1,F2,.Fl,其与一组位置坐标L1,L2,.L7一一映射即指纹Fi在定位区域中对应的位置坐标为Li=(Xi,Yi)。在“在线/定位”阶段时,移动终端会接收到周围n个AP热点发送的信号强度矢量,记为S,其中S=(S1,S2,.Sn)。 通过贝叶斯公式计算后验概率: P(Li |S)*P(Li)=P(S)P(S| Li)*P(Li)假设选取参考点是随机的,均匀分布,即P(Li)=1/L。由于在某一位置指纹处,来自每个接入点AP的RSS(接收信号强度)互不相关,所以可以得到:P(S Li)= P(S1 Li) P(S2 Li). P(Sn Li) 观察数据发现某一位置指纹处的接收信

7、号强度服从高斯正态分布,所以可以进行近似模拟。 最后以概率值P(Li S)作为定位区域中指纹参考点的权重,并估计出移动终端的位置。4. 关键代码/* * 计算距离,并且找出最小距离的点和值。 * return */ private Point calculate() minDistance = ; mini = -1; double tempDistance; distance = new double() - 1; Point endPoint = () - 1); for (int i = 0; i () - 1; i+) tempDistance = calculate_Distance

8、(endPoint, (i); distancei = tempDistance; if (tempDistance minDistance) minDistance = tempDistance; mini = i; return (mini); /* * 计算两点之间的距离 * param point1 * param point2 * return */ private double calculate_Distance(Point point1, Point point2) float result = ; String str; Map tempMap1 = new HashMap(

9、); Map tempMap2 = new HashMap(); int i, j; for (j = 0; j j+) for (i = 0; i i+) Iterator iterator = (); while () str = (); if (str) & (str) result += (str) - (str) * (str) - (str); if (str) & !(str) result += (str) - (str) * (str) - (str); if (!(str) & (str) result += (str) - (str) * (str) - (str); r

10、eturn (result); 5. 实验结果 代码调试截图实验界面截图第一次、第二次扫描截图截图 计算结果截图6. 室内定位误差分析由于室内环境比较复杂,信号在室内传播时会受到不同程度的影响,而造成此影响的因素主要有以下三种:非视距传播、多径传播、阴影效应。 非视距传播 由于在信号的发射端与接收端之间的直射路径上存在障碍物,导致无线电波不能在收发两端进行直射传播,而只能通过反射、折射进行传播,由此在接收端测得的信号特征,如信号到达时间、信号强度、入射角、到达时间差等,将无法准确的反映出收发两端之间的真实距离,我们称这种现象为信号的非视距传播。 多径传播 由于信号接收端所处环境复杂,使得发射的

11、电磁波在向外扩散过程中遇到各种障碍物,使得信号在传播过程中受到反射、散射、绕射等影响,导致接收到的信号为多条路径上信号的矢量和。由于每条路径上信号的强度、到达时间、到达载波相位都不相同,则产生多径干扰,这种现象即为多径传播。 阴影效应 阴影效应是指移动终端在移动过程中,有一些大型障碍物阻挡了其无线电波的直射路径,从而导致信号接收区域中存在半盲区,在电磁场中形成了阴影,致使信号接收点场强在终端移动过程中起伏变化,我们称此现象为阴影效应。除以上三种环境客观因素外,指纹定位选取的信号传播模型、定位场景中AP与位置指纹参考点的配置以及选取的定位算法均会影响定位精度。 除此之外,定位温度、方向、移动终端

12、运动状态也均会影响定位精度。 实验二 无线传感器网络定位实验1. 实验目标 了解典型的无线传感器网络定位算法; 在所给的网络中实现所讲授的无线传感器网络定位算法并进行比较。2. 实验要求掌握典型的无线传感器网络定位算法基本原理,理解所讲的迭代式多边定位算法、DV-HOP算法、PDM定位算法、基于MDS的定位算法;利用所给的网络数据,实现两种以上的定位算法并进行比较。3. 算法介绍 基本内容介绍 在本次实验中,共有四个已知的.txt文件,分别命名为:、net1_topo_error_5以及net1_topo_error_10。 其中,文件net1_pos中给出了实验网络中节点的位置数据。每行表示

13、一个节点的位置信息。格式如下: 节点序号 节点x坐标 节点y坐标 是否锚节点(1代表锚节点,0代表待定位节点),比如: 1 1表示节点1, 其真实位置为(,106,2282),该节点是锚节点。再比如: 33 0 表示节点33,其真实位置是,,该节点是待定位节点。利用某种定位算法计算出来待定位节点的位置后,就可以根据真实位置计算该节点的定位误差。 文件 net1_topo_error_free中给出了网络中相邻节点之间的距离信息。每一行表示两个节点之间的距离。格式如下: 节点1序号 节点2序号 节点之间距离测量值。比如: 1 4 表示节点1和节点4可以相互测量出之间的距离,他们之间的距离是 文件

14、net1_topo_error_5和net1_topo_error_10给出的距离分别是增加了5%和10%误差之后的扰动值。 迭代多边定位算法 算法思想:利用已知信标节点和非信标节点的几组对应关系(两点间距离),对非信标节点进行定位。(某个非信标节点只要已知3个及以上信标节点与其距离即可对其进行定位。)定位成功后的非信标节点转换为信标节点,可辅助对其他非信标节点定位。不断迭代定位过程,知道信标节点集合元素个数在前后两次迭代中数量不变,则迭代终止。 前提条件:已知位置的锚节点个数要超过3个;对所有节点来说,在添加完邻接矩阵关系后,是一个连通图,没有孤立节点。 特别说明:因为在使用迭代多边定位算法

15、对未知节点进行定位时需要利用该节点与3个以上信标节点的直线距离,图是连通图但不是全连通图,所以可能会有部分节点无法定位。 DV-HOP算法 算法思想:先用Floyd算法将图的最短路径和每两个节点间的最小跳数表示出来,将特定位置的节点到参考节点的距离用网络中的节点的平均每跳距离和节点之间的跳数乘积表示,使用三角形定位的方法来获得节点的位置节点。 前提条件:已知位置的锚节点个数要超过3个;对所有节点来说,在添加完邻接矩阵关系后,是一个连通图,没有孤立节点。 特别说明:图是否为连通图对于迭代多边算法影响可能不会很大,但是在DV-HOP算法中,如果有孤立节点,则会导致程序出错。 PDM算法 算法思想:

16、PDM算法全称为计算邻近度-距离转换矩阵算法 (Proximity-to-Distance Mapping ),也就是说通过计算节点间的邻近度-距离转换矩阵来给未知节点进行定位,本算法中涉及到: 通过锚节点间协作构建邻近度-距离转换矩阵D=P*T,对于已知的锚节点,它们之间的跳数可以通过Floyd算法计算出来,即可获取关于所有锚节点的跳数矩阵P,而锚节点的坐标已知,其相互之间的距离可以计算出来,即构造了距离矩阵D。利用伪逆技术增强鲁棒性,计算出转换矩阵T: 若锚节点的分布要能较准确的刻画网络拓扑性质,我们可以认为矩阵T也符合网络中的非锚节点。而非锚节点到锚节点的跳数可以用Floyd算出,即P可

17、算出,通过D=T*P可以算出某个点到锚节点的距离,再调用算法一可以算出坐标。 前提条件:已知位置的锚节点个数要超过3个;对所有节点来说,在添加完邻接矩阵关系后,是一个连通图,没有孤立节点。 特别说明:图是否为连通图对于PDM算法影响很大,如果有孤立节点,矩阵运算就不会正确,无法定位。4.算法实现 迭代多边定位算法 第一步:将数据读入内存。利用Matlab中已有的函数load将文件中的内容以矩阵的方式读入内存。Data_post = load();Data_road1 = load(net1_topo-error );Data_road2 = load(net1_topo-error );Dat

18、a_road3 = load(net1_topo-error );culunm_post = size(Data_post); 第二步:判断锚节的个数。tempcount = 0;for i = 1:culunm_post(1) if Data_post(i,4) = 1 tempcount = tempcount+1; endendif tempcount 3 disp(锚节点少于3个,DV-hop算法无法执行); return;end 第三步:初始化距离矩阵,将与锚节点有关的路径读入距离矩阵 先将距离矩阵全部赋值为无穷大,再将每个节点到自身的距离规定为0,在边的信息中,如果有端点为锚节点的

19、,就更新其两点间的距离。 for i = 1:culunm_road(1) if(Data_road(i,1) = anchors_n) matrix(Data_road(i,1),Data_road(i,2) = Data_road(i,3); elseif(Data_road(i,2) = anchors_n) matrix(Data_road(i,2),Data_road(i,1) = Data_road(i,3); end end 第四步:迭代计算 逐一判断每一个非信标节点是否有3个以上锚节点与其相关,如果有3个以上的信标节点与其相关则根据: 其中x,y为未定位的节点的实际位置,(x1

20、,y1),(x2,y2),是已知的锚节点到该未知节点的距离。 根据以上两个矩阵的转换,可以求得:,其中x为一个一行两列的矩阵,分别表示未知节点定位后的坐标位置x,y。 定位成功后,把该点的标号加入锚节点集合中并从非锚节点集合中删除,并在距离矩阵中加入与该节点相关的边的信息。 不断迭代运行第四步,直至锚节点集合中元素个数不再变化。 核心代码如下: (1)计算未知节点位置point = temp(1,3)2 - temp(1,1)2 - temp(1,2)2;for ii = 2:k-1 A(ii-1,:) = 2*temp(1,1) - temp(ii,1) temp(1,2) - temp(i

21、i,2); b(ii-1,:) = temp(ii,3)2 - temp(ii,1)2 - temp(ii,2)2 - point;endAns = inv(transpose(A)*A)*transpose(A)*b; estimated(j,1) = Ans(1,1);estimated(j,2) = Ans(2,1); (2)更新锚节点、非锚节点集合以及距离矩阵anchors_n_t = anchors_n_t + 1;anchors(anchors_n_t) = j;Locate=find(all = j);all(Locate) = ;for m = 1:culunm_road(1)

22、 if(Data_road(m,1) = j) matrix(Data_road(m,1),Data_road(m,2) = Data_road(m,3); elseif(Data_road(m,2) = j) matrix(Data_road(m,2),Data_road(m,1) = Data_road(m,3); endend 第五步:计算误差,输出结果 DV-HOP算法 第一步:将数据读入内存。利用Matlab中已有的函数load将文件中的内容以矩阵的方式读入内存。 第二步:判断锚节的个数。 第三步:将所有的两点间的距离关系读入距离矩阵for i =1:culunm_road(1) m

23、atrix(Data_road(i,1),Data_road(i,2) = Data_road(i,3); matrix(Data_road(i,2),Data_road(i,1) = Data_road(i,3);endshortest_path = matrix; 第四步:利用最短路径算法求得两点间的最短路径for k=1:nodes_n for i=1:nodes_n for j=1:nodes_n if shortest_path(i,k)+shortest_path(k,j)shortest_path(i,j) shortest_path(i,j) = shortest_path(i

24、,k)+shortest_path(k,j); jump_n(i,j) = jump_n(k,j); end end endEnd 第五步:求每个信标节点的校正值 利用函数:anchor_to_anchor=shortest_path(1:anchors_n,1:anchors_n);for i=1:anchors_n hopsize(i)=sum(sqrt(sum(transpose(repmat(true(i,:),anchors_n,1). - true(1:anchors_n,:).2)/sum(anchor_to_anchor(i,:);End 第六步:未知节点计算位置 先通过距离=

25、跳数*校正值求得未知节点到每个锚节点的距离,再根据最小二乘法计算具体位置。obtained_hopsize=hopsize(find(shortest_path(i,1:anchors_n)=. min(shortest_path(i,1:anchors_n); unknown_to_anchors_dist=transpose(obtained_hopsize(1)*. shortest_path(i,1:anchors_n);A=2*(estimated(1:anchors_n-1,:)-repmat(estimated(anchors_n,:),. anchors_n-1,1);anch

26、ors_location_square=transpose(sum(transpose. (estimated(1:anchors_n,:).2);dist_square=unknown_to_anchors_dist.2;b=anchors_location_square(1:anchors_n -1)-. anchors_location_square(anchors_n)-dist_square(1:anchors_n-1)+. dist_square(anchors_n);estimated(i,:)=transpose(Ab); 第七步:计算误差,输出结果 PDM算法 第一步:将数据

27、读入内存。利用Matlab中已有的函数load将文件中的内容以矩阵的方式读入内存。 第二步:判断锚节的个数。 第三步:将所有的两点间的距离关系读入距离矩阵 第四步:利用最短路径算法求得两点间的最短路径,以及最短路径下每对节点的上一跳信息。 第五步:构造节点跳数矩阵P_all 根据上一跳矩阵jump_n,通过循环判断可以得出一个32*320的矩阵P_all,P_all(i,j)表示从第i和点到第j个点最少需要多少跳。for i = 1:nodes_n for j = 1:nodes_n temp_num = last_jump(i,j); while(temp_num=i) P_all(i,j)

28、 = P_all(i,j)+1; temp_num=last_jump(i,temp_num); end endend 第六步:构造PDM算法所需要的各种矩阵 所有锚节点的跳数矩阵P_anchors、锚节点的距离矩阵D_anchors、转换矩阵T、非锚节点到锚节点的跳数P_Nanchors、未知节点到锚节点的距离D_NanchorsP_anchors = P_all(1:anchors_n,1:anchors_n); D_anchors = pdist2(true_anchors,true_anchors); D_anchors = D_anchors(1:anchors_n,1:anchor

29、s_n);T = D_anchors*transpose(P_anchors)*inv(P_anchors*transpose(P_anchors); P_Nanchors = P_all(1:anchors_n,33:320); D_Nanchors = T*P_Nanchors; 第七步:利用最小二乘法估算具体位置 第八步:计算误差,输出结果5.实验结果和分析 迭代多边定位算法1、实验结果(1)无扰动值时的迭代多边定位算法 说明:红色圆圈表示节点实际位置,蓝色圆点表示利用迭代多边定位算法的估计位置。(2)5%误差扰动值时的迭代多边定位算法 说明:红色圆圈表示节点实际位置,蓝色圆点表示利用迭

30、代多边定位算法的估计位置,蓝色连线表示某个节点实际位置与估计位置的误差。(3)10%误差扰动值时的迭代多边定位算法 说明:红色圆圈表示节点实际位置,蓝色圆点表示利用迭代多边定位算法的估计位置,黄色连线表示某个节点实际位置与估计位置的误差。 2、误差分析 三次定位中,误差(方差)分别为:、。 可以看出,随着扰动比例的不断提高,该算法的定位精准度在不断下降。这是由于迭代多边定位算法是通过取N和圆的交点来进行定位的,一旦出现了扰动,将改变两点间的距离,使得用于定位的部分圆半径不正确,出现定位不准确或定位点不合实际的情况。DV-HOP算法1、实验结果 说明:蓝色“*”表示已知点的数据,红色圆点表示无扰动值时估计数据,蓝色圆点表示5%扰动值时估计数据,黄色

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1