【物联网】基于RSSI的无线传感器网络距离修正定位算法

2024-03-23 08:59

本文主要是介绍【物联网】基于RSSI的无线传感器网络距离修正定位算法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

对于大多数无线传感器网络应用来说,没有位置信息的数据是毫无意义的。无线传感器网络目标定位跟踪的前提是节点自身定位。无线传感器网络节点定位算法可分为基于距离和距离无关两大类,基于距离的定位算法主要有RSSI、TOA、TDOA、AOA等,距离无关的定位算法主要有质心算法、DV-hop算法、凸规划、MDS-MAP等。
本文来源:http://www.iot101.com/tech/WSN/2012-09-26/366_2.html

引言

对于大多数无线传感器网络应用来说,没有位置信息的数据是毫无意义的。无线传感器网络目标定位跟踪的前提是节点自身定位。无线传感器网络节点定位算法可分为基于距离和距离无关两大类,基于距离的定位算法主要有RSSI、TOA、TDOA、AOA等,距离无关的定位算法主要有质心算法、DV-hop算法、凸规划、MDS-MAP等。

RSSI 测距无需额外硬件,实现简单,具备低功耗、低成本等特点,应用十分广泛。RSSI 的技术原理是已知锚节点发射信号的强度,根据未知节点接收到的信号强度,利用信号传播模型计算两点的距离。由于存在多径、干扰、遮挡等因素,RSSI 测距的精度较低,必须采用各种算法来减小测距误差对定位精度的影响,因而提出了一种基于RSSI 测距的无线传感器网络距离修正定位算法,可有效减小RSSI 测距误差对节点定位精度的影响。

1 算法模型
1.1 无线信号传播模型

RSSI 测距使用的无线信号传播模型包括经验模型和理论模型,理论模型是在大量经验模型数据的基础上总结提炼而成的。

对于经验模型,首先要按照一定的密度选取参考点,建立信号强度与到某个信标点距离的映射矩阵,在实际定位时根据测得的信号强度与映射矩阵进行对比,并采用数学拟合方式确定待测节点到锚节点距离。

LCD显示器的像素间距(pixel pitch)的意义类似于CRT的点距(dot pitch)。点距一般是指显示屏相邻两个象素点之间的距离。我们看到的画面是由许多的点所形成的,而画质的细腻度就是由点距来决定的,点距的计算方式是以面板尺寸除以解析度所得的数值,不过LCD的点距对于产品性能的重要性却远没有对后者那么高。

CRT的点距会因为荫罩或光栅的设计、视频卡的种类、垂直或水平扫描频率的不同而有所改变,而LCD显示器的像素数量则是固定的,因此在尺寸与分辨率都相同的情况下,大多数液晶显示器的像素间距基本相同。分辨率为1024×768的15英寸LCD显示器,其像素间距均为0.297mm(亦有某些产品标示为0.30mm),而17寸的基本都为0.264mm。所以对于同尺寸的LCD的价格一般与点距基本没有关系。

无线信号传播理论模型主要有自由空间传播模型、对数距离路径损耗模型、对数-常态分布模型等,其中对数-常态分布模型的使用最为广泛。

对数-常态分布模型如式(1)所示:
在这里插入图片描述
其中n 是路径损耗指数,表明路径损耗随距离增长的速率,范围在2~6 之间。d0 为近地参考距离,由测试决定。式(1)能够预测出当距离为d 时接收到的平均能量。由于相同距离d 的情况下,不同位置的周围环境差距非常大因而引入了Xσ,Xσ 是一个平均值为0 的高斯分布变量。

为了更好地描述距离修正定位算法,这里提出两个合理的假设条件:

①由于各种障碍物的影响,绝大多数实际情况中,式(1)预测出的PL(d)[dB]比实际信号能量偏大;

②当距离d 增大时,PL(d)[dB]与实际损耗能量的相对偏差也会增大。

1.2 确定相交区域质心的数学模型

已知三个节点A、B、C的坐标为(xa,ya)、(xb,yb)和(xc,yc),节点O到他们的距离为ra、rb 和rc,假设节点O的坐标(xo,yo),则(xo,yo)的数值可通过式(2)得出,也就是说以A、B 和C 三点为圆心,以ra、rb 和rc 为半径作圆,则三圆将相交与点O,如图1(a)所示。
在这里插入图片描述
图1 三圆相交情况
但在实际情况中,由于RSSI 测距存在误差,并且由于实际的路径损耗比理论模型的数值偏大,也就是说测量出来的未知点到锚节点的距离d 总是大于实际距离r。以A、B和C 三点为圆心,以da1、db1 和dc1 为半径作圆,三圆将不再相交于点O,而是存在一个相交区域,如图1(b)所示。

