挑战杯 wifi指纹室内定位系统

简介

今天来介绍一下室内定位相关的原理以及实现方法;

WIFI全称WirelessFidelity,在中文里又称作“行动热点”,是Wi-Fi联盟制造商的商标做为产品的品牌认证,是一个创建于IEEE
802.11标准的无线局域网技术。基于两套系统的密切相关,也常有人把Wi-Fi当做IEEE 802.11标准的同义术语。“Wi-
Fi”常被写成“WiFi”或“Wifi”,但是它们并没有被Wi-
Fi联盟认可。它的最大优点就是传输速度较高,可以达到11Mbps,另外它的有效距离也很长,同时也与已有的各种802.11 DSSS设备兼容。

wifi定位的本质实际上是基站式定位, 是依靠wifi AP以自身为中心, 向外辐射逐渐衰弱的指纹来进行定位的.

wifi定位背景和意义

GPS难以解决室内环境下的一些定位问题,大部分室内环境下都存在WiFi,因此利用WiFi进行定位无需额外部署硬件设备,是一个非常节省成本的方法。然而WiFi并不是专门为定位而设计的,传统的基于时间和角度的定位方法并不适用于WiFi。近十年来,在室内WiFi场景下的定位中,位置指纹法被广泛研究和采用。本文对WiFi位置指纹法进行综述,提出了这个领域面临的挑战,介绍最新的研究,以及提供一些实际的指导。

基本原理
什么是wifi指纹

“位置指纹”把实际环境中的位置和某种“指纹”联系起来,一个位置对应一个独特的指纹。这个指纹可以是单维或多维的,比如待定位设备在接收或者发送信息,那么指纹可以是这个信息或信号的一个特征或多个特征(最常见的是信号强度)。如果待定位设备是在发送信号,由一些固定的接收设备感知待定位设备的信号或信息然后给它定位,这种方式常常叫做远程定位或者网络定位。如果是待定位设备接收一些固定的发送设备的信号或信息,然后根据这些检测到的特征来估计自身的位置,这种方式可称为自身定位。待定位移动设备也许会把它检测到的特征传达给网络中的服务器节点,服务器可以利用它所能获得的所有信息来估计移动设备的位置(翻译存疑…),这种方式可称为混合定位。在所有的这些方式中,都需要把感知到的信号特征拿去匹配一个数据库中的信号特征,这个过程可以看作一个模式识别的问题。

wifi指纹由什么组成

位置指纹可以是多种类型的,任何“位置独特”的(对区分位置有帮助的)特征都能被用来做为一个位置指纹。比如某个位置上通信信号的多径结构、某个位置上是否能检测到接入点或基站、某个位置上检测到的来自基站信号的RSS(接收信号强度)、某个位置上通信时信号的往返时间或延迟,这些都能作为一个位置指纹,或者也可以将其组合起来作为位置指纹。

wifi指纹定位实现方法

wifi定位方法基本上可以分为两大类:

不基于RSSI
  • TOA(time ofarrival)
  • TDOA(time difference of arrival)
  • AOA(angle of arrival)
基于RSSI

在智能手机上,可以通过系统SDK获取到周围各个AP(Access
Point)发送的信号强度RSSI及AP地址,利用RSSI来定位目前看来是最可行的方法,因此下面着重介绍,基于RSSI定位主要有两个算法:三角定位算法,指纹算法。

定位算法
  • 随机方法
    将测试点(Test Point, TP)的预测位置设为任一参考点(Reference Point,RP)的位置。

  • KNN方法
    KNN方法的主要思路是:找出与TP的WiFi指纹相似度最高的K个RP,然后平均这K个RP对应的位置,最终得到TP的位置。

  • Prob方法
    Prob方法的主要思路是:通过贝叶斯公式,计算TP出现在每个RP上的后验概率,取k个概率最大的RP,然后平均这K个RP对应的位置,最终得到TP的位置。

  • Stg方法
    Stg方法是KNN方法的一种改进方法,它通过TP的k个信号最强的信号接入点来筛选RP,然后再应用KNN方法。

  • Gk方法
    GK方法的主要思路是通过高斯核密度估计器(Gaussian Kernel Density
    Estimator,GKDE)计算每个指纹位置的相对过饱和度的可能性,并通过平均与最高似然值对应的位置来确定TP的位置。

基于无线信号的三边(三角定位)

