118

试图掌握一个基本概念,即如何使用 ibeacon(信标/蓝牙-低能耗/BLE)保持距离。是否有任何关于 ibeacon 可以测量多远的真实文档。假设我在 300 英尺外…… ibeacon 有可能检测到这一点吗?

专门针对 v4 &。v5 和 iOS,但通常是任何 BLE 设备。

蓝牙频率和吞吐量如何影响这一点?信标设备能否增强或限制距离/改进底层 BLE?

IE

               | Range       | Freq       | T/sec      | Topo       |      
               |–—–––––––––––|–—––––––––––|–—––––––––––|–—––––––––––|
Bluetooth v2.1 | Up to 100 m | < 2.481ghz | < 2.1mbit  | scatternet |
               |-------------|------------|------------|------------|
Bluetooth v4   |     ?       | < 2.481ghz | < 305kbit  | mesh       |
               |-------------|------------|------------|------------|
Bluetooth v5   |     ?       | < 2.481ghz | < 1306kbit | mesh       |
4

7 回答 7

231

iOS 提供的距离估计基于信标信号强度 (rssi) 与校准的发射器功率 (txPower) 之比。txPower 是 1 米外以 rssi 为单位的已知测量信号强度。必须使用此 txPower 值校准每个信标,以实现准确的距离估计。

虽然距离估计很有用,但它们并不完美,需要您控制其他变量。 在滥用它之前,请确保您阅读了复杂性和限制。

当我们构建 Android iBeacon 库时,我们不得不提出自己的独立算法,因为 iOS CoreLocation 源代码不可用。我们在已知距离测量了一堆 rssi 测量值,然后做了一个最佳拟合曲线来匹配我们的数据点。我们提出的算法如下所示为 Java 代码。

请注意,这里的“准确度”一词是指 iOS 以米为单位的距离。这个公式并不完美,但它大致近似于 iOS 所做的。

protected static double calculateAccuracy(int txPower, double rssi) {
  if (rssi == 0) {
    return -1.0; // if we cannot determine accuracy, return -1.
  }

  double ratio = rssi*1.0/txPower;
  if (ratio < 1.0) {
    return Math.pow(ratio,10);
  }
  else {
    double accuracy =  (0.89976)*Math.pow(ratio,7.7095) + 0.111;    
    return accuracy;
  }
}   

注意:值 0.89976、7.7095 和 0.111 是在求解我们测量数据点的最佳拟合曲线时计算的三个常数。YMMV

于 2013-12-06T21:37:52.790 回答
80

我正在非常彻底地调查 iBeacons 的准确性/rssi/接近度问题,我真的认为互联网上的所有资源(博客、StackOverflow 中的帖子)都弄错了。

davidgyoung(接受的答案,> 100 票) 说:

请注意,这里的“准确度”一词是指 iOS 以米为单位的距离。

实际上,大多数人都这么说,但我不知道为什么!文档非常清楚地表明 CLBeacon.proximity:

以米为单位表示 1 sigma 水平精度。使用此属性来区分具有相同邻近度值的信标。不要用它来确定信标的精确位置。精度值可能会因射频干扰而波动。

让我重复一遍:以米为单位的 sigma 精度。谷歌关于该主题的所有 10 个热门页面都有术语“one sigma”,仅引用自文档,但没有一个分析该术语,这是理解这一点的核心。

非常重要的是解释什么是1 sigma 精度。以下 URL 开头:http://en.wikipedia.org/wiki/Standard_errorhttp://en.wikipedia.org/wiki/Uncertainty

在物理世界中,当您进行一些测量时,您总是会得到不同的结果(由于噪声、失真等),并且结果通常呈高斯分布。描述高斯曲线的主要参数有两个:

  1. 平均值(这很容易理解,它是曲线峰值出现的值)。
  2. 标准差,表示曲线的宽度或宽度。曲线越窄,精度越高,因为所有结果都彼此接近。如果曲线较宽且不陡峭,则表示同一现象的测量值相差很大,因此测量质量较差。

一个 sigma是描述高斯曲线的窄/宽的另一种方式。
它简单地说,如果测量的平均值是 X,一个 sigma是 σ,那么 68% 的测量值将介于X - σ和之间X + σ

例子。我们测量距离并得到高斯分布。平均值为 10m。如果 σ 为 4m,则意味着 68% 的测量值在 6m 和 14m 之间。

当我们使用信标测量距离时,我们会得到 RSSI 和 1 米校准值,这使我们能够以米为单位测量距离。但每次测量给出不同的值,形成高斯曲线。一个西格玛(和精度)是测量的精度,而不是距离!

