web-dev-qa-db-ja.com

イベアコンの距離を理解する

Ibeacon(beacon/bluetooth-le/ble)との距離がどのように機能するかという基本的な概念を理解しようとしています。 ibeaconがどれだけ正確に測定できるかについての真の文書はありますか。私が300フィート離れているとしましょう... ibeaconがこれを検出することは可能ですか?

106
rambossa

IOSが提供する距離の推定値は、iBeacon信号強度(rssi)と較正済み送信機電力(txPower)の比率に基づいています。 txPowerは、1メートル離れた場所でのrssiでの既知の測定信号強度です。各iBeaconは、正確な距離推定を可能にするために、この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は、our測定データポイント。 YMMV

213
davidgyoung

私は、iBeaconsの精度/ rssi /近接性の問題を非常に徹底的に調査しており、インターネットのすべてのリソース(ブログ、StackOverflowの投稿)が間違っていると本当に思っています。

davidgyoung(受け入れられた答え、> 100の賛成票)言う:

ここでの「精度」という用語は、iOSがメートル単位の距離を表すことに注意してください。

実際、ほとんどの人がこれを言っていますが、なぜだかわかりません!ドキュメンテーションにより、CLBeacon.proximityが非常に明確になります。

1シグマ水平精度をメートルで示します。このプロパティを使用して、同じ近接値を持つビーコンを区別します。ビーコンの正確な位置を特定するために使用しないでください。精度値は、RF干渉により変動する場合があります。

繰り返しましょう:1シグマ精度(メートル)。主題に関するgoogleのトップ10ページにはすべて、ドキュメントからの引用でのみ用語「1シグマ」がありますが、用語を分析するものはありません。

非常に重要なのは、実際に何であるかを説明することです1シグマ精度。次のURLから開始します。 http://en.wikipedia.org/wiki/Standard_errorhttp://en.wikipedia.org/wiki/Uncertainty

物理的な世界では、何らかの測定を行うと、常に異なる結果(ノイズ、歪みなどのため)が得られ、非常に多くの場合、結果はガウス分布を形成します。ガウス曲線を記述する2つの主要なパラメーターがあります。

  1. 平均(理解しやすい、曲線のピークが発生する値です)。
  2. 標準偏差。これは、曲線の幅を示します。すべての結果が互いに近いため、曲線が狭いほど精度が高くなります。曲線が広くて急ではない場合、同じ現象の測定値が互いに大きく異なるため、測定の品質が悪いことを意味します。

one sigmaは、ガウス曲線がどれだけ狭い/広いかを説明する別の方法です。
測定値の平均がXで、one sigmaがσの場合、すべての測定値の68%がX - σX + σの間にあると単純に言います。

例。距離を測定し、結果としてガウス分布を取得します。平均は10mです。 σが4mの場合、測定値の68%が6mから14mの間にあったことを意味します。

ビーコンで距離を測定すると、RSSIと1メートルのキャリブレーション値が得られるため、メートル単位で距離を測定できます。しかし、測定ごとに異なる値が得られ、ガウス曲線を形成します。 one sigma(および正確度)は測定の正確度であり、距離ではありません!

ビーコンをさらに遠ざけると、信号が悪いためにone 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開発者であることに加えて、私はワイヤレスエレクトロニクスの学位を持っています。ドキュメントの「1シグマ」という用語を無視すべきではないと思います。

Appleの精度アルゴリズムは、最近の測定値を収集し、それらのガウス分布を分析するだけの可能性があります。そして、それが精度を設定する方法です。確かに変更されているため、以前の分布距離値をリセットするために、ユーザーが移動しているかどうか(およびどのくらい速いか)を検出するために情報フォーム加速度計を使用する可能性を排除しません。

71
r00dY

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。

59
Mark Fassler

iBeaconはBluetooth Low Energy(LE)を使用して場所を認識し、Bluetooth LEの距離/範囲は160フィートです( http://en.wikipedia.org/wiki/Bluetooth_low_energy )。

3
Jiaru

IBeacon形式の広告パケットのソースまでの距離は、測定された受信信号強度と、送信機が広告データでエンコードすることになっている送信電力とを比較することで計算された信号パス減衰から推定です。

このようなパス損失ベースのスキームは近似値にすぎず、アンテナの角度、介在するオブジェクト、ノイズの多いRF環境などによって変動します。これに対して、距離測定用に実際に設計されたシステム(GPS、レーダーなど)は、伝播時間の正確な測定に依存しており、同じ場合には信号の位相を調べることもあります。

Jiaruが指摘しているように、160フィートはおそらく意図した範囲を超えていますが、それは必ずしもパケットがneverを通過するという意味ではありません。その距離で機能することを期待すべきではありません。

3
Chris Stratton

可能ですが、受信しているビーコンの出力、近くにある他のRFソース、障害物、その他の環境要因に依存します。最善の方法は、興味のある環境で試してみることです。

1
danh

同じ場所に複数の電話とビーコンがあると、高度な精度で近接度を測定することは難しくなります。 Android「b and l bluetooth le scanner」アプリを使用して、複数のビーコンの信号強度(距離)の変化を視覚化してみてください。一貫性のある近接測定の任意の形式。

顧客の不満を減らすために、単に「ここに携帯電話を置いてください」とユーザーに指示する多くのソリューションが表示されます。

1
user3742642