Ibeacon-Distanzierung verstehen


113

Der Versuch, ein grundlegendes Konzept zu verstehen, wie die Distanzierung mit ibeacon (Beacon / Bluetooth-Lowenergy / BLE) funktionieren kann. Gibt es eine echte Dokumentation darüber, wie genau ein Ibeacon messen kann? Nehmen wir an, ich bin 300 Fuß entfernt ... kann ein Ibeacon dies erkennen?

Speziell für v4 &. v5 und mit iOS aber generell jedem BLE Gerät.

Wie wirkt sich Bluetooth-Frequenz und -Durchsatz darauf aus? Können Beacon-Geräte den Abstand vergrößern oder einschränken / die zugrunde liegende BLE verbessern?

dh

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

Antworten:


222

Die von iOS bereitgestellte Entfernungsschätzung basiert auf dem Verhältnis der Beacon-Signalstärke (rssi) zur kalibrierten Sendeleistung (txPower). Die txPower ist die bekannte gemessene Signalstärke in rssi in 1 Meter Entfernung. Jedes Beacon muss mit diesem txPower-Wert kalibriert werden, um genaue Entfernungsschätzungen zu ermöglichen.

Die Entfernungsschätzungen sind zwar nützlich, aber nicht perfekt und erfordern die Steuerung anderer Variablen. Informieren Sie sich über die Komplexität und Einschränkungen, bevor Sie diese missbrauchen.

Beim Erstellen der Android iBeacon-Bibliothek mussten wir einen eigenen unabhängigen Algorithmus entwickeln, da der iOS CoreLocation-Quellcode nicht verfügbar ist. Wir haben eine Reihe von RSSI-Messungen in bekannten Entfernungen gemessen und dann eine Best-Fit-Kurve erstellt, die unseren Datenpunkten entspricht. Der Algorithmus, den wir entwickelt haben, wird unten als Java-Code angezeigt.

Beachten Sie, dass der Begriff "Genauigkeit" hier iOS für die Entfernung in Metern spricht. Diese Formel ist nicht perfekt, entspricht aber in etwa der Leistung von 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;
  }
}   

Hinweis: Die Werte 0,89976, 7,7095 und 0,111 sind die drei Konstanten, die beim Auflösen einer Best-Fit-Kurve für unsere gemessenen Datenpunkte berechnet werden. YMMV


4
Tolle Antwort und Code David. Woher kommt der txPower-Wert? Ist es ein Kalibrierungswert, der auf der Client- (Empfangsseite) durchgeführt wird? Oder ist es eine Metrik, die Sie von einem Leuchtfeuer erhalten können?
Rmooney

14
Wofür sind die Werte 0,89976, 7,7095 und 0,111?
Malhal

4
Mit dieser Gleichung erhalte ich 84457991114.574738, wenn das Leuchtfeuer von meinem Telefon aus auf 1/4 liegt.
JDOG

1
Eddystone ist ein 0 m Referenzpunkt, Jahre. Die Division vs. Subtraktion liegt daran, dass wir in diesem Fall keine logarithmische Funktion verwenden. Das Subtrahieren funktionierte für die von uns verwendete Kurvenanpassung nicht.
Davidgyoung

1
@davidgyoung können Sie bitte die beste Kurvenanpassungsformel oder irgendetwas mitteilen, anhand dessen wir diese 3 Werte für unser Gerät herausfinden können?
Paresh Mayani

77

Ich untersuche die Frage der Genauigkeit / RSSI / Nähe zu iBeacons sehr gründlich und denke wirklich, dass alle Ressourcen im Internet (Blogs, Beiträge in StackOverflow) falsch sind.

davidgyoung (akzeptierte Antwort,> 100 positive Stimmen) sagt:

Beachten Sie, dass der Begriff "Genauigkeit" hier iOS für die Entfernung in Metern spricht.

Eigentlich sagen die meisten Leute das, aber ich habe keine Ahnung warum! Die Dokumentation macht sehr, sehr deutlich, dass CLBeacon.proximity:

Zeigt die horizontale Genauigkeit von einem Sigma in Metern an. Verwenden Sie diese Eigenschaft, um zwischen Beacons mit demselben Näherungswert zu unterscheiden. Verwenden Sie es nicht, um einen genauen Ort für das Leuchtfeuer zu identifizieren. Die Genauigkeitswerte können aufgrund von HF-Störungen schwanken.

Lassen Sie mich wiederholen: eine Sigma-Genauigkeit in Metern . Alle 10 Top-Seiten in Google zu diesem Thema haben den Begriff "One Sigma" nur in Zitaten aus Dokumenten, aber keine von ihnen analysiert den Begriff, der für das Verständnis von zentraler Bedeutung ist.

Sehr wichtig ist es zu erklären, was eigentlich eine Sigma-Genauigkeit ist . Folgende URLs beginnen mit: http://en.wikipedia.org/wiki/Standard_error , http://en.wikipedia.org/wiki/Uncertainty

