蓝牙RSSI定位入门到精通(2)--指纹法

下篇地址蓝牙RSSI定位入门到精通(3)-指纹法实现

前言

继上篇文章,由于信号的严重衰减和多径效应,使得三点定位算法得到的坐标精准度太差。尝试使用其他的算法提高精准度。这里我使用室内定位指纹法


指纹法介绍

指纹法将环境的位置与特定的指纹联系起来,指纹中存储一种或多种特征,当实际定位中,通过实际获得的多个特征与指纹中的特征匹配,从而获得适配的指纹的坐标从而定位,在室内定位中,用得最多的特征也就是RSSI定位。
指纹定位分为两个阶段:离线阶段和在线阶段。离线阶段将每个位置的坐标记录以及保存特征(RSSI),最后收集完所有指纹得到指纹库。在线阶段则通过实际的特征查询指纹库获得定位。当然,实际的特征中不可能刚好和指纹库中特征相同,这时就需要一定的算法得到最佳适配的指纹。
指纹库

指纹法的算法

1确定性的算法

确定性算法即在指纹库的N个指纹中,与实际测量的特征进行欧几里得度量计算,得到N个欧式距离,从中选择距离最小的指纹当做定位。假设位置指纹是N维的,也就是说有N个可见的AP,M个网格点,这样指纹库里面有M个指纹。r和ρ的欧氏距离为:
欧式距离

2概率性的算法

概率性的算法认为实际的rssi值应该是一个分布 简单地使用RSS的边缘分布的乘积作为联合分布。假设观测到的RSS向量为r=[r1,r2,r3,⋅⋅⋅,rN],估计位置时将选择一个网格点,这个网格点上有最大的概率可能产生这个r。对于给定的r,可以使用贝叶斯准则来估计移动设备的位置,某个网格点上能产生r的概率可以这样计算:
这里写图片描述

指纹实现–KNN最近邻算法

knn属于一种确定型算法,也是最简单的机器学习算法,正好适合我这种菜鸟使用。
knn是给定一个训练数据集。对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是K个邻居)。这K个实例的多数属于某个类,就把该输入实例分类到这个类中。但用于定位中需要的是某个特定的位置而不是分类。故将k=1,当做找最近邻居使用。


在下篇文章中,将用指纹法的knn来实现室内定位。

猜你喜欢

转载自blog.csdn.net/qq_35651984/article/details/82693656