RSSI定位算法

一、定位算法简介

1.1. 定位技术原理

定位终端接收到iBeacon基站发来的信号强度,然后根据无线信号强度的渐变模型得出基站与被定位终端的直线距离,然后再根据高度补偿法,得出基站与终端的平面距离,当终端接收到三个以上不同基站的信号,即能得出与三个以上不同基站的水平距离,且这些基站的坐标坐标已知,就可以对这个终端进行定位。

1.2. 定位算法

定位算法有很多,像三角/三边质心算法、加权质心算法、最小二乘法、双曲线法、位置指纹算法、融合算法以及各种改进衍生算法等等。而依据定位策略的不同,BLE信标定位算法可分为基于距离和信号指纹定位两类。基于距离的定位算法是通过测量接收信号强度(RSSI)进行测距,但是由于室内环境对信号多径衰落的影响,基于距离的定位算法定位精度较低。相比之下,基于信号的指纹定位更适应于室内环境,国内外应用也较为普遍。指纹定位算法首先在室内固定位置点测量不同信标的RSSI值,再利用这些RSSI值以其对应的位置信息建立指纹地图(Fingerprints),再将在线测量的RSSI值与指纹地图匹配,进而估计用户的位置。

二、RSSI测距原理

2.1. 建模与测量终端到基站的距离

实际中通常用来测得基站与终端距离的简化无线信号渐变模型如下:

P L ( d ) = P L ( d 0 ) − 10 n l g d d   0   − N 0 PL(d) = PL(d_0) − 10nlg \frac {d}{d~0~} − N_0 PL(d)=PL(d0)10nlgd 0 dN0

符号 含义
d 节点之间的距离(即我们需要计算的距离)
n 信号衰减指数,常取值为2~4,通常是由实际测量得到,障碍物越多,n值越大,从而接收到的平均能量下降的速度会随着距离的增加而变得越来越快 。
d0 参考距离,为计算方便,通常选择一米处为参考距离
PL(d) 距离发送节点d处的信号强度,单位dBm
N0 均值为0,标准差为 σ 的高斯随机噪声变量
PL(d0) 距离发送节点 d0处的信号强度,一般从经验或硬件说明定义中得到,

在实际应用中,通常需要实地测量得到基站在一米处接收到的功率值、环境衰减因子、高度补偿三个值,分别记为p0、n、h。其中,h根据终端一般使用时,与基站的垂直距离得到;
p0、n测量时,由于具体模型的建立与优化,对定位效果影响最大,为使模型能够最大程度符合当前室内环境中的无线信号传播特性,使RSSI测距能获得更高的精度,需要对参数A和n进行优化进而得到当前室内环境下的最优值。一般通过线性回归分析来估计参数和的值,因为RSSI值在超过14m以后基本趋于平缓,不再符合接收信号强度随着距离增大而衰减的规律。所以为保证测距精度,基站固定后,以20 cm为间隔,在距离基站14m的范围内设置70个测量点,即距离基站0.2 m,0.4 m,…,14m等位置。在每个测试点接收100个数据包后,对100个RSSI值求平均值,再以平均后的RSSI值作为终端在该位置收到的信号强度。最后记录RSSI和d的对应关系,这样就得到了70组测量数据(),= 1,2,3,…,100,其中表示距离为时终端接收到的功率值。对所采集的70组测量数据使用线性回归分析,带入以下公式,即可求出p0、n(式中A表示p0):

计算p0、n

三、定位

当接收到三个以上不同基站的信号时,由2.1得到终端与基站的距离之后,便可利用定位算法对基站进行定位。最广泛使用的是三边定位算法,在此基础之上,改进的算法有加权三边定位算法和加权质心定位算法。

3.1. 三边定位算法

在基于测距的定位算法中,三边测量法是比较简单的算法,算法原理为:平面上有三个不共线的基站 A,B,C,和一个未知终端 D,并已测出三个基站到终端D的距离分别为R1,R2,R3,则以三个基站坐标为圆心,三基站到未知终端距离为半径可以画出三个相交的圆,如图下图所示,未知节点坐标即为三圆相交点。

三边定位法

然而,在实际测量中,往往由于测量的误差,使三个圆并不交于一点,而相交于一块区域,如下图所示。在此种情况下,便需用其他算法进行求解,如极大似然估计法,最小二乘法进行估计,或者使用三角形质心算法。

相交于一片区域

这里,我们的算法采用最小二乘法求近似解,并针对n个基站(n≥3),已知n个基站的坐标分别为 (),(),…,() ,未知终端坐标为() ,由以下步骤求解:

①:建立信标节点与未知节点距离方程组
{ ( x − x 1 ) 2 + ( y − y 1 ) 2 = d 1 2 ⋮ ( x − x n ) 2 + ( y − y n ) 2 = d n 2 \begin{cases} (x-x_1)^2 + (y-y_1)^2 = d_1^2 \\ \quad \quad \vdots \\ (x-x_n)^2 + (y-y_n)^2 = d_n^2 \end{cases} (xx

  • 20
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: RSSI定位算法是基于信号强度指示(RSSI)的无线定位技术,常用于室内定位和物品追踪。这种技术通过测量接收到的无线信号强度,确定物体在空间中的位置。 在使用MATLAB进行RSSI定位算法时,首先需要建立一个RSSI信号模型,即确定信号传播距离和信号强度之间的关系。然后,在定位过程中,需要收集一组RSSI数据,并进行预处理和滤波以消除噪声和干扰。 接着,根据RSSI信号模型,将已知的RSSI数据与已知位置之间的关系用最小二乘法进行建模和拟合,从而得出位置估计值。最后,通过对预测值和观测值之间的误差进行修正,得出更精确的位置估计结果。 总体而言,使用MATLAB进行RSSI定位算法可以有效地实现无线定位,但是也需要注意算法的局限性和灵敏度,以及尽可能减少噪声和干扰对结果的干扰。 ### 回答2: RSSI定位算法是利用接收信号强度指示(RSSI)来确定无线设备位置的一种方法。Matlab是一种高级技术计算语言和环境,可用于进行信号处理、数据可视化和算法开发。在RSSI定位算法中,可以使用Matlab来计算平均RSSI值,并以此来确定设备位置。 平均RSSI值的计算通常涉及多台接收设备。这些设备收集到的RSSI值将合并并平均以获得更准确的读数。Matlab可以用于收集、合并和处理这些RSSI数据。一些常见的RSSI定位算法包括基于距离的算法和基于概率的算法。Matlab可以用于实现这些算法中的任何一个。 基于距离的算法主要依赖于RSSI和距离之间的数学关系,从而推断设备距离。这种方法的主要限制是它需要事先了解节点之间准确的距离。Matlab可以使用此类规则来计算节点距离并推断设备位置。 基于概率的算法更加灵活,因为它们可以使用Bayes理论,从而推断设备位置。通过考虑与设备最有可能相关的节点,该算法可以减少定位误差。Matlab可以用于实现这种基于概率的算法,其中最著名的是粒子滤波和贝叶斯网络。 综上所述,RSSI定位算法可以使用Matlab实现,这对于无线设备的位置定位非常有用。使用Matlab,可以计算RSSI平均值、推断设备距离、实现基于距离或概率的算法,以获得更准确的设备位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值