Capire la distanza ibeacon


113

Cercando di cogliere un concetto di base di come la distanza con ibeacon (beacon / Bluetooth-lowenergy / BLE) può funzionare. Esiste una vera documentazione su quanto esattamente un ibeacon può misurare. Diciamo che sono a 300 piedi di distanza ... è possibile che un ibeacon lo rilevi?

Specificamente per v4 e. v5 e con iOS ma generalmente qualsiasi dispositivo BLE.

In che modo la frequenza e il throughput Bluetooth influiscono su questo? I dispositivi beacon possono aumentare o limitare la distanza / migliorare il BLE sottostante?

vale a dire

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

Risposte:


223

La stima della distanza fornita da iOS si basa sul rapporto tra la potenza del segnale del beacon (rssi) e la potenza del trasmettitore calibrato (txPower). TxPower è la potenza del segnale misurata nota in rssi a 1 metro di distanza. Ogni faro deve essere calibrato con questo valore txPower per consentire stime precise della distanza.

Sebbene le stime della distanza siano utili, non sono perfette e richiedono il controllo per altre variabili. Assicurati di leggere le complessità e i limiti prima di abusarne.

Quando stavamo creando la libreria Android iBeacon, abbiamo dovuto creare un nostro algoritmo indipendente perché il codice sorgente iOS CoreLocation non è disponibile. Abbiamo misurato una serie di misurazioni rssi a distanze note, quindi abbiamo eseguito una curva di adattamento migliore per abbinare i nostri punti dati. L'algoritmo che abbiamo creato è mostrato di seguito come codice Java.

Nota che il termine "precisione" qui è che iOS indica la distanza in metri. Questa formula non è perfetta, ma si avvicina all'incirca a ciò che fa 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;
  }
}   

Nota: i valori 0,89976, 7,7095 e 0,111 sono le tre costanti calcolate durante la risoluzione per una curva di adattamento migliore ai nostri punti dati misurati. YMMV


4
Ottima risposta e codice David. Da dove viene il valore txPower? È un valore di calibrazione eseguito sul lato client (ricevente)? O è una metrica che puoi ottenere da un beacon?
rmooney

14
a cosa servono i valori 0,89976, 7,7095 e 0,111?
malhal

4
Con questa equazione mi ritrovo con 84457991114.574738 quando il faro si trova su 1/4 dal mio telefono.
jdog

1
Eddystone è un punto di riferimento di 0 m, anni. La divisione contro la sottrazione è perché in questo caso non stiamo usando una funzione logaritmica. La sottrazione non ha funzionato per l'adattamento della curva che abbiamo usato.
davidgyoung

1
@davidgyoung puoi condividere la migliore formula di adattamento della curva o qualsiasi altra cosa attraverso la quale possiamo scoprire questi 3 valori per il nostro dispositivo?
Paresh Mayani

77

Sto indagando a fondo sulla questione dell'accuratezza / rssi / prossimità con iBeacons e penso davvero che tutte le risorse in Internet (blog, post in StackOverflow) siano sbagliate.

davidgyoung (risposta accettata,> 100 voti positivi) dice:

Nota che il termine "precisione" qui è che iOS indica la distanza in metri.

In realtà, la maggior parte delle persone lo dice ma non ho idea del perché! La documentazione rende molto molto chiaro che CLBeacon.proximity:

Indica la precisione orizzontale di un sigma in metri. Utilizzare questa proprietà per distinguere tra beacon con lo stesso valore di prossimità. Non utilizzarlo per identificare una posizione precisa per il faro. I valori di precisione possono variare a causa dell'interferenza RF.

Lasciatemelo ripetere: una precisione di un sigma in metri . Tutte le 10 pagine principali di Google sull'argomento hanno il termine "un sigma" solo tra citazioni da documenti, ma nessuna di esse analizza il termine, che è fondamentale per capirlo.

Molto importante è spiegare cos'è in realtà l' accuratezza di un sigma . I seguenti URL per iniziare: http://en.wikipedia.org/wiki/Standard_error , http://en.wikipedia.org/wiki/Uncertainty

