Zrozumienie odległości między ibeacon


113

Próba zrozumienia podstawowej koncepcji tego, jak może działać dystansowanie z ibeacon (beacon / Bluetooth-lowenergy / BLE). Czy istnieje prawdziwa dokumentacja na temat tego, jak daleko może mierzyć ibeacon. Powiedzmy, że jestem 300 stóp dalej ... czy ibeacon może to wykryć?

Specjalnie dla v4 i. v5 i iOS, ale ogólnie każde urządzenie BLE.

Jak wpływa na to częstotliwość i przepustowość Bluetooth? Czy urządzenia nawigacyjne mogą zwiększyć lub ograniczyć odległość / poprawić leżące u podstaw BLE?

to znaczy

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

Odpowiedzi:


223

Szacunkowa odległość dostarczana przez iOS jest oparta na stosunku mocy sygnału nawigacyjnego (rssi) do skalibrowanej mocy nadajnika (txPower). TxPower to znana zmierzona siła sygnału w rssi z odległości 1 metra. Każda lampa ostrzegawcza musi być skalibrowana tą wartością txPower, aby umożliwić dokładne oszacowanie odległości.

Chociaż oszacowania odległości są przydatne, nie są doskonałe i wymagają kontroli innych zmiennych. Upewnij się, że przeczytałeś o zawiłościach i ograniczeniach, zanim użyjesz tego w niewłaściwy sposób.

Kiedy budowaliśmy bibliotekę Android iBeacon, musieliśmy wymyślić własny niezależny algorytm, ponieważ kod źródłowy iOS CoreLocation nie jest dostępny. Zmierzyliśmy kilka pomiarów rssi na znanych odległościach, a następnie wykonaliśmy najlepszą krzywą dopasowania, aby dopasować nasze punkty danych. Algorytm, który wymyśliliśmy, jest pokazany poniżej jako kod Java.

Zwróć uwagę, że termin „dokładność” oznacza tutaj odległość w metrach. Ta formuła nie jest idealna, ale z grubsza przybliża to, co robi 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;
  }
}   

Uwaga: Wartości 0,89976, 7,7095 i 0,111 to trzy stałe obliczone podczas rozwiązywania krzywej o najlepszym dopasowaniu do naszych zmierzonych punktów danych. YMMV


4
Świetna odpowiedź i kod David. Skąd się bierze wartość txPower? Czy jest to wartość kalibracji wykonana po stronie klienta (odbiorczej)? A może jest to wskaźnik, który można uzyskać z latarni nawigacyjnej?
rmooney,

14
jakie są wartości 0,89976, 7,7095 i 0,111?
malhal

4
Dzięki temu równaniu otrzymuję 84457991114.574738, gdy światło ostrzegawcze leży na 1/4 z mojego telefonu.
jdog

1
Eddystone jest punktem odniesienia 0 m, rok. Dzielenie a odejmowanie jest spowodowane tym, że w tym przypadku nie używamy funkcji logarytmicznej. Odejmowanie nie działało dla zastosowanego dopasowania krzywej.
davidgyoung

1
@davidgyoung, czy możesz podzielić się najlepszą formułą dopasowania krzywej lub czymkolwiek, dzięki czemu możemy znaleźć te 3 wartości dla naszego urządzenia?
Paresh Mayani

77

Bardzo dokładnie badam kwestię dokładności / rssi / bliskości z iBeacons i naprawdę myślę, że wszystkie zasoby w Internecie (blogi, posty w StackOverflow) źle to rozumieją.

davidgyoung (zaakceptowana odpowiedź,> 100 głosów za) mówi:

Zwróć uwagę, że termin „dokładność” oznacza tutaj odległość w metrach.

Właściwie większość ludzi tak mówi, ale nie mam pojęcia, dlaczego! Z dokumentacji bardzo jasno wynika, że ​​CLBeacon.pracent:

Wskazuje poziomą dokładność jednej sigmy w metrach. Ta właściwość służy do rozróżniania sygnałów nawigacyjnych o tej samej wartości bliskości. Nie używaj go do określenia dokładnej lokalizacji latarni. Wartości dokładności mogą się zmieniać z powodu zakłóceń RF.

Powtórzę: dokładność jednej sigmy w metrach . Wszystkie 10 najważniejszych stron w Google na ten temat ma termin „jedna sigma” tylko w cytowaniu z dokumentów, ale żadna z nich nie analizuje tego terminu, co jest kluczowe dla zrozumienia tego.

Bardzo ważne jest wyjaśnienie, czym właściwie jest dokładność jednej sigmy . Następujące adresy URL na początek: http://en.wikipedia.org/wiki/Standard_error , http://en.wikipedia.org/wiki/Uncertainty

