ibeacon distancingを理解する


113

ibeacon(ビーコン/ Bluetooth-lowenergy / BLE)との距離がどのように機能するかの基本的な概念を理解しようとしています。ibeaconがどれだけ正確に測定できるかについての真のドキュメントはありますか?私が300フィート離れているとしましょう... ibeaconがこれを検出することは可能ですか?

特にv4&の場合。v5とiOSを使用しますが、通常はBLEデバイスです。

Bluetoothの周波数とスループットはこれにどのように影響しますか?ビーコンデバイスは、距離を拡張または制限できます/基盤となるBLEを改善できますか?

すなわち

               | 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       |

回答:


223

iOSによって提供される距離の推定値は、キャリブレーションされた送信機電力(txPower)に対するビーコン信号強度(rssi)の比率に基づいています。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はにベストフィット曲線を解く際に算出された3つの定数である私たちの測定データポイント。YMMV


4
素晴らしい答えとコードDavid。txPower値はどこから来ますか?クライアント(受信)側で行った校正値ですか?それとも、ビーコンから取得できるメトリックですか?
rmooney 2014年

14
0.89976、7.7095、0.111の値は何ですか?
Malhal 2014年

4
この式で、ビーコンが私の電話から1/4に置かれているとき、84457991114.574738になります。
jdog 2014

1
Eddystoneは0 mの基準点です。除算と減算の違いは、この場合は対数関数を使用していないためです。使用したカーブフィットでは減算は機能しませんでした。
davidgyoung 2016

1
@davidgyoung最高のカーブフィット式や、デバイスのこれら3つの値を見つけるために役立つ情報を教えてください。
Paresh Mayani 2016

77

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

davidgyoung(受け入れられた回答、100以上の賛成)は言う:

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

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

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

繰り返します。メートル単位で1シグマの精度です。主題に関するグーグルのトップ10ページすべては、ドキュメントからの引用でのみ「1シグマ」という用語を持っていますが、どれもこれを理解するための核心である用語を分析していません。

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

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

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

1つのシグマはガウス曲線の狭さ/広さを表すもう1つの方法です。
それは単に測定の平均がXであり、1つのシグマがσである場合、すべての測定の68%はとの間にあるX - σと言いX + σます。

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

ビーコンで距離を測定すると、RSSIと1メートルのキャリブレーション値が取得され、メートル単位で距離を測定できます。しかし、測定ごとに異なる値が得られ、ガウス曲線が形成されます。そして、1つのシグマ(および精度)は、距離ではなく測定の精度です!

ビーコンをさらに遠ざけると信号が悪いため、実際には1つのシグマが増加するため、誤解を招く可能性があります。しかし、異なるビーコンパワーレベルでは、実際に距離を変更することなく、まったく異なる精度値を取得できます。電力が高いほど、エラーは少なくなります。

問題を徹底的に分析したブログ投稿があります:http : //blog.shinetech.com/2014/02/17/the-beacon-experiments-low-energy-bluetooth-devices-in-action/

著者は、正確さは実際には距離であるという仮説を持っています。彼は、電力を最大値に増やしたときにKontakt.ioからのビーコンが誤った原因であることを主張し、精度値は1、5、さらには15メートルと非常に小さかった。パワーを上げる前は、精度は距離の値にかなり近かった。個人的には、パワーレベルが高いほど干渉の影響が少ないため、それは正しいと思います。そして、エスティモートのビーコンがこのように動作しないのは奇妙です。

私は100%正しいと言っているわけではありませんが、iOS開発者であることを除いて、私はワイヤレスエレクトロニクスの学位を持っています。ドキュメントから「1つのシグマ」という用語を無視してはいけないと思います。そのことについて話し合いを始めたいと思います。

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


「シグマ」相関の優れた紹介。また、オタク(Appleオタクでさえ)が「距離」を意味するときに変数名「accuracy」を使用するのは奇妙です。すべてのRSSIの「距離」または「位置」の決定には、「エラーのマージン」が伴います(たとえば、あなたはここに+/-これだけです)。したがって、彼らのライブラリが「距離」の関数と「正確さ」の関数の両方を持つことは理にかなっています。
ジェシーチザム2015

@ r00dY私が言わなければならない素晴らしい説明。さて、あなたが助けることができるかどうかだけの質問。1m、2m ... 15m、... 20mなどで測定されたビーコンのcallibrationデータがあります。各距離の平均距離値があります。ここで、ビーコンメジャー、マイナー、rssiなどのビーコンデータを取得するときにロケーションマネージャーデリゲートから、上記で説明したキャリブレーションから取得した距離を使用することをお勧めしますか?提案してください、どんな助けでもいただければ幸いです。前もって感謝します。
Alkesh Fudani 2017年

Appleのは、accuracy両方の関数であるrssitx power。Estimoteがaccuracy関数をリバースエンジニアリングすることを決定しtx power、読み取りaccuracy値が距離を推定するような値の提供を開始したことは完全に不可能ではありません。これは距離を推定するためのよりシンプルな開発者体験を提供しますが、Appleのの定義を破りaccuracyます。他のブランドは、Appleの定義により忠実でaccuracyあり、実際にaccuracy距離を推定するリバースエンジニアリングされた値ではなく、「1メートルの推定値」を提供する場合があります。
18

63

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。


好奇心から:どのようにうまくいきますかratio_dB = txCalibratedPower - RSSI?両方の測定値がdBmであるため、結果もdBmであると想定しますか?
BlackWolf 2015年


3

iBeaconフォーマットのアドバタイズメントパケットのソースまでの距離は、測定された受信信号強度を、送信機がアドバタイズメントデータでエンコードすることになっている要求送信電力と比較することによって計算れた信号パス減衰から推定されます。

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

Jiaruが指摘するように、160フィートは、おそらく意図した範囲を超えているが、それは必ずしもパケットがなることを意味するものではありません決して 1は、その距離での作業にそれを期待してはならないだけであること、を介して取得しません。


1

それは可能ですが、受信しているビーコンの出力、近くにある他の高周波源、障害物、その他の環境要因によって異なります。最善の方法は、興味のある環境で試してみることです。


1

同じ場所に複数の電話とビーコンがあると、高い精度で近接度を測定することが難しくなります。Androidの「b and l bluetooth le Scanner」アプリを使用して、複数のビーコンの信号強度(距離)の変動を視覚化すると、一貫した近接測定を行うために複雑で適応性のあるアルゴリズムが必要になる場合があることがすぐにわかります。

顧客のフラストレーションを減らすために、ユーザーに「ここにスマートフォンをかざしてください」と単に指示する多くのソリューションが表示されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.