这个方法来自于传统的定位方法,类似GPS,假如我们能够获得我们待定位点相对于其它基站的距离或者角度,通过交会列多元方程组求解的方法可以求出我们所在的位置,当然了,实际情况中往往不是求解刚好够定位的方程组,而是用多余的观测值然后利用最小二乘估计方法来估计位置。以下图为例,对于三个基站,我们如果能够获得信号发射和接受的时间差,那么就可以通过时间差和光速传播来求取距离从而获得定位。

但是,对于普通的WiFi,蓝牙信号,要想求出从信号发射到信号接收之间的时间差,基本是不可能的。因为你要保持两边的时间同步,才能通过发射时间和接收时间来求取时间差,考虑到c光速的巨大,时间差一点点距离就能差非常远。所以基本不可能通过时间差的方法来进行定位。

在这里插入图片描述

那么室内定位里面的三边定位是怎么实现的呢?

我们知道,只要求取当前目标和各个基站的距离,就能求解目标位置。而这个距离既然不能通过时间和光速之积来获得,我们可以通过另一个方法来获得,那就是信号衰减模型,如下图所示,我们知道在离线状态下,无线信号强度在空间中传播随着距离衰减!
而这个无线信号强度对于手机上的接收器来说是可测的!那么根据测试到的信号强度,是不是可以根据下图的衰减模型(公式)来反推出距离呢,那么这样不就又可以用三边定位了。

地图绘制
数据采集点位置

在这里插入图片描述

AP点位置

在这里插入图片描述

测试结果

在这里插入图片描述

最后

该项目较为新颖,适合作为竞赛课题方向,学长非常推荐!

🧿 更多资料, 项目分享:

https://gitee.com/dancheng-senior/postgraduate

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

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

相关文章

【数据结构】LRU Cache

文章目录 LRUCache LRUCache 1. LRUCache是一种缓存的替换技术,在CPU和main memory之间根据计算机的局部性原理,往往会采用SRAM技术来构建CPU和主存之间的高速缓存,DRAM(dynamic random access memory)用于构建主存,LRUCache这种…

命令行参数和环境变量

命令行参数 命令行参数是在用户在命令行中输入命令时,跟随命令一起输入的一些附加信息。这些参数可以用来配置命令的行为或传递一些数据给命令。 让同样的程序在不同的命令行参数下运行出不同的结果! 将这些命令和参数可以传给 main 函数生&#xff0…

【教程】MySQL数据库学习笔记(一)——认识与环境搭建(持续更新)

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【MySQL数据库学习】系列文章 第一章 《认识与环境搭建》 第二章 《数据类型》 文章目录 【MySQL数据库学习】系列文章一、认…

图像识别基础之模板匹配

