物联网定位技术|实验报告|实验一 Wi-Fi指纹定位

news2024/9/21 1:52:46

目录

实验1  Wi-Fi指纹定位

1. 实验目标

2. 实验背景

3. 实验原理

3.1 WIFI基础知识

3.2室内定位方法建模

3.3指纹定位算法

①离线/训练阶段

②在线/定位阶段

4.  关键代码

5. 实验结果

6. 室内定位误差分析

6.1 非视距传播

6.2 多径传播

6.3 阴影效应

7. 实验总结


物联网定位技术

实验报告

学生姓名

白**

学    号

2008070101

专业班级

物联201

指导老师

曾**

学    院

信息与科学技术学院

完成时间

2023年3月3日

实验1  Wi-Fi指纹定位

1. 实验目标

        通过实现一个基于Wi-Fi指纹的室内定位系统,掌握指纹定位的原理和实现方式,并进行测试,对所实现的指纹定位系统的误差性能进行评价。

2. 实验背景

        WIFI位置指纹定位技术是基于接收信号传播特性而进行定位的,与传统定位技术相比,其无需额外添加设备来进行角度测量与时间同步,且充分利用了己有WIFI无线网络,降低其使用成本

        其次,WIFI位置指纹定位技术与传统室内定位技术(如:视频信号与红外定位)相比,其扩展性更强应用范围更广。由于WIFI信号传输时受非视距多径衰落等因素影响较小,故基于WIFI网络的指纹定位系统稳定性较强,而基于红外或视频信号定位技术在使用时较易受限,比如: 在阳光直射或突光照射下基于红外技术定位的精度将大大降低,而基于视频信号的定位技术使用前提是移动终端必须在可视条件下。

~基于WIFI网络的指纹定位

~基于红外技术定位

~基于视频信号定位

        WIFI位置指纹定位技术可通过WIFI网络中的AP进行定位,避免了对无线基站网络的依赖,从而实现了地下或室内环境的准确高效定位,其在地下室内商场、停车场、物流等行业均具有潜在应用价值。

3. 实验原理

3.1 WIFI基础知识

         WIFI网络的组成结构如下图2-1所示,主要包括了接入点(Access Point,AP)站点(Station,STA)无线传输介质(Wirless Medium,WM)分布式系统(DistributionSystem,DS)

图2-1 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(S Li)= P(S1 Li) P(S2 Li).... P(Sn Li)

观察数据发现某一位置指纹处的接收信号强度服从高斯正态分布,所以可以进行近似模拟。

最后以概率值P(Li |S)作为定位区域中指纹参考点的权重,并估计出移动终端的位置。

4.  关键代码

/**
	 * 计算距离,并且找出最小距离的点和值。
	 * @return
	 */
	private Point calculate() {
		minDistance = Double.MAX_VALUE;
		mini = -1;
		double tempDistance;
		distance = new double[totalPoints.size() - 1];
		Point endPoint = totalPoints.get(totalPoints.size() - 1);
		for (int i = 0; i < totalPoints.size() - 1; i++) {
			tempDistance = calculate_Distance(endPoint, totalPoints.get(i));
			distance[i] = tempDistance;
			if (tempDistance < minDistance) {
				minDistance = tempDistance;
				mini = i;}
		}
		return totalPoints.get(mini);
	}
/**
	 * 计算两点之间的距离
	 * @param point1 
	 * @param point2
	 * @return
	 */
	private double calculate_Distance(Point point1, Point point2) {
		float result = 0.0f;
		String str;
		Map<String, Integer> tempMap1 = new HashMap<String, Integer>();
		Map<String, Integer> tempMap2 = new HashMap<String, Integer>();
		int i, 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));
			}
		}
		return Math.sqrt(result);
	}

5. 实验结果

代码调试截图 

实验界面截图

第一次、第二次扫描截图

wifi.txt截图

计算结果截图

6. 室内定位误差分析

        由于室内环境比较复杂,信号在室内传播时会受到不同程度的影响,而造成此影响的因素主要有以下三种: 非视距传播、多径传播、阴影效应。

6.1 非视距传播

         由于在信号的发射端与接收端之间的直射路径上存在障碍物,导致无线电波不能在收发两端进行直射传播,而只能通过反射折射进行传播,由此在接收端测得的信号特征,如信号到达时间、信号强度、入射角、到达时间差等,将无法准确的反映出收发两端之间的真实距离,我们称这种现象为信号的非视距传播。

6.2 多径传播

         由于信号接收端所处环境复杂,使得发射的电磁波在向外扩散过程中遇到各种障碍物,使得信号在传播过程中受到反射、散射、绕射等影响,导致接收到的信号为多条路径上信号的矢量和。由于每条路径上信号的强度、到达时间、到达载波相位都不相同,则产生多径干扰,这种现象即为多径传播。

