版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
。精选资料,欢迎下载物联网定位技术实验报告学生姓名关华学号0919130121专业班级物联网工程1301班指导老师张士庚学院信息科学与工程学院完成时间2016年6月精选资料,欢迎下载目录TOC\o"1-3"\h\u21720实验一Wi-Fi指纹定位系统的实现与性能评价 18891.实验目标 183182.实验背景 1290293.实验原理 1242553.1wifi基础知识 1119513.2室内定位方法建模 236663.3指纹定位算法 3314264.关键代码 4262025.实验结果 6225396.室内定位误差分析 820480实验二无线传感器网络定位实验 104381.实验目标 10240002.实验要求 10318223.算法介绍 10138383.1基本内容介绍 10643.2迭代多边定位算法 11215743.3DV-HOP算法 11137143.4PDM算法 11230454.算法实现 12128864.1迭代多边定位算法 12154504.2DV-HOP算法 14311264.3PDM算法 16131725.实验结果和分析 1726326迭代多边定位算法 1718607DV-HOP算法 194695PDM算法 2032311三.实验总结 22精选资料,欢迎下载实验一Wi-Fi指纹定位系统的实现与性能评价实验目标通过实现一个基于Wi-Fi指纹的室内定位系统,掌握指纹定位的原理和实现方式,并进行测试,对所实现的指纹定位系统的误差性能进行评价。实验背景WIFI位置指纹定位技术是基于接收信号传播特性而进行定位的,与传统定位技术相比,其无需额外添加设备来进行角度测量与时间同步,且充分利用了己有W1FI无线网络,降低其使用成本。其次,WIFI位置指纹定位技术与传统室内定位技术(如:视频信号与红外定位)相比,其扩展性更强、应用范围更广。由于WIFI信号传输时受非视距、多径衰落等因素影响较小,故基于WIFI网络的指纹定位系统稳定性较强,而基于红外或视频信号定位技术在使用时较易受限,比如:在阳光直射或突光照射下基于红外技术定位的精度将大大降低,而基于视频信号的定位技术使用前提是移动终端必须在可视条件下。在城市人口居住密集的今天,由于室内与地下的无线基站信号较弱,现有主流定位技术GPS、AGPS、GoogleMap等在室内与地下定位时均存在盲区,且定位精度不高,而WIFI位置指纹定位技术可通过WIFI网络中的AP进行定位,避免了对无线基站网络的依赖,从而实现了地下或室内环境的准确高效定位,其在地下室内商场、停车场、物流等行业均具有潜在应用价值。实验原理3.1wifi基础知识W1FI网络的组成结构如下图2-1所示,主要包括了接入点(AccessPoint,AP)、站点(Station,STA)、无线传输介质(WirlessMedium,WM)与分布式系统(DistributionSystem,DS)。WIFI无线网络工作原理框图3.2室内定位方法建模传播模型定位法是根据信号传播距离与衰减的关系进行建模,并通过建立的传播模型将RSS转换成信号的传播距离,从而完成对移动终端的定位。传播模型法在定位时无需额外的硬件设备,故其定位成本很低,且其在定位时不会影响到现有网络数据的传输。虽然传播模型定位法有以上优点,但由于其定位精度不高导致其应用范围不是很广,目前播模型定位法只应用于粗略定位与测距中,其定位步骤如下:①在己知室内环境下,利用接收信号强度估计此环境下的传播模型与参数值;②利用①中的传播模型,通过获取未知终端节点的RSS来完成对其定位。位置指纹定位法是通过移动终端的RSS与指纹库中的指纹数据进行匹配,然后再通过某种算法来计算其位置。3.3指纹定位算法 无线信号依赖传播环境,在不同位置上,其信道的多径特征也均不相同。无线信号在传播过程中经反射、折射、散射后,生成与传播环境相关且独特的信号,我们称此多径特征为“位置指纹”。信号的多径特征包括信号强度、脉冲响应时间、信噪比等,本文主要釆用接收AP信号的强度值(即RSS)作为信号指纹特征。位置指纹法在定位过程中分`离线/训练'与`在线/定位'两个阶段,其定位流程如下图所示。①离线/训练阶段指纹定位在离线阶段主要采集定位场所中各参考点位置上的信号多径特征(信号强度),从而建立位置指纹数据库。②在线/定位阶段在实际定位过程中,移动终端首先会接收到周围AP接入点发出的信号特征记为Rss,然后则可遍历指纹数据库对此RSS矢量进行匹配,最后再采取某种指纹定位算法计算出移动终端的位置。常用的指纹定位算法有:最近邻法CNN)、K近邻法(KNN)、K加权近邻法(WKNN)、贝叶斯概率算法、BP神经网络算法等.假设在定位区域中共有L个位置指纹参考点,记为{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(SLi)=P(S1Li)P(S2Li)P(SnLi)观察数据发现某一位置指纹处的接收信号强度服从高斯正态分布,所以可以进行近似模拟。最后以概率值P(LiS)作为定位区域中指纹参考点的权重,并估计出移动终端的位置。4.关键代码/** *计算距离,并且找出最小距离的点和值。 *@return */ privatePointcalculate(){ minDistance=Double.MAX_VALUE; mini=-1; doubletempDistance; distance=newdouble[totalPoints.size()-1]; PointendPoint=totalPoints.get(totalPoints.size()-1); for(inti=0;i<totalPoints.size()-1;i++){ tempDistance=calculate_Distance(endPoint,totalPoints.get(i)); distance[i]=tempDistance; if(tempDistance<minDistance){ minDistance=tempDistance; mini=i;} } returntotalPoints.get(mini); }/** *计算两点之间的距离 *@parampoint1 *@parampoint2 *@return */ privatedoublecalculate_Distance(Pointpoint1,Pointpoint2){ floatresult=0.0f; Stringstr; Map<String,Integer>tempMap1=newHashMap<String,Integer>(); Map<String,Integer>tempMap2=newHashMap<String,Integer>(); inti,j; for(j=0;j<point2.aps.size();j++){ tempMap2.put(point2.aps.get(j).SSID,point2.aps.get(j).level); } for(i=0;i<point1.aps.size();i++){ tempMap1.put(point1.aps.get(i).SSID,point1.aps.get(i).level); } Iterator<String>iterator=totalAPs.iterator(); while(iterator.hasNext()){ str=iterator.next(); if(tempMap1.containsKey(str)&&tempMap2.containsKey(str)){ result+=(tempMap1.get(str)-tempMap2.get(str)) *(tempMap1.get(str)-tempMap2.get(str)); } if(tempMap1.containsKey(str)&&!tempMap2.containsKey(str)){ result+=(tempMap1.get(str)-minLevel.get(str)) *(tempMap1.get(str)-minLevel.get(str)); } if(!tempMap1.containsKey(str)&&tempMap2.containsKey(str)){ result+=(tempMap2.get(str)-minLevel.get(str)) *(tempMap2.get(str)-minLevel.get(str)); } } returnMath.sqrt(result); }5.实验结果 代码调试截图实验界面截图第一次、第二次扫描截图wifi.txt截图计算结果截图6.室内定位误差分析由于室内环境比较复杂,信号在室内传播时会受到不同程度的影响,而造成此影响的因素主要有以下三种:非视距传播、多径传播、阴影效应。非视距传播由于在信号的发射端与接收端之间的直射路径上存在障碍物,导致无线电波不能在收发两端进行直射传播,而只能通过反射、折射进行传播,由此在接收端测得的信号特征,如信号到达时间、信号强度、入射角、到达时间差等,将无法准确的反映出收发两端之间的真实距离,我们称这种现象为信号的非视距传播。多径传播由于信号接收端所处环境复杂,使得发射的电磁波在向外扩散过程中遇到各种障碍物,使得信号在传播过程中受到反射、散射、绕射等影响,导致接收到的信号为多条路径上信号的矢量和。由于每条路径上信号的强度、到达时间、到达载波相位都不相同,则产生多径干扰,这种现象即为多径传播。阴影效应阴影效应是指移动终端在移动过程中,有一些大型障碍物阻挡了其无线电波的直射路径,从而导致信号接收区域中存在半盲区,在电磁场中形成了阴影,致使信号接收点场强在终端移动过程中起伏变化,我们称此现象为阴影效应。除以上三种环境客观因素外,指纹定位选取的信号传播模型、定位场景中AP与位置指纹参考点的配置以及选取的定位算法均会影响定位精度。除此之外,定位温度、方向、移动终端运动状态也均会影响定位精度。实验二无线传感器网络定位实验实验目标了解典型的无线传感器网络定位算法;在所给的网络中实现所讲授的无线传感器网络定位算法并进行比较。实验要求掌握典型的无线传感器网络定位算法基本原理,理解所讲的迭代式多边定位算法、DV-HOP算法、PDM定位算法、基于MDS的定位算法;利用所给的网络数据,实现两种以上的定位算法并进行比较。算法介绍3.1基本内容介绍在本次实验中,共有四个已知的.txt文件,分别命名为:net1_pos.txt、net1_topo_error_free.txt、net1_topo_error_5以及net1_topo_error_10。其中,文件net1_pos中给出了实验网络中节点的位置数据。每行表示一个节点的位置信息。格式如下: 节点序号节点x坐标节点y坐标是否锚节点(1代表锚节点,0代表待定位节点),比如: 117.8977106.22821表示节点1,其真实位置为(17.8977,106,2282),该节点是锚节点。再比如:3343.471895.76030表示节点33,其真实位置是(43.4718,95.7603),该节点是待定位节点。利用某种定位算法计算出来待定位节点的位置后,就可以根据真实位置计算该节点的定位误差。文件net1_topo_error_free中给出了网络中相邻节点之间的距离信息。每一行表示两个节点之间的距离。格式如下: 节点1序号节点2序号节点之间距离测量值。比如: 148.3075 表示节点1和节点4可以相互测量出之间的距离,他们之间的距离是8.3075文件net1_topo_error_5和net1_topo_error_10给出的距离分别是增加了5%和10%误差之后的扰动值。3.2迭代多边定位算法算法思想:利用已知信标节点和非信标节点的几组对应关系(两点间距离),对非信标节点进行定位。(某个非信标节点只要已知3个及以上信标节点与其距离即可对其进行定位。)定位成功后的非信标节点转换为信标节点,可辅助对其他非信标节点定位。不断迭代定位过程,知道信标节点集合元素个数在前后两次迭代中数量不变,则迭代终止。前提条件:已知位置的锚节点个数要超过3个;对所有节点来说,在添加完邻接矩阵关系后,是一个连通图,没有孤立节点。特别说明:因为在使用迭代多边定位算法对未知节点进行定位时需要利用该节点与3个以上信标节点的直线距离,图是连通图但不是全连通图,所以可能会有部分节点无法定位。3.3DV-HOP算法算法思想:先用Floyd算法将图的最短路径和每两个节点间的最小跳数表示出来,将特定位置的节点到参考节点的距离用网络中的节点的平均每跳距离和节点之间的跳数乘积表示,使用三角形定位的方法来获得节点的位置节点。前提条件:已知位置的锚节点个数要超过3个;对所有节点来说,在添加完邻接矩阵关系后,是一个连通图,没有孤立节点。特别说明:图是否为连通图对于迭代多边算法影响可能不会很大,但是在DV-HOP算法中,如果有孤立节点,则会导致程序出错。3.4PDM算法算法思想:PDM算法全称为计算邻近度-距离转换矩阵算法(Proximity-to-DistanceMapping),也就是说通过计算节点间的邻近度-距离转换矩阵来给未知节点进行定位,本算法中涉及到:通过锚节点间协作构建邻近度-距离转换矩阵D=P*T,对于已知的锚节点,它们之间的跳数可以通过Floyd算法计算出来,即可获取关于所有锚节点的跳数矩阵P,而锚节点的坐标已知,其相互之间的距离可以计算出来,即构造了距离矩阵D。利用伪逆技术增强鲁棒性,计算出转换矩阵T:若锚节点的分布要能较准确的刻画网络拓扑性质,我们可以认为矩阵T也符合网络中的非锚节点。而非锚节点到锚节点的跳数可以用Floyd算出,即P可算出,通过D=T*P可以算出某个点到锚节点的距离,再调用算法一可以算出坐标。前提条件:已知位置的锚节点个数要超过3个;对所有节点来说,在添加完邻接矩阵关系后,是一个连通图,没有孤立节点。特别说明:图是否为连通图对于PDM算法影响很大,如果有孤立节点,矩阵运算就不会正确,无法定位。4.算法实现4.1迭代多边定位算法第一步:将数据读入内存。利用Matlab中已有的函数load将文件中的内容以矩阵的方式读入内存。Data_post=load('net1_pos.txt');Data_road1=load('net1_topo-errorfree.txt');Data_road2=load('net1_topo-error5.txt');Data_road3=load('net1_topo-error10.txt');culunm_post=size(Data_post);第二步:判断锚节的个数。tempcount=0;fori=1:culunm_post(1)ifData_post(i,4)==1tempcount=tempcount+1;endendiftempcount<3disp('锚节点少于3个,DV-hop算法无法执行');return;end第三步:初始化距离矩阵,将与锚节点有关的路径读入距离矩阵先将距离矩阵全部赋值为无穷大,再将每个节点到自身的距离规定为0,在边的信息中,如果有端点为锚节点的,就更新其两点间的距离。fori=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);endend第四步:迭代计算逐一判断每一个非信标节点是否有3个以上锚节点与其相关,如果有3个以上的信标节点与其相关则根据:其中x,y为未定位的节点的实际位置,(x1,y1),(x2,y2),……是已知的锚节点到该未知节点的距离。根据以上两个矩阵的转换,可以求得:,其中x为一个一行两列的矩阵,分别表示未知节点定位后的坐标位置x,y。定位成功后,把该点的标号加入锚节点集合中并从非锚节点集合中删除,并在距离矩阵中加入与该节点相关的边的信息。不断迭代运行第四步,直至锚节点集合中元素个数不再变化。核心代码如下:(1)计算未知节点位置point=temp(1,3)^2-temp(1,1)^2-temp(1,2)^2;forii=2:k-1 A(ii-1,:)=2*[temp(1,1)-temp(ii,1)temp(1,2)-temp(ii,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)=[];form=1:culunm_road(1) 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第五步:计算误差,输出结果4.2DV-HOP算法第一步:将数据读入内存。利用Matlab中已有的函数load将文件中的内容以矩阵的方式读入内存。第二步:判断锚节的个数。第三步:将所有的两点间的距离关系读入距离矩阵fori=1:culunm_road(1) matrix(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;第四步:利用最短路径算法求得两点间的最短路径fork=1:nodes_nfori=1:nodes_nforj=1:nodes_nifshortest_path(i,k)+shortest_path(k,j)<shortest_path(i,j)shortest_path(i,j)=shortest_path(i,k)+shortest_path(k,j);jump_n(i,j)=jump_n(k,j);endendendEnd第五步:求每个信标节点的校正值利用函数:anchor_to_anchor=shortest_path(1:anchors_n,1:anchors_n);fori=1:anchors_nhopsize(i)=sum(sqrt(sum(transpose((repmat(true(i,:),anchors_n,1)...-true(1:anchors_n,:)).^2))))/sum(anchor_to_anchor(i,:));End第六步:未知节点计算位置先通过距离=跳数*校正值求得未知节点到每个锚节点的距离,再根据最小二乘法计算具体位置。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));anchors_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(A\b);第七步:计算误差,输出结果4.3PDM算法第一步:将数据读入内存。利用Matlab中已有的函数load将文件中的内容以矩阵的方式读入内存。第二步:判断锚节的个数。第三步:将所有的两点间的距离关系读入距离矩阵第四步:利用最短路径算法求得两点间的最短路径,以及最短路径下每对节点的上一跳信息。第五步:构造节点跳数矩阵P_all根据上一跳矩阵jump_n,通过循环判断可以得出一个32*320的矩阵P_all,P_all(i,j)表示从第i和点到第j个点最少需要多少跳。fori=1:nodes_nforj=1:nodes_ntemp_num=last_jump(i,j);while(temp_num~=i)P_all(i,j)=P_all(i,j)+1;temp_num=last_jump(i,temp_num);endendend第六步:构造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:anchors_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%误差扰动值时的迭代多边定位算法说明:红色圆圈表示节点实际位置,蓝色圆点表示利用迭代多边定位算法的估计位置,蓝色连线表示某个节点实际位置与估计位置的误差。(3)10%误差扰动值时的迭代多边定位算法说明:红色圆圈表示节点实际位置,蓝色圆点表示利用迭代多边定位算法的估计位置,黄色连线表示某个节点实际位置与估计位置的误差。2、误差分析三次定位中,误差(方差)分别为:0.00034774693255881、3.1238
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年北师大版高三历史上册阶段测试试卷含答案
- 2025年沪教新版选修3物理上册阶段测试试卷含答案
- 2025年粤人版高一数学下册阶段测试试卷
- 2025年北师大版九年级地理下册月考试卷含答案
- 2025年湘教版选择性必修1历史下册月考试卷含答案
- 2025年浙教新版必修三英语上册阶段测试试卷
- 公共文化服务理论与实务知到智慧树章节测试课后答案2024年秋四川艺术职业学院
- 2025年度美容院美容产品包装设计与生产合同4篇
- 二零二五年度农业休闲观光园开发合同4篇
- 二零二五年度绿色生态农用地流转合同4篇
- 2024年苏州工业园区服务外包职业学院高职单招职业适应性测试历年参考题库含答案解析
- 人教版初中语文2022-2024年三年中考真题汇编-学生版-专题08 古诗词名篇名句默写
- 2024-2025学年人教版(2024)七年级(上)数学寒假作业(十二)
- 山西粤电能源有限公司招聘笔试冲刺题2025
- 2024年高考全国甲卷英语试卷(含答案)
- 2024光伏发电工程交流汇流箱技术规范
- 旅游活动碳排放管理评价指标体系构建及实证研究
- 2022年全国职业院校技能大赛-电气安装与维修赛项规程
- 小学德育养成教育工作分层实施方案
- 2024年湖南高速铁路职业技术学院单招职业技能测试题库附答案
- 黑枸杞生物原液应用及产业化项目可行性研究报告
评论
0/150
提交评论