principle 图像匹配 本质:图像的相似度很高(矩阵的相似度很高) code /*\brief 我的图像匹配函数,获取差方和均值最小的矩阵作为结果\param srcPicFile:用以匹配的图像文件\param templatePicFile:模板图像文件\param destPicFile:输出的检测结果文件…

汇报工作时,你的工作会让领导满意吗?

当前你正在做的事 众所周知,跟领导汇报,第一件事需着重汇报你正在做的事,否则领导会感觉你无所事事。 举个例子: 完成了某某项目,在这项目中我负责:协调不同科室之间的纠纷,并把问题集中上报给…

阿里云幻兽帕鲁服务器配置4核16G10M带宽够8个人玩吗?玩起来流畅度怎么样?

阿里云幻兽帕鲁服务器配置4核16G10M带宽这个,个人实测下来,五六个人玩是比较流畅的,不过8个人的话,估计会有点卡。如果是8个人的话,我建议选择8核32G那个配置,更加适合一些。 阿里云一键部署幻兽帕鲁详细教…

分布式锁redisson

文章目录 1. 分布式锁1.1 基本原理和实现方式对比synchronized锁在集群模式下的问题多jvm使用同一个锁监视器分布式锁概念分布式锁须满足的条件分布式锁的实现 1.2 基于Redis的分布式锁获取锁&释放锁操作示例 基于Redis实现分布式锁初级版本ILock接口SimpleRedisLock使用示…

原型模式-Prototype Pattern

原文地址:https://jaune162.blog/design-pattern/prototype-pattern/ 引言 在Java中如果我们想要拷贝一个对象应该怎么做?第一种方法是使用 getter和setter方法一个字段一个字段设置。或者使用 BeanUtils.copyProperties() 方法。这种方式不仅能实现相同类型之间对象的拷贝,…

CMake进行C/C++与汇编混合编程

1. 前提 这篇文章记录一下怎么用CMake进行项目管理, 并用C/C和汇编进行混合编程, 为了使用这项技术, 必须在VS的环境中安装好cmake组件 由于大部分人不会使用C/C与汇编进行混合编程的情况。所以这篇文章并不适用于绝大部分人不会对其中具体细节进行过多叙述。只是做一些简单的…

正确看待OpenAI大模型Sora

2月16日凌晨,OpenAI发布了文生视频模型Sora。官方是这样描述的:Sora is an AI model that can create realistic and imaginative scenes from text instructions.Sora一个人工智能模型,它可以根据文本指令创建逼真和富有想象力的场景。Sora…

网络安全防御保护 Day5

今天的任务如下 要求一的解决方法: 前面这些都是在防火墙FW1上的配置。 首先创建电信的NAT策略 这里新建转换后的地址池 移动同理,不过地址池不一样 要求二的解决方法: 切换至服务器映射选项,点击新建,配置外网通过…

Java 基于 SpringBoot+Vue 的校园交友网站,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

DarkSide针对VMware EXSI系统进行加密

前言 最近黑客组织利用DarkSide勒索病毒对Colonial Pipeline 发起勒索攻击,国内外各大安全厂商和安全媒体也都有相关报道,DarkSide勒索软件是从2020年8月出现,并以(RAAS)勒索即服务的商业模式进行运作,此勒索病毒不仅可以部署基于…

详解 Redis 实现数据去重

✨✨ 欢迎大家来到喔的嘛呀的博客✨✨ 🎈🎈希望这篇博客对大家能有帮助🎈🎈 目录 言 一. Redis去重原理 1. Redis Set 数据结构 2. 基于 Set 实现数据去重 3. 代码示例 4. 总结 …

月薪30K-100K,新一波工作机会来了,你准备好了吗

纯血版鸿蒙发布,开启一个新时代 1月18日下午,在“鸿蒙千帆起”发布会上,华为揭秘鸿蒙生态和纯血鸿蒙星河版HarmonyOS NEXT进阶的新进展。“几年来,在众多伙伴和开发者的共同努力下,鸿蒙生态设备数已达8亿,…

【医学图像分割 2024】BEFUnet

文章目录 【医学图像分割 2024】BEFUnet摘要1. 介绍2. 相关工作2.1 基于CNN的分割网络2.2 ViT2.3 用于医学图像分割的Transformer 3. 方法3.1 双支路编码器3.1.1 边缘编码器3.1.2 主体编码器 3.2 LCAF模块3.2.1 双级融合模块(DLF) 3.3 损失函数3.3.1 边缘监督损失3.3.2 整体边缘…

AJAX——接口文档

1 接口文档 接口文档&#xff1a;描述接口的文章 接口&#xff1a;使用AJAX和服务器通讯时&#xff0c;使用的URL&#xff0c;请求方法&#xff0c;以及参数 传送门&#xff1a;AJAX阶段接口文档 <!DOCTYPE html> <html lang"en"><head><meta c…

家人们,比赛打完了

啊&#xff0c;终于打完一场比赛了&#xff0c;但还有三场…… 先看看我的战绩&#xff1a; 共八题&#xff0c;AC6题&#xff0c;总共3902分&#xff0c;3.7k人参加&#xff0c;第980名 来看看第一&#xff1a; A8题&#xff0c;我只有2题没做出&#xff0c;相差4000多分&am…

Compose 自定义 - 数据转UI的三阶段(组合、布局、绘制)

一、概念 Compose 通过三个阶段把数据转化为UI&#xff1a;组合&#xff08;要显示什么&#xff09;、布局&#xff08;要显示在哪里&#xff09;、绘制&#xff08;如何渲染&#xff09;。 组合阶段 Compisition 界面首次渲染时会将可组合函数转化为一个个布局节点 Layout Nod…

0102awvs安装-扫描-信息收集

1 安装awvs23.7 解压压缩包&#xff0c;解压密码网站网址&#xff0c;下载地址在最后链接双击acunetix_23.7.230728157.exe安装程序 安装位置默认&#xff0c;如更改位置&#xff0c;后面需要更改bat文件相应内容 设置管理员信息 next直到浏览器跳出登录界面 2 运行运行www.dd…