在安卓系统中,如何提高多路信标检测的稳定性?我使用的是万向节信标,适用于室内positioning.Is定位数据的访问。
发布于 2015-01-29 05:03:42
我已经在这方面做了大量的工作,因为我在充满会议室的走廊里放置了信标,所有这些都离我很近。
首先,我建议将信标放置在天花板上。信号应该以向下的角度广播。这大大减少了干扰。请记住,这可能不是每个房间的解决方案,但在我的情况下,房间彼此靠近,这有很大帮助。
接下来,一定要为signal smoothing使用一个好的选项。Gimbal处理到达和离开的概念。只有当信号在某个阈值内时,才会触发这些事件。信号平滑将防止这样的情况,即一个信标的报告信号为-56,然后在下一秒跳到-75。它使用平均算法来平滑信号,以防止如此巨大的报告差距。这防止了由于报告信号中的巨大尖峰而导致的虚假到达和离开。
最后,调整您的到达和出发信号,信号平滑选项和信标位置,以找到工作。不幸的是,没有一个适合所有人的解决方案,你必须进行连续的站点调查,以确保你的调整按预期的方式进行。
如果你想了解更多关于Android的Gimbal的信息,我已经在这个主题上写了一个深入的文章。你可以查看那篇文章here。但是,如果你使用的是Gimbal的最新版本,他们已经更新了他们的API并丢弃了VisitManager。因此,我的文章只与他们的SDK v1.33相关。我将在将来写一篇关于他们更新的SDK的新文章,我现在正在积极地工作。
发布于 2015-02-25 21:41:36
在我看来,答案是:是的,BLE适合于室内本地化。
我建议使用low pass filter来平滑距离/信号强度读数。我可以想到两种方法来做到这一点:
或者:
//对于来自BLE的每个新读数,执行以下操作: // fc =截止频率Hz;即: //您想要检测来自接收器的BLE来和离开的频率//这取决于人的范围和速度(见下表) var real fc := 0.21 // <--配置这个!// a常量-,还有pi = 3.1415 var real RC := 1/ (2*pi + fc) // <--或者根据下表进行配置!// dt =两次连续读数之间的时间var real dt := 1 // <--每次读取时可能需要更新!// a常量var real := dt / (RC + dt) //当前距离的估计值基于://当前读数xi和之前的估计值yi-1 yi :=α* xi + (1-α) * yi-1 // <--结果!
我已经为RC (常量)计算了一个表;在我看来,它取决于BLE的范围,因为如果一个人在这个范围内进出,那么距离越小,进出的频率就越高。尝试这5个值,看看它对你有什么作用:
我们看到的最大距离m,RC (constant):RC
1:0.212212849,3:0.636638548,10:2.122128495,30:6.366385485,60:12.73277097
祝好运
https://stackoverflow.com/questions/26927573
复制相似问题