In der physischen Welt erhalten Sie bei Messungen immer unterschiedliche Ergebnisse (aufgrund von Rauschen, Verzerrungen usw.) und sehr oft Ergebnisse aus der Gaußschen Verteilung. Es gibt zwei Hauptparameter, die die Gaußsche Kurve beschreiben:

  1. Mittelwert (was leicht zu verstehen ist, es ist der Wert, für den die Spitze der Kurve auftritt).
  2. Standardabweichung, die angibt, wie breit oder schmal die Kurve ist. Je schmaler die Kurve, desto besser die Genauigkeit, da alle Ergebnisse nahe beieinander liegen. Wenn die Kurve breit und nicht steil ist, bedeutet dies, dass sich die Messungen desselben Phänomens stark voneinander unterscheiden, sodass die Messung eine schlechte Qualität aufweist.

Ein Sigma ist eine andere Art zu beschreiben, wie schmal / breit die Gaußsche Kurve ist.
Es heißt einfach, dass, wenn der Mittelwert der Messung X ist und ein Sigma σ ist, 68% aller Messungen zwischen X - σund liegen X + σ.

Beispiel. Wir messen die Entfernung und erhalten dadurch eine Gaußsche Verteilung. Der Mittelwert beträgt 10m. Wenn σ 4 m beträgt, bedeutet dies, dass 68% der Messungen zwischen 6 m und 14 m lagen.

Wenn wir die Entfernung mit Beacons messen, erhalten wir einen RSSI- und einen 1-Meter-Kalibrierungswert, mit dem wir die Entfernung in Metern messen können. Jede Messung ergibt jedoch unterschiedliche Werte, die eine Gauß-Kurve bilden. Und ein Sigma (und Genauigkeit) ist die Genauigkeit der Messung, nicht die Entfernung!

Es kann irreführend sein, denn wenn wir das Leuchtfeuer weiter weg bewegen, nimmt ein Sigma tatsächlich zu, weil das Signal schlechter ist. Mit unterschiedlichen Beacon-Leistungsstufen können wir jedoch völlig unterschiedliche Genauigkeitswerte erhalten, ohne die Entfernung tatsächlich zu ändern. Je höher die Leistung, desto weniger Fehler.

Es gibt einen Blog-Beitrag, der die Angelegenheit gründlich analysiert: http://blog.shinetech.com/2014/02/17/the-beacon-experiments-low-energy-bluetooth-devices-in-action/

Der Autor hat die Hypothese, dass Genauigkeit tatsächlich Entfernung ist. Er behauptet, dass Beacons von Kontakt.io fehlerhaft sind, weil er die Leistung auf den Maximalwert erhöht hat. Der Genauigkeitswert war für 1, 5 und sogar 15 Meter sehr klein. Vor dem Erhöhen der Leistung lag die Genauigkeit ziemlich nahe an den Abstandswerten. Ich persönlich denke, dass es richtig ist, denn je höher die Leistung, desto weniger Auswirkungen von Interferenzen. Und es ist seltsam, warum sich Estimote-Beacons nicht so verhalten.

Ich sage nicht, dass ich zu 100% Recht habe, aber abgesehen davon, dass ich iOS-Entwickler bin, habe ich einen Abschluss in drahtloser Elektronik und ich denke, wir sollten den Begriff "One Sigma" aus den Dokumenten nicht ignorieren, und ich möchte eine Diskussion darüber beginnen.

Es ist möglich, dass Apples Algorithmus für die Genauigkeit nur aktuelle Messungen sammelt und deren Gaußsche Verteilung analysiert. Und so setzt es Genauigkeit. Ich würde die Möglichkeit nicht ausschließen, dass sie einen Beschleunigungsmesser mit Info-Formular verwenden, um festzustellen, ob sich der Benutzer bewegt (und wie schnell), um die vorherigen Werte für die Verteilungsentfernung zurückzusetzen, da sie sich sicherlich geändert haben.


Hervorragende Einführung in die "Sigma" -Korrelation. Es wäre auch seltsam für einen Geek (sogar einen Apple-Geek), den Variablennamen "Genauigkeit" zu verwenden, wenn sie "Entfernung" bedeuten. Jede RSSI-Bestimmung "Entfernung" oder "Standort" ist mit einer "Fehlerquote" verbunden (z. B. sind Sie hier +/- so oft). Es ist also sinnvoll, dass ihre Bibliothek sowohl eine Funktion für "Entfernung" als auch eine Funktion für "Genauigkeit" hat.
Jesse Chisholm

@ r00dY eine geniale Erklärung muss ich sagen. Nun nur eine Frage, ob Sie helfen können. Ich habe Kallibrierungsdaten für Beacon, gemessen bei 1 m, 2 m ... 15 m, ... 20 m und so weiter. Ich habe die durchschnittlichen Entfernungswerte für jede Entfernung. Wenn wir nun vom Delegierten des Standortmanagers Beacon-Daten wie Beacon Major, Minor, RSSI usw. erhalten, ist es ratsam, die Entfernung zu verwenden, die aus der oben erläuterten Kalibrierung erhalten wurde, die ich erklärt habe? Bitte schlagen Sie vor, jede Hilfe wäre dankbar. Danke im Voraus.
Alkesh Fudani

