在android中如何提高多重信标检测的稳定性?我正在使用万向节信标进行室内定位。是否BLE适合室内位置数据访问?
答案 0 :(得分:1)
我已经对此进行了广泛的研究,因为我已经将信标放在一个满是会议室的走廊里,所有这些都在附近。
首先,我建议将信标放在天花板上。信号应以向下的角度广播。这样可以减少干扰。请记住,这可能不是每个房间的解决方案,但在我的情况下,房间彼此接近,这有很大帮助。
接下来,请务必为signal smoothing使用一个好的选项。 Gimbal SDK适用于到达和离开的概念。仅当信号在特定阈值内时才会触发这些事件。信号平滑将防止一个信标具有-56的报告信号然后将下一秒跳到-75的情况。它使用平均算法来平滑信号,以防止如此巨大的报告间隙。这可以防止由于报告信号出现大量尖峰而导致的错误到达和离开。
最后,调整您的到达和离开信号,信号平滑选项和信标放置以找到有效的方法。遗憾的是,并不是一个适合所有人的解决方案,您必须进行连续的网站调查,以确保您的调整按照预期的方式进行。
如果您想了解更多关于使用Proximity for Android的Gimbal SDK,我已经深入研究了这个主题。您可以查看该文章here。但是,如果您使用的是来自Gimbal的最新SDK,他们已更新了他们的API并删除了VisitManager。因此,我的文章仅与其v1.33的SDK相关。我将来会在他们更新的SDK上写一篇新文章,我现在正在积极合作。
答案 1 :(得分:0)
在我看来,答案是:是的,BLE适合室内定位。
我建议使用low pass filter 平滑距离/信号强度读数。我可以想到两种方法:
或者:
更复杂但更易于配置: RC过滤器。算法像这样:
// FOR EACH new reading from the BLE do this:
// fc = cutoff frequency [Hz]; i.e.:
// how frequent do you want to detect the BLE coming and parting from the receptor
// this depends on the range and speed of people (see table below)
var real fc := 0.21 // <-- configure this!
// a constant [-], also pi = 3.1415
var real RC := 1 / (2*pi + fc) // <-- OR configure this from the table below!
// dt = time between two consecutive readings [s]
var real dt := 1 // <-- might need updating at each reading !
// a constant
var real α := dt / (RC + dt)
//the current estimate of the distance that is based on:
// the current reading x[i] and the previous estimate y[i-1]
y[i] := α * x[i] + (1-α) * y[i-1] // <-- result !!!!
我为RC
(常数)计算了一个表;在我看来,这取决于BLE的范围,因为如果一个人进出该范围,如果距离较小,进出的频率会更高。试试这5个值,看看它是否适用于你:
我们查看[m],RC (constant)
的最大距离:RC
1:0.212212849
,
3:0.636638548
,
10:2.122128495
,
30:6.366385485
,
60:12.73277097