Nel mondo fisico, quando effettui delle misurazioni, ottieni sempre risultati diversi (a causa del rumore, della distorsione, ecc.) E molto spesso i risultati formano una distribuzione gaussiana. Ci sono due parametri principali che descrivono la curva gaussiana:

  1. media (che è facile da capire, è il valore per il quale si verifica il picco della curva).
  2. deviazione standard, che indica quanto è ampia o stretta la curva. La curva più stretta, la migliore precisione, perché tutti i risultati sono vicini tra loro. Se la curva è ampia e non ripida, significa che le misurazioni dello stesso fenomeno differiscono molto l'una dall'altra, quindi la misurazione ha una cattiva qualità.

un sigma è un altro modo per descrivere quanto stretta / larga è la curva gaussiana.
Dice semplicemente che se la media della misurazione è X e un sigma è σ, il 68% di tutte le misurazioni sarà compreso tra X - σe X + σ.

Esempio. Misuriamo la distanza e come risultato otteniamo una distribuzione gaussiana. La media è di 10 m. Se σ è 4 m, significa che il 68% delle misurazioni era compreso tra 6 me 14 m.

Quando misuriamo la distanza con i beacon, otteniamo un valore di calibrazione RSSI e 1 metro, che ci consente di misurare la distanza in metri. Ma ogni misurazione fornisce valori diversi, che formano una curva gaussiana. E un sigma (e accuratezza) è l'accuratezza della misurazione, non la distanza!

Potrebbe essere fuorviante, perché quando spostiamo il faro più lontano, un sigma aumenta effettivamente perché il segnale è peggiore. Ma con diversi livelli di potenza del faro possiamo ottenere valori di precisione completamente diversi senza effettivamente cambiare la distanza. Maggiore è la potenza, minore è l'errore.

C'è un post sul blog che analizza a fondo la questione: http://blog.shinetech.com/2014/02/17/the-beacon-experiments-low-energy-bluetooth-devices-in-action/

L'autore ha l'ipotesi che la precisione sia in realtà la distanza. Afferma che i beacon di Kontakt.io sono difettosi perché quando ha aumentato la potenza al valore massimo, il valore di precisione era molto piccolo per 1, 5 e persino 15 metri. Prima di aumentare la potenza, la precisione era abbastanza vicina ai valori di distanza. Personalmente penso che sia corretto, perché maggiore è il livello di potenza, minore è l'impatto dell'interferenza. Ed è strano il motivo per cui i beacon Estimote non si comportano in questo modo.

Non dico di avere ragione al 100%, ma oltre ad essere sviluppatore iOS ho una laurea in elettronica wireless e penso che non dovremmo ignorare il termine "un sigma" dai documenti e vorrei iniziare una discussione a riguardo.

È possibile che l'algoritmo di precisione di Apple raccolga solo misurazioni recenti e ne analizzi la distribuzione gaussiana. Ed è così che imposta la precisione. Non escluderei la possibilità che utilizzino l'accelerometro del modulo informativo per rilevare se l'utente si sta muovendo (e quanto velocemente) al fine di ripristinare i valori della distanza di distribuzione precedente perché sono sicuramente cambiati.


Ottima introduzione alla correlazione "sigma". Inoltre sarebbe strano per un geek (anche un fanatico di Apple) usare il nome della variabile "accuratezza" quando significava "distanza". Ogni determinazione di "distanza" o "posizione" RSSI viene fornita con un "margine di errore" (ad esempio, sei qui +/- così tanto). Quindi ha senso che la loro libreria abbia sia una funzione per "distanza" che una funzione per "precisione".
Jesse Chisholm

@ r00dY una spiegazione brillante devo dire. Ora, solo una domanda se puoi aiutare. Ho un dato di calibrazione per il faro misurato a 1 m, 2 m ... 15 m, ... 20 me così via. Ho i valori di distanza media per ogni distanza. Ora, dal delegato del location manager quando riceviamo dati beacon come beacon major, minor, rssi, ecc. È consigliabile utilizzare la distanza ottenuta dalla calibrazione di cui sopra che ho spiegato? Si prega di suggerire, qualsiasi aiuto sarebbe apprezzato. Grazie in anticipo.
Alkesh Fudani