W świecie fizycznym, kiedy wykonujesz jakiś pomiar, zawsze otrzymujesz inne wyniki (z powodu szumu, zniekształceń itp.) I bardzo często wyniki tworzą rozkład Gaussa. Istnieją dwa główne parametry opisujące krzywą Gaussa:

  1. średnia (co jest łatwe do zrozumienia, jest to wartość, dla której występuje szczyt krzywej).
  2. odchylenie standardowe, które określa, jak szeroka lub wąska jest krzywa. Im węższa krzywa, tym lepsza dokładność, ponieważ wszystkie wyniki są blisko siebie. Jeżeli krzywa jest szeroka i nie stroma, oznacza to, że pomiary tego samego zjawiska bardzo się od siebie różnią, więc pomiar ma złą jakość.

jedna sigma to inny sposób opisania, jak wąska / szeroka jest krzywa gaussa.
Mówi się po prostu, że jeśli średnia pomiaru wynosi X, a jedna sigma to σ, to 68% wszystkich pomiarów będzie znajdować się między X - σa X + σ.

Przykład. Mierzymy odległość i otrzymujemy rozkład Gaussa. Średnia to 10m. Jeśli σ wynosi 4 m, oznacza to, że 68% pomiarów miało miejsce między 6 m a 14 m.

Gdy mierzymy odległość za pomocą radiolatarni, otrzymujemy RSSI i wartość kalibracji 1 metra, co pozwala nam mierzyć odległość w metrach. Ale każdy pomiar daje inne wartości, które tworzą krzywą Gaussa. I jedna sigma (i dokładność) to dokładność pomiaru, a nie odległość!

Może to być mylące, ponieważ kiedy odsuwamy latarnię dalej, jedna sigma faktycznie rośnie, ponieważ sygnał jest gorszy. Ale przy różnych poziomach mocy latarni możemy uzyskać zupełnie inne wartości dokładności bez faktycznej zmiany odległości. Im wyższa moc, tym mniej błędów.

Jest post na blogu, który dokładnie analizuje sprawę: http://blog.shinetech.com/2014/02/17/the-beacon-experiments-low-energy-bluetooth-devices-in-action/

Autor postawił hipotezę, że dokładność to tak naprawdę odległość. Twierdzi, że latarnie od Kontakt.io są wadliwe, ponieważ zwiększając moc do wartości maksymalnej wartość celności była bardzo mała dla 1, 5, a nawet 15 metrów. Przed zwiększeniem mocy dokładność była dość bliska wartościom odległości. Osobiście uważam, że to poprawne, bo im wyższy poziom mocy, tym mniejszy wpływ zakłóceń. I to dziwne, dlaczego beacony Estimote nie zachowują się w ten sposób.

Nie mówię, że mam 100% racji, ale poza tym, że jestem programistą iOS, mam dyplom z elektroniki bezprzewodowej i uważam, że nie powinniśmy ignorować terminu „jedna sigma” z dokumentacji i chciałbym rozpocząć dyskusję na ten temat.

Możliwe, że algorytm dokładności Apple'a po prostu zbiera ostatnie pomiary i analizuje ich rozkład gaussowski. I tak wyznacza dokładność. Nie wykluczałbym możliwości, że używają akcelerometru formularza informacyjnego do wykrywania, czy użytkownik się porusza (i jak szybko), aby zresetować poprzednie wartości odległości dystrybucji, ponieważ z pewnością uległy zmianie.


Doskonałe wprowadzenie do korelacji „sigma”. Byłoby również dziwne dla maniaka (nawet maniaka Apple), gdyby używał nazwy zmiennej „dokładność”, gdy chodziło o „odległość”. Każde określenie „odległości” lub „lokalizacji” RSSI wiąże się z „marginesem błędu” (np. Jesteś tutaj +/- tyle). Dlatego ma sens, aby ich biblioteka zawierała zarówno funkcję „odległości”, jak i funkcję „dokładności”.
Jesse Chisholm

@ r00dY, muszę powiedzieć, genialne wyjaśnienie. Teraz tylko pytanie, czy możesz pomóc. Mam dane kalibracyjne dla lampy ostrzegawczej mierzone na 1m, 2m ... 15m, ... 20m i tak dalej. Mam średnie wartości odległości dla każdego dystansu. Teraz, od delegata menedżera lokalizacji, kiedy otrzymamy dane nawigacyjne, takie jak beacon major, minor, rssi itp., Czy zaleca się użycie odległości uzyskanej z powyższej kalibracji, którą wyjaśniłem? Proszę zasugerować, każda pomoc będzie mile widziana. Z góry dziękuję.
Alkesh Fudani