这可能会产生误导,因为当我们将信标移得更远时,一个 sigma实际上会增加,因为信号更差。但是对于不同的信标功率水平,我们可以在不实际改变距离的情况下获得完全不同的精度值。功率越高,误差越小。

有一篇博客文章彻底分析了这个问题:http: //blog.shinetech.com/2014/02/17/the-beacon-experiments-low-energy-bluetooth-devices-in-action/

作者有一个假设,即准确性实际上是距离。他声称 Kontakt.io 的信标是错误的,因为当他将功率增加到最大值时,1、5 甚至 15 米的精度值非常小。在增加功率之前,精度非常接近距离值。我个人认为是正确的,因为功率等级越高,干扰的影响就越小。奇怪的是,为什么 Estimote 信标不这样做。

我并不是说我 100% 正确,但除了作为 iOS 开发人员之外,我还拥有无线电子学学位,我认为我们不应该忽略文档中的“one sigma”术语,我想开始讨论它。

Apple 的准确性算法可能只是收集最近的测量值并分析它们的高斯分布。这就是它设置准确性的方式。我不排除他们使用信息表单加速度计来检测用户是否移动(以及移动速度有多快)以重置先前的分布距离值的可能性,因为它们肯定已经改变。

于 2015-05-11T17:49:51.797 回答
66

iBeacon 输出功率在 1 米的距离处测量(校准)。假设这是-59 dBm(只是一个例子)。iBeacon 将把这个数字作为其 LE 广告的一部分。

监听设备(iPhone 等)将测量设备的 RSSI。例如,假设这是 -72 dBm。

由于这些数字以 dBm 为单位,因此功率比实际上是以 dB 为单位的差异。所以:

ratio_dB = txCalibratedPower - RSSI

要将其转换为线性比率,我们使用 dB 的标准公式:

ratio_linear = 10 ^ (ratio_dB / 10)

如果我们假设能量守恒,那么信号强度必须下降为 1/r^2。所以:

power = power_at_1_meter / r^2. 求解 r,我们得到:

r = sqrt(ratio_linear)

在 Javascript 中,代码如下所示:

function getRange(txCalibratedPower, rssi) {
    var ratio_db = txCalibratedPower - rssi;
    var ratio_linear = Math.pow(10, ratio_db / 10);

    var r = Math.sqrt(ratio_linear);
    return r;
}

请注意,如果您在钢结构建筑内,那么可能会有内部反射使信号衰减比 1/r^2 慢。如果信号通过人体(水),则信号将被衰减。天线很可能在所有方向上都没有相同的增益。房间里的金属物体可能会产生奇怪的干涉图案。等等等等……YMMV。

于 2014-02-07T01:24:08.323 回答
3

iBeacon 使用低功耗蓝牙 (LE) 来了解位置,低功耗蓝牙的距离/范围为 160 英尺 ( http://en.wikipedia.org/wiki/Bluetooth_low_energy )。

于 2013-12-06T07:03:05.667 回答
3

到 iBeacon 格式的广告数据包源的距离是根据通过将测量的接收信号强度与发射机应该在广告数据中编码的声称的发射功率进行比较来计算的信号路径衰减来 估计的。

像这样的基于路径损耗的方案只是近似的,并且会随着天线角度、干预对象以及可能的嘈杂射频环境等因素的变化而变化。相比之下,真正为距离测量而设计的系统(GPS、雷达等)依赖于传播时间的精确测量,在相同情况下甚至检查信号的相位。

正如 Jiaru 指出的那样,160 英尺可能超出了预期的范围,但这并不一定意味着一个数据包永远不会通过,只是人们不应该期望它在那个距离上工作。

于 2013-12-06T15:33:30.440 回答
1

这是可能的,但这取决于您接收的信标的功率输出、附近的其他射频源、障碍物和其他环境因素。最好的办法是在您感兴趣的环境中尝试一下。

于 2013-12-06T05:29:45.377 回答
1

由于多个电话和信标位于同一位置,因此很难以任何高精度测量接近度。尝试使用 Android“b 和 l 蓝牙扫描仪”应用程序来可视化多个信标的信号强度(距离)变化,您会很快发现可能需要复杂的自适应算法来提供任何形式的一致接近测量.

你会看到很多解决方案只是简单地指示用户“请把你的手机放在这里”,以减少客户的挫败感。

于 2014-06-15T18:50:00.267 回答