6.3 阴影效应

         阴影效应是指移动终端在移动过程中,有一些大型障碍物阻挡了其无线电波的直射路径,从而导致信号接收区域中存在半盲区,在电磁场中形成了阴影,致使信号接收点场强在终端移动过程中起伏变化,我们称此现象为阴影效应。除以上三种环境客观因素外,指纹定位选取的信号传播模型、定位场景中AP与位置指纹参考点的配置以及选取的定位算法均会影响定位精度。

        除此之外,定位温度、方向、移动终端运动状态也均会影响定位精度。

7. 实验总结

        全球定位系统是迄今为止应用最为成功的地位系统,具备高精度的定位能力,但在室内和高楼密布的城区等信号遮挡严重的密集环境中,由于接受机捕获不到足够强度的卫星信号,GPS的定位质量难以保证甚至无法完成定位,使其可用性受到严重制约。

        由于室内环境下都普及了WiFi,因此利用WiFi进行定位无需额外部署硬件设备,是一个非常节省成本的方法。我们想通过wifi指纹定位技术来解决目前存在的这个瓶颈,通过记录空间的WiFi信号特征,形成wifi指纹库,将WiFi信号与空间位置进行绑定,利用移动终端或查询终端提供实时定位信息以及路径规划等功能,动态实现方向指引。帮助用户用最短的时间寻找目标,从而提高公共场所的服务水平与用户体验,为解决当前GPS全球定位系统所存在的问题,提供了一个可行的方案。 

        WiFi室内指纹定位具有成本低、准确率高的优点,实验依托的决策树算法,属于监督性的分类算法,适合指纹定位的应用。通过小组成员的共同努力,代码成功输出五个参数的误差距离。

        但是实验也存在欠缺:首先,在收集WiFi信号强度、采集数据库信息时,动态变化的数据会产生预测误差,小组实验对于误差处理方面有些欠缺。其次,在代码编写过程中,主要借鉴网上开源项目,对于组内考虑的一些因素未能编进代码。最后,代码操作不熟练导致实验进程坎坷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/440951.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ESP32学习三-环境搭建(ESP-IDF V5.0,Ubuntu20.4)

一、准备事项 Ubuntu 20.04。具体安装可以参考如下链接。使用VMware安装Ubuntu虚拟机和VMware Tools_t_guest的博客-CSDN博客 二、安装ESP-IDF 1&#xff09;、确认python3版本 输入python3 --version来确认python3的版本。因为要安装ESP-IDF 5.0版本&#xff0c;python3的版本…

Docker Compose与Docker Swarm的简介和区别

Docker Compose与Docker Swarm的简介和区别 背景Compose 简介Swarm 简介Compose 和 Swarm区别 背景 之前公司很多都是单体的spring boot服务&#xff0c;使用Docker的时候&#xff0c;只需要定义Dockerfile 文件&#xff0c;然后打成镜像把容器启动起来就ok了。但是现在的微服…

低成本,全流程!基于PaddleDepth和Paddle3D的三维视觉技术应用方案

现实生活中的很多应用场景都需要涉及到三维信息。针对三维视觉技术应用场景复杂多样、三维感知任务众多、流程复杂等问题&#xff0c;飞桨为开发者提供了低成本的深度信息搜集方案 PaddleDepth 以及面向自动驾驶三维感知的全流程开发套件 Paddle3D 。 三维视觉技术应用场景 3D …

01——计算机系统基础

计算机系统基础知识 计算机系统基础一、计算机系统的基本组成1 计算机硬件系统 二、计算机的类型三、计算机的组成和工作原理1 计算机的组成2 总线的基本概念2.1 总线的定义与分类 3 系统总线3.1 系统总线的概念3.2 常见的系统总线 4 外总线5 中央处理单元&#xff08;CPU&…

【刷题】搜索——BFS:八数码【A*模板】

A*简介 某点u的距离f(u)定义如下&#xff1a; f ( u ) g ( u ) h ( u ) f(u) g(u) h(u) f(u)g(u)h(u) g(u)&#xff1a;起点到u走的距离 h(u)&#xff1a;u到终点估计的距离&#xff0c;保证 0 ≤ h ( u ) ≤ h ′ ( u ) 0 \leq h(u) \leq h(u) 0≤h(u)≤h′(u)。其中h’…

健康体检信息系统源码,个人体检、团队体检、体检报告、统计分析

健康体检管理系统源码 PEIS源码 数据对接 体检人员管理系统&#xff0c;系统有演示&#xff0c;文档齐全。 一套专业的体检管理系统源码&#xff0c;该系统涵盖个人体检、团队体检、关爱体检等多种体检类型&#xff0c;提供体检登记管理、体检结果管理、体检报告打印及发放…

阿里云服务器搭建网站流程by宝塔Linux面板

阿里云服务器安装宝塔面板教程&#xff0c;云服务器吧以阿里云Linux系统云服务器安装宝塔Linux面板为例&#xff0c;先配置云服务器安全组开放宝塔所需端口8888、888、80、443、20和21端口&#xff0c;然后执行安装宝塔面板命令脚本&#xff0c;最后登录宝塔后台安装LNMP&#…

尝试图像锐化