Apple accuracyè una funzione di entrambi rssie tx power. Non è del tutto impossibile che Estimote abbia deciso di decodificare la accuracyfunzione e ha iniziato a fornire tx powervalori tali che la lettura stimasse accuracyla distanza. Ciò fornisce un'esperienza di sviluppo più semplice per la stima della distanza, ma infrange la definizione di Apple di accuracy. Altri marchi potrebbero rimanere più fedeli alla definizione di Apple accuracye fornire effettivamente una "stima di 1 metro" piuttosto che un valore di ingegneria inversa che fa accuracystimare la distanza.
Senseful

63

La potenza di uscita di iBeacon viene misurata (calibrata) a una distanza di 1 metro. Supponiamo che questo sia -59 dBm (solo un esempio). L'iBeacon includerà questo numero come parte della sua pubblicità LE.

Il dispositivo di ascolto (iPhone, ecc.) Misurerà l'RSSI del dispositivo. Supponiamo, ad esempio, che questo sia, diciamo, -72 dBm.

Poiché questi numeri sono in dBm, il rapporto della potenza è effettivamente la differenza in dB. Così:

ratio_dB = txCalibratedPower - RSSI

Per convertirlo in un rapporto lineare, usiamo la formula standard per dB:

ratio_linear = 10 ^ (ratio_dB / 10)

Se assumiamo la conservazione dell'energia, l'intensità del segnale deve diminuire come 1 / r ^ 2. Così:

power = power_at_1_meter / r^2. Risolvendo per r, otteniamo:

r = sqrt(ratio_linear)

In Javascript, il codice sarebbe simile a questo:

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

Nota che, se ti trovi all'interno di un edificio in acciaio, forse ci saranno riflessioni interne che renderanno il decadimento del segnale più lento di 1 / r ^ 2. Se il segnale passa attraverso un corpo umano (acqua), il segnale verrà attenuato. È molto probabile che l'antenna non abbia lo stesso guadagno in tutte le direzioni. Gli oggetti metallici nella stanza possono creare strani schemi di interferenza. Ecc, ecc ... YMMV.


per curiosità: come ratio_dB = txCalibratedPower - RSSIfunziona? Poiché entrambe le misure sono in dBm, presumo che anche il risultato sia in dBm?
BlackWolf


3

Le distanze dalla sorgente dei pacchetti pubblicitari formattati iBeacon sono stimate dall'attenuazione del percorso del segnale calcolata confrontando l'intensità del segnale ricevuto misurato con la potenza di trasmissione dichiarata che il trasmettitore dovrebbe codificare nei dati pubblicitari.

Uno schema basato sulla perdita di percorso come questo è solo approssimativo ed è soggetto a variazioni con cose come angoli dell'antenna, oggetti intermedi e presumibilmente un ambiente RF rumoroso. In confronto, i sistemi realmente progettati per la misura della distanza (GPS, Radar, ecc.) Si basano su misure precise del tempo di propagazione, esaminando negli stessi casi anche la fase del segnale.

Come sottolinea Jiaru, 160 piedi sono probabilmente oltre la portata prevista, ma ciò non significa necessariamente che un pacchetto non passerà mai , solo che non ci si dovrebbe aspettare che funzioni a quella distanza.


1

È possibile, ma dipende dalla potenza in uscita del faro che stai ricevendo, da altre sorgenti RF nelle vicinanze, dagli ostacoli e da altri fattori ambientali. La cosa migliore da fare è provarlo nell'ambiente che ti interessa.


1

Con più telefoni e beacon nella stessa posizione, sarà difficile misurare la prossimità con un alto grado di precisione. Prova a utilizzare l'app Android "b & l bluetooth le scanner" per visualizzare le variazioni di intensità del segnale (distanza), per più beacon, e scoprirai rapidamente che potrebbero essere necessari algoritmi adattivi complessi per fornire qualsiasi forma di misurazione della prossimità coerente .

Vedrai molte soluzioni che chiedono semplicemente all'utente di "tenere il telefono qui", per ridurre la frustrazione del cliente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.