Entendiendo el distanciamiento de ibeacon


Tratando de comprender un concepto básico de cómo puede funcionar el distanciamiento con ibeacon (beacon/ bluetooth-le/ble). ¿Hay alguna documentación verdadera sobre qué tan lejos puede medir exactamente un ibeacon? Digamos que estoy a 300 pies away...is ¿es posible que un ibeacon detecte esto?

Author: rambossa, 2013-12-06

7 answers

La estimación de distancia proporcionada por iOS se basa en la relación de la intensidad de la señal iBeacon (rssi) sobre la potencia calibrada del transmisor (txPower). El txPower es la intensidad de señal medida conocida en rssi a 1 metro de distancia. Cada iBeacon debe calibrarse con este valor txPower para permitir estimaciones de distancia precisas.

Cuando estábamos construyendo la biblioteca Android iBeacon tuvimos que idear nuestro propio algoritmo independiente porque el código fuente de CoreLocation de iOS no es disponible. Medimos un montón de mediciones de rssi a distancias conocidas, luego hicimos una curva de mejor ajuste para que coincidiera con nuestros puntos de datos. El algoritmo que se nos ocurrió se muestra a continuación como código Java.

Tenga en cuenta que el término "precisión" aquí es iOS hablar de distancia en metros. Esta fórmula no es perfecta, pero aproximadamente se aproxima a lo que hace 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: Los valores 0.89976, 7.7095 y 0.111 son las tres constantes calculadas al resolver para una curva de mejor ajuste a nuestros puntos de datos medidos. YMMV

 208
Author: davidgyoung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-04 07:28:09

Estoy investigando muy a fondo el asunto de la precisión/rssi/proximidad con iBeacons y realmente creo que todos los recursos en Internet (blogs, publicaciones en StackOverflow) se equivocan.

Davidgyoung (respuesta aceptada, > 100 votos positivos) dice:

Tenga en cuenta que el término "precisión" aquí es iOS hablar de distancia en metros.

En realidad, la mayoría de la gente dice esto, ¡pero no tengo idea de por qué! La documentación deja muy muy claro que CLBeacon.proximidad:

Indica la precisión horizontal de one sigma en metros. Use esta propiedad para diferenciar entre balizas con el mismo valor de proximidad. No lo use para identificar una ubicación precisa para la baliza. Los valores de precisión pueden fluctuar debido a la interferencia de RF.

Permítanme repetir: una precisión sigma en metros. Las 10 páginas principales de Google sobre el tema tienen el término "one sigma" solo en citas de documentos, pero ninguna de ellas analiza el término, que es el núcleo para entender esto.

Muy importante es explicar lo que es en realidad una exactitud sigma. Las siguientes URL para empezar: http://en.wikipedia.org/wiki/Standard_error, http://en.wikipedia.org/wiki/Uncertainty

En el mundo físico, cuando se hace alguna medición, siempre se obtienen resultados diferentes (debido al ruido, la distorsión, etc.) y muy a menudo los resultados forman la distribución gaussiana. Hay dos parámetros principales que describen Curva gaussiana:

  1. media (que es fácil de entender, es el valor para el que se produce el pico de la curva).
  2. desviación estándar, que dice cuán ancha o estrecha es la curva. La curva más estrecha, la mejor precisión, porque todos los resultados están cerca entre sí. Si la curva es ancha y no empinada, entonces significa que las mediciones del mismo fenómeno difieren mucho entre sí, por lo que la medición tiene una mala calidad.

Un sigma es otra forma de describir qué tan estrecha / ancha es la curva gaussiana.
Simplemente dice que si la media de medición es X, y un sigma es σ, entonces el 68% de todas las mediciones estarán entre X - σ y X + σ.

Ejemplo. Medimos la distancia y obtenemos una distribución gaussiana como resultado. La media es de 10m. Si σ es de 4m, entonces significa que el 68% de las mediciones estuvieron entre 6m y 14m.

Cuando medimos la distancia con balizas, obtenemos RSSI y un valor de calibración de 1 metro, que nos permiten medir distancia en metros. Pero cada medida da diferentes valores, que forman la curva gaussiana. Y una sigma (y la precisión) es la precisión de la medición, no la distancia!

Puede ser engañoso, porque cuando nos movemos beacon más lejos, un sigma en realidad aumenta porque la señal es peor. Pero con diferentes niveles de potencia de la baliza podemos obtener valores de precisión totalmente diferentes sin cambiar la distancia. Cuanto mayor sea el poder, menor será el error.

Hay un entrada de blog que analiza a fondo el asunto: http://blog.shinetech.com/2014/02/17/the-beacon-experiments-low-energy-bluetooth-devices-in-action/