#图像锐化 拉普拉斯&#xff1a; 导数f(x,y)f(x1,y)f(x−1,y)f(x,y1)f(x,y−1)−4f(x,y) 可以扩展到8邻域&#xff1a; ​ Mat Sharpen(Mat input, int percent, int type) { Mat result; Mat s input.clone(); Mat kernel; switch (type) { case 0: kernel (Mat_(3, 3)…

4个令人惊艳的ChatGPT项目,开源了

自从 ChatGPT、Stable Diffusion 发布以来&#xff0c;各种相关开源项目百花齐放&#xff0c;着实让人应接不暇。今天&#xff0c;将着重挑选几个优质的开源项目&#xff0c;对我们的日常工作、学习生活&#xff0c;都会有很大的帮助。 一、Visual ChatGPT 这个是微软开源的项…

代码随想录_二叉树_leetcode700、98

leetcode700.二叉搜索树中的搜索 700. 二叉搜索树中的搜索 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在&#xff0c;则返回 null 。 示例 1: 输入&…

乘客出租出行需求短时预测

CLAB模型是一种空间-时间环境下基于深度学习的乘客流量预测模型&#xff0c;可有效挖掘出租车乘客出行的时空相关性&#xff0c;考虑历史数据流入量对出行需求的影响&#xff0c;从而提高预测准确性。 数据挖掘维度&#xff1a; 1.时间维度&#xff1a;预测的是短时预测&#x…

关于ONgDB我问了ChatGPT这些问题!

关于ONgDB我问了ChatGPT这些问题&#xff01; 关于ONgDB我问了ChatGPT这些问题&#xff01;提问 ChatGPTONgDB和Neo4j的区别是什么&#xff1f;ONgDB可以适配哪些版本的Neo4j软件包&#xff1f;ONgDB可以适配哪个版本的Neo4j Python驱动软件包&#xff1f;ONgDB 1.x版本的特点是…

Oracle系列之八:SQL查询

SQL查询 1. 基本查询2. 连接查询3. SQL语句解析4. Oracle Hint Oracle它提供了一个强大的SQL引擎&#xff0c;使得用户可以通过SQL语言来管理和操作数据库。 1. 基本查询 以CAP&#xff08;顾客-代理-产品&#xff09;数据库为例&#xff0c;表结构如下&#xff1a; CUSTOME…

第四章 单例模式

文章目录 前言一、单例模式的介绍二、单例模式的 8 种实现方式&#xff08;懒汉式要注意线程安全问题&#xff09;1、饿汉式&#xff08;静态常量&#xff09;优缺点&#xff1a;可能会造成内存的浪费&#xff0c;但也只能浪费内存 2、饿汉式&#xff08;静态代码块&#xff09…

( “树” 之 BST) 538. 把二叉搜索树转换为累加树 ——【Leetcode每日一题】

二叉查找树&#xff08;BST&#xff09;&#xff1a;根节点大于等于左子树所有节点&#xff0c;小于等于右子树所有节点。 二叉查找树中序遍历有序。 538. 把二叉搜索树转换为累加树 给出二叉 搜索 树的根节点&#xff0c;该树的节点值各不相同&#xff0c;请你将其转换为累加…

( “树” 之 DFS) 337. 打家劫舍 III ——【Leetcode每日一题】

337. 打家劫舍 III 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root。 除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦察之后&#xff0c;聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。…

IDEA社区版搭建Tomcat服务器并创建web项目

IDEA社区版搭建Tomcat服务器并创建web项目 目标 创建Web项目的目录结构可以启动Tomcat服务器编写Servlet并访问成功 问题 IDEA社区版没有创建Web工程的选项IDEA社区版没有Tomcat插件 实现步骤 针对以上两个问题&#xff0c;分步解决 问题一&#xff1a;IDEA社区版没有创建…

《花雕学AI》18:AI绘画尝鲜Prompt Hunt,使用人工智能模型来创造、探索和分享艺术作品

引言&#xff1a; 人工智能是当今科技领域的热门话题&#xff0c;它不仅可以帮助人类解决各种实际问题&#xff0c;也可以激发人类的创造力和艺术感。Prompt Hunt就是一个利用人工智能模型来创造、探索和分享艺术作品的AI绘画网站。它提供了三种不同的模型&#xff0c;分别是S…

Git 分布式版本控制工具

文章目录 Git 分布式版本控制工具课程内容1. 前言1.1 什么是Git1.2 使用Git能做什么 2. Git概述2.1 Git简介2.2 Git下载与安装 TODO3. Git代码托管服务3.1 常用的Git代码托管服务3.2 码云代码托管服务3.2.1 注册码云账号3.2.2 登录码云3.2.3 创建远程仓库3.2.4 邀请其他用户成为…

最火爆的持续集成工具 jenkins ,详细教程来啦(傻瓜式教程)

很多小伙伴在安装以及配置jenkins的时候&#xff0c;总会遇到一些问题。 今天在这边特地把jenkins的安装&#xff0c;以及常用的一些功能的配置整理到了这篇文章中&#xff0c;希望对大家有所帮助&#xff01; 1安装JDK JDK安装完需要配置环境变量&#xff0c;大家可以自行百度…