Apple accuracyjest funkcją obu rssii tx power. Nie jest całkowicie niemożliwe, że Estimote zdecydował się na inżynierię wsteczną tej accuracyfunkcji i zaczął dostarczać tx powerwartości takie, że odczyt accuracyszacuje odległość. Zapewnia to prostsze środowisko programistyczne do szacowania odległości, ale łamie definicję Apple dotyczącą accuracy. Inne marki mogą być bardziej zgodne z definicją Apple accuracyi faktycznie podawać „szacunkową wartość 1 metra”, a nie odwrotną wartość, która accuracyokreśla szacunkową odległość.
Senseful

63

Moc wyjściowa iBeacon jest mierzona (kalibrowana) z odległości 1 metra. Załóżmy, że jest to -59 dBm (tylko przykład). IBeacon umieści ten numer w reklamie LE.

Urządzenie nasłuchowe (iPhone itp.) Mierzy RSSI urządzenia. Załóżmy na przykład, że jest to, powiedzmy, -72 dBm.

Ponieważ te liczby są w dBm, stosunek mocy jest w rzeczywistości różnicą w dB. Więc:

ratio_dB = txCalibratedPower - RSSI

Aby przekształcić to w współczynnik liniowy, używamy standardowego wzoru na dB:

ratio_linear = 10 ^ (ratio_dB / 10)

Jeśli przyjmiemy zachowanie energii, to siła sygnału musi spaść jako 1 / r ^ 2. Więc:

power = power_at_1_meter / r^2. Rozwiązując r, otrzymujemy:

r = sqrt(ratio_linear)

W Javascript kod wyglądałby tak:

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

Zwróć uwagę, że jeśli jesteś w stalowym budynku, być może pojawią się wewnętrzne odbicia, które spowodują, że sygnał zanika wolniej niż 1 / r ^ 2. Jeśli sygnał przechodzi przez ciało ludzkie (wodę), wówczas sygnał zostanie osłabiony. Jest bardzo prawdopodobne, że antena nie ma jednakowego wzmocnienia we wszystkich kierunkach. Metalowe przedmioty w pomieszczeniu mogą tworzyć dziwne wzory interferencyjne. Itd, etc ... YMMV.


z ciekawości: jak to ratio_dB = txCalibratedPower - RSSIdziała? Ponieważ obie miary są w dBm, zakładam, że wynik będzie również w dBm?
BlackWolf


3

Odległości do źródła pakietów reklamowych w formacie iBeacon są szacowane na podstawie tłumienia ścieżki sygnału obliczonego przez porównanie zmierzonej mocy odebranego sygnału z deklarowaną mocą nadawania, którą nadajnik ma zakodować w danych reklamowych.

Schemat oparty na utracie ścieżki, taki jak ten, jest tylko przybliżony i podlega zmianom w zależności od takich czynników, jak kąty anteny, obiekty interweniujące i przypuszczalnie hałaśliwe środowisko RF. Dla porównania, systemy rzeczywiście przeznaczone do pomiaru odległości (GPS, radar itp.) Polegają na precyzyjnych pomiarach czasu propagacji, w tych samych przypadkach nawet na badaniu fazy sygnału.

Jak zauważa Jiaru, 160 stóp prawdopodobnie przekracza zamierzony zasięg, ale to niekoniecznie oznacza, że ​​pakiet nigdy nie przejdzie, tylko że nie należy oczekiwać, że zadziała na tej odległości.


1

Jest to możliwe, ale zależy to od mocy wyjściowej radiolatarni, którą otrzymujesz, innych źródeł fal radiowych w pobliżu, przeszkód i innych czynników środowiskowych. Najlepszą rzeczą do zrobienia jest wypróbowanie go w środowisku, które Cię interesuje.


1

Mając wiele telefonów i latarni w tym samym miejscu, trudno będzie zmierzyć bliskość z jakimkolwiek wysokim stopniem dokładności. Spróbuj użyć aplikacji „b and l bluetooth le scanner” na Androida, aby zwizualizować zmiany siły sygnału (odległości) dla wielu lamp ostrzegawczych, a szybko odkryjesz, że złożone, adaptacyjne algorytmy mogą być wymagane do zapewnienia dowolnej formy spójnego pomiaru odległości .

Zobaczysz wiele rozwiązań po prostu instruujących użytkownika, aby „trzymał tutaj telefon”, aby zmniejszyć frustrację klientów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.