3

在android中如何提高多重信标检测的稳定性?我正在使用Gimbal信标进行室内定位。BLE是否适合室内位置数据访问?

4

2 回答 2

1

我在这方面进行了广泛的工作,因为我在一个满是会议室的走廊里放置了信标,所有这些都在附近。

首先,我建议将信标放在天花板上。信号应该以向下的角度广播。这大大减少了干扰。请记住,这可能不是每个房间的解决方案,但在我的房间彼此靠近的情况下,这有很大帮助。

接下来,一定要使用一个好的信号平滑选项。Gimbal SDK 适用于到达和离开的概念。仅当信号在某个阈值内时才会触发这些事件。信号平滑将防止一个信标报告的信号为 -56,然后在下一秒跳到 -75。它使用一种平均算法来平滑信号,以防止出现如此巨大的报告差距。这可以防止由于报告信号中的巨大峰值而导致错误的到达和离开。

最后,调整您的到达和离开信号、信号平滑选项和信标位置,以找到有效的方法。不幸的是,没有万能的解决方案,您必须进行持续的现场调查,以确保您的调整按预期方式进行。

如果您想了解更多关于带有 Proximity for Android 的 Gimbal SDK,我已经写了一篇关于这个主题的深入研究。您可以在此处查看该文章。但是,如果您使用的是来自 Gimbal 的最新 SDK,他们已经更新了他们的 API 并删除了 VisitManager。因此,我的文章只与他们的 SDK 相关,直到 v1.33。我将来会写一篇关于他们更新的 SDK 的新文章,我现在正在积极使用它。

于 2015-01-28T21:03:42.240 回答
0

在我看来,答案是:是的,BLE适合室内定位。

我建议使用低通滤波器平滑距离/信号强度读数。我可以想到两种方法来做到这一点:

  1. 简单:运行平均。只需平均最后 3/10/30 的读数。看看什么效果最好。

或者:

  1. 更复杂但更可配置: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

祝你好运

于 2015-02-25T13:41:35.553 回答