室内定位这项目已经接近尾声,算法采用的是用kNN计算当前wifi信号和数据库的相似度。将这个相似度作为权值, 用粒子滤波器计算当前所在位置的概率。
目前的方案是:
首先计算当前位置的的RSSI向量和数据库中所有的RSSI向量做对比,这个距离的计算是要将测试集某一个AP的RSSI值减去数据库中对应的AP的RSSI值。
因为之前每个position,每个direction记录了30条数据,就是相当于一个position有120条数据(每个position有4个direction),对于这些数据,我们都有一个关于当前wifi信息和这些数据的距离。对于每个position和每个direction,我们求得到所有的距离的平均数,保存下来。
在空间中随机生成均匀分布一些粒子,粒子包含的信息是(position, direction). 假设有10个position, 每个position 有4个direction, 这样就是可以总共至少有40个粒子,每个粒子带着他们各自的方向和位置。然后先对这些粒子加上一个概率,每个粒子携带的概率都是1/N, N表示总共生成的粒子的数量。
之前求得的每个position和每个direction的距离,将这个距离放到一个高斯函数中,就是距离越小权重越高,距离越到权重越低。
将得到的权重乘以之前每个粒子的概率,得到一个新的概率分布。对于新的概率分布,由于总和不再是1,对此我们要再次对每个粒子的概率除以他们的总和。
对于新的概率分布,我们再随机抽取N个粒子,意思是概率高的粒子容易被选到,概率低的粒子容易被忽略。并且将得到的粒子的分布显示在图像上。
这个项目做到现在困难重重,最后是否能有满意的结果还是未知数。在这