Apple accuracyist eine Funktion von beiden rssiund tx power. Es ist nicht ganz unmöglich, dass Estimote beschlossen hat, die accuracyFunktion zurückzuentwickeln, und tx powerWerte so bereitgestellt hat , dass das Lesen accuracydie Entfernung schätzt. Dies bietet eine einfachere Entwicklererfahrung für die Schätzung der Entfernung, verstößt jedoch gegen Apples Definition von accuracy. Andere Marken halten sich möglicherweise eher an die Definition von Apple accuracyund liefern tatsächlich eine "1-Meter-Schätzung" anstelle eines rückentwickelten Werts, mit dem die accuracyEntfernung geschätzt wird.
Sinnvoll

63

Die iBeacon-Ausgangsleistung wird in einem Abstand von 1 Meter gemessen (kalibriert). Nehmen wir an, dies ist -59 dBm (nur ein Beispiel). Der iBeacon wird diese Nummer als Teil seiner LE-Werbung aufnehmen.

Das Abhörgerät (iPhone usw.) misst den RSSI des Geräts. Nehmen wir zum Beispiel an, dass dies beispielsweise -72 dBm ist.

Da diese Zahlen in dBm angegeben sind, ist das Verhältnis der Leistung tatsächlich die Differenz in dB. So:

ratio_dB = txCalibratedPower - RSSI

Um dies in ein lineares Verhältnis umzuwandeln, verwenden wir die Standardformel für dB:

ratio_linear = 10 ^ (ratio_dB / 10)

Wenn wir von Energieeinsparung ausgehen, muss die Signalstärke als 1 / r ^ 2 abfallen. So:

power = power_at_1_meter / r^2. Wenn wir nach r auflösen, erhalten wir:

r = sqrt(ratio_linear)

In Javascript würde der Code folgendermaßen aussehen:

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

Beachten Sie, dass es in einem Stahlgebäude möglicherweise interne Reflexionen gibt, die den Signalabfall langsamer als 1 / r ^ 2 machen. Wenn das Signal durch einen menschlichen Körper (Wasser) geleitet wird, wird das Signal gedämpft. Es ist sehr wahrscheinlich, dass die Antenne nicht in alle Richtungen gleich stark ist. Metallgegenstände im Raum können seltsame Interferenzmuster erzeugen. Usw. YMMV.


aus neugier: wie geht ratio_dB = txCalibratedPower - RSSIdas? Da beide Maße in dBm angegeben sind, würde ich davon ausgehen, dass das Ergebnis auch in dBm angegeben ist.
BlackWolf


3

Entfernungen zur Quelle von iBeacon-formatierten Werbepaketen werden aus der Signalpfaddämpfung geschätzt, die durch Vergleichen der gemessenen empfangenen Signalstärke mit der beanspruchten Sendeleistung berechnet wird, die der Sender in den Werbedaten codieren soll.

Ein solches Pfadverlust-basiertes Schema ist nur ungefähr und kann mit Antennenwinkeln, dazwischenliegenden Objekten und vermutlich einer verrauschten HF-Umgebung variieren. Im Vergleich dazu beruhen Systeme, die wirklich für die Entfernungsmessung (GPS, Radar usw.) ausgelegt sind, auf präzisen Messungen der Ausbreitungszeit, wobei in denselben Fällen sogar die Phase des Signals untersucht wird.

Wie Jiaru betont, liegt 160 Fuß wahrscheinlich außerhalb des beabsichtigten Bereichs, aber das bedeutet nicht unbedingt, dass ein Paket niemals durchkommt, nur dass man nicht erwarten sollte, dass es in dieser Entfernung funktioniert.


1

Es ist möglich, aber es hängt von der Leistung des empfangenen Beacons, anderen HF-Quellen in der Nähe, Hindernissen und anderen Umweltfaktoren ab. Probieren Sie es am besten in der Umgebung aus, an der Sie interessiert sind.


1

Mit mehreren Telefonen und Beacons am selben Standort wird es schwierig sein, die Nähe mit einem hohen Maß an Genauigkeit zu messen. Wenn Sie die Android-App "b and l bluetooth le scanner" verwenden, um die Variationen der Signalstärke (Entfernung) für mehrere Beacons zu visualisieren, werden Sie schnell feststellen, dass komplexe, adaptive Algorithmen erforderlich sein können, um jede Form der konsistenten Näherungsmessung bereitzustellen .

Sie werden viele Lösungen sehen, die den Benutzer einfach anweisen, "Bitte halten Sie Ihr Telefon hier", um die Frustration der Kunden zu verringern.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.