El autor tiene la hipótesis de que la precisión es en realidad la distancia. Afirma que las balizas de Kontakt.io son defectuosos porque cuando aumentó la potencia al valor máximo, el valor de precisión era muy pequeño para 1, 5 e incluso 15 metros. Antes de aumentar la potencia, la precisión estaba bastante cerca de los valores de distancia. Personalmente creo que es correcto, porque cuanto mayor sea el nivel de potencia, menor será el impacto de la interferencia. Y es extraño por qué Estimote beacons no se comportan de esta manera.

No estoy diciendo que esté 100% en lo cierto, pero aparte de ser desarrollador de iOS tengo un título en electrónica inalámbrica y creo que no debemos ignorar el término "one sigma" de docs y me gustaría comenzar la discusión al respecto.

Puede ser posible que el algoritmo de Apple para la precisión solo recoge las mediciones recientes y analiza el gaussiano distribución de los mismos. Y así es como establece la precisión. No excluiría la posibilidad de que usen el acelerómetro de formulario de información para detectar si el usuario se está moviendo (y qué tan rápido) para restablecer los valores de distancia de distribución anteriores porque ciertamente han cambiado.

 65
Author: r00dY,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-27 14:58:33

La potencia de salida iBeacon se mide (calibrada) a una distancia de 1 metro. Supongamos que esto es -59 dBm (solo un ejemplo). El iBeacon incluirá este número como parte de su publicidad.

El dispositivo de escucha (iPhone, etc.), medirá el RSSI del dispositivo. Supongamos, por ejemplo, que esto es, digamos, -72 dBm.

Dado que estos números están en dBm, la relación de la potencia es en realidad la diferencia en dB. Entonces:

ratio_dB = txCalibratedPower - RSSI

Para convertir eso en un relación lineal, utilizamos la fórmula estándar para dB:

ratio_linear = 10 ^ (ratio_dB / 10)

Si asumimos la conservación de energía, entonces la intensidad de la señal debe caer como 1/r^2. Entonces:

power = power_at_1_meter / r^2. Resolviendo para r, obtenemos:

r = sqrt(ratio_linear)

En Javascript, el código se vería así:

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

Tenga en cuenta que, si usted está dentro de un edificio de acero, entonces tal vez habrá reflexiones internas que hacen que la señal decaiga más lento que 1/r^2. Si la señal pasa a través de un cuerpo humano (agua) entonces la señal será atenuado. Es muy probable que la antena no tenga igual ganancia en todas las direcciones. Los objetos metálicos en la habitación pueden crear extraños patrones de interferencia. Etc, etc... YMMV.

 59
Author: Mark Fassler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-07 02:19:52

IBeacon utiliza Bluetooth Low Energy (LE) para mantenerse al tanto de las ubicaciones, y la distancia/rango de Bluetooth LE es de 160 pies ( http://en.wikipedia.org/wiki/Bluetooth_low_energy).

 3
Author: Jiaru,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-06 07:03:05

Las distancias a la fuente de los paquetes de publicidad con formato iBeacon son estimadas a partir de la atenuación de la ruta de la señal calculada comparando la intensidad de la señal recibida medida con la potencia de transmisión reclamada que el transmisor se supone que codifica en los datos de publicidad.

Un esquema basado en pérdida de ruta como este es solo aproximado y está sujeto a variaciones con cosas como ángulos de antena, objetos intermedios y presumiblemente un entorno de RF ruidoso. En comparación, los sistemas realmente diseñados para la medición de distancias (GPS, Radar, etc.) se basan en mediciones precisas del tiempo de propagación, en los mismos casos incluso examinando la fase de la señal.

Como señala Jiaru, 160 pies es probablemente más allá del rango previsto, pero eso no significa necesariamente que un paquete nunca pasará, solo que uno no debería esperar que funcione a esa distancia.

 3
Author: Chris Stratton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-06 15:33:30

Es posible, pero depende de la potencia de salida de la baliza que está recibiendo, otras fuentes de rf cercanas, obstáculos y otros factores ambientales. Lo mejor que puedes hacer es probarlo en el entorno que te interese.

 1
Author: danh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-06 05:29:45

Con varios teléfonos y balizas en la misma ubicación, va a ser difícil medir la proximidad con un alto grado de precisión. Intente usar la aplicación Android "b and l bluetooth le scanner" para visualizar las variaciones de intensidad de la señal (distancia), para múltiples balizas, y descubrirá rápidamente que se pueden requerir algoritmos complejos y adaptativos para proporcionar cualquier forma de medición de proximidad consistente.

Vas a ver muchas soluciones simplemente instruyendo al usuario a "por favor, sostenga su teléfono aquí", para reducir la frustración del cliente.

 1
Author: user3742642,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-15 18:50:00