三圆相交区域的边界有三个交点,三点质心为点D。其中点D 的坐标可以通过式(3)求解。
在这里插入图片描述
但是二次方程,求解过程计算量较大,因而文中采用如图1(b)所示的点D1 的坐标近似质心D 的坐标。三圆两两相交,则三条交线将相交于点D1。将式(2)中的方程式两两相减,则分别得到每条交线的直线方程,D1 的坐标则可以通过这些直线方程求解,如式(4)。
在这里插入图片描述

1.3 距离修正

在某些文章中,以D1 的坐标作为点O 的近似值,其准确度虽然比三边定位等方法要高,但是还是可能存在较大的误差,尤其是当da1、db1、dc1 与ra、rb 和rc 的相对误差各不相同时尤其明显,因而需要对RSSI 方法测出的距离da1、db1和dc1 进行修正,然后再重复地求出新的三线交点D2 的坐标,则可以用点D2 的坐标作为点O 的近似坐标。

设点A、B 和C 到D1 的距离la1、la2 和la3,则总体修正系数如式(5)所示。
在这里插入图片描述
根据1.1 节中假设②,距离越远测距相对误差越大,则其修正程度越大,则da1 的修正系统如式(6)所示,db1 和dc的修正系数类似。
在这里插入图片描述
修正后的距离da2 通过式(7)得出,db2 和dc2 类似。
在这里插入图片描述

2 算法流程

算法流程如下:

①各锚节点以相同功率周期性地向周围广播定位信息,信息中包括节点ID 和坐标。普通节点收到定位信息后,计算同一锚节点的RSSI 平均值;

②当普通节点收集到一定数量的锚节点信息时,不再接收新信息。各普通节点根据RSSI 从强到弱对锚节点排序,由式(1)求出节点到锚节点的距离;

③选取距离最近的3个锚节点;

④通过式(4)计算三线交点D1坐标;

⑤分别计算3个锚节点与交点的距离;

⑥通过式(5)计算总体修正系数;

⑦通过式(6)分别计算各自的修正系数,然后通过式(7)计算修正后的距离;

⑧再次通过式(4)计算修正后的三线交点D2的坐标,D2的坐标即为点O的近似值。

3 仿真分析

用MATLAB 进行算法仿真,基本初始条件是无线传感器网络位于100 m×100 m 的区域内,该区域左下角为(0,0),右上角为(100,100)。区域内均匀部署4、9、16、25个锚节点,其中部署16 个锚节点的位置如表1 所示。

未知节点随机分布在区域内,路径损耗系数设为2.4,每次仿真实验进行500 次,仿真结果取500 次的平均值,各次仿真实验结果如表2 所示。
  
表1 16 个锚节点位置坐标
表1 16 个锚节点位置坐标
表2 仿真结果
在这里插入图片描述
从仿真结果可以看出,当锚节点数目较少时,增加锚节点数量可以显着提高定位精度。路径损耗系统对定位精度也有影响,路径损耗系统越大,定位精度越高。从表2 可以看出,距离修正次数增多对定位精度没有显着的影响,也就是说一般情况下只需要进行一次距离修正即可,采用距离修正与不采用距离修正相比,定位精度明显提高。

4 结语

无线传感器网络基于RSSI 测距的定位算法由于实现简单,应用十分广泛。但由于RSSI 测距的精度不高,降低了节点定位精度。基于RSSI 的无线传感器网络距离修正定位算法利用RSSI测距,通过确定相交区域近似质心,以此为参考点对距离进行修正,然后确定未知节点位置。仿真结果表明,该算法对测距误差具有较高的容忍程度,并且具备很高的定位精度。如上图2 所示,三圆相交还存在无3个交点的情况,下一步工作将详细研究图2所示各种情况对该算法的影响,从而对算法进行改进完善。

这篇关于【物联网】基于RSSI的无线传感器网络距离修正定位算法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/837808

相关文章

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

全屋WiFi 7无死角! 华硕 RP-BE58无线信号放大器体验测评

《全屋WiFi7无死角!华硕RP-BE58无线信号放大器体验测评》家里网络总是有很多死角没有网,我决定入手一台支持Mesh组网的WiFi7路由系统以彻底解决网络覆盖问题,最终选择了一款功能非常... 自2023年WiFi 7技术标准(IEEE 802.11be)正式落地以来,这项第七代无线网络技术就以超高速

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

Java计算经纬度距离的示例代码

《Java计算经纬度距离的示例代码》在Java中计算两个经纬度之间的距离,可以使用多种方法(代码示例均返回米为单位),文中整理了常用的5种方法,感兴趣的小伙伴可以了解一下... 目录1. Haversine公式(中等精度,推荐通用场景)2. 球面余弦定理(简单但精度较低)3. Vincenty公式(高精度,

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.