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 a favor) dice:
Tenga en cuenta que el término "precisión" aquí significa que iOS habla 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 claro que CLBeacon.proximity:
Indica la precisión horizontal de un sigma en metros. Utilice esta propiedad para diferenciar 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 "un sigma" solo entre comillas de documentos, pero ninguna de ellas analiza el término, que es fundamental para entender esto.
Es muy importante explicar qué es realmente una precisión sigma . Siguientes URL para empezar: http://en.wikipedia.org/wiki/Standard_error , http://en.wikipedia.org/wiki/Uncertainty
En el mundo físico, cuando realiza alguna medición, siempre obtiene resultados diferentes (debido al ruido, la distorsión, etc.) y muy a menudo los resultados de la distribución gaussiana. Hay dos parámetros principales que describen la curva gaussiana:
- media (que es fácil de entender, es el valor para el que se produce el pico de la curva).
- desviación estándar, que indica qué tan ancha o estrecha es la curva. Cuanto más estrecha sea la curva, mejor será la precisión, porque todos los resultados están próximos entre sí. Si la curva es ancha y no empinada, significa que las mediciones del mismo fenómeno difieren mucho entre sí, por lo que la medición tiene mala calidad.
un sigma es otra forma de describir qué tan estrecha / ancha es la curva gaussiana.
Simplemente dice que si la media de la 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 10 m. Si σ es 4 m, entonces significa que el 68% de las mediciones fueron entre 6 my 14 m.
Cuando medimos la distancia con balizas, obtenemos RSSI y un valor de calibración de 1 metro, que nos permite medir la distancia en metros. Pero cada medición da valores diferentes, que forman una curva gaussiana. ¡Y un sigma (y precisión) es la precisión de la medición, no la distancia!
Puede ser engañoso, porque cuando alejamos la baliza, un sigma realmente aumenta porque la señal es peor. Pero con diferentes niveles de potencia de baliza, podemos obtener valores de precisión totalmente diferentes sin cambiar la distancia. A mayor potencia, menor error.
Hay una publicación 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 distancia. Afirma que las balizas de Kontakt.io están defectuosas porque cuando aumentó la potencia al valor máximo, el valor de precisión fue 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 a mayor nivel de potencia, menor impacto de interferencia. Y es extraño por qué las balizas de Estimote no se comportan de esta manera.
No estoy diciendo que esté 100% en lo cierto, pero además de ser desarrollador de iOS, tengo un título en electrónica inalámbrica y creo que no deberíamos ignorar el término "un sigma" de los documentos y me gustaría comenzar a discutirlo.
Es posible que el algoritmo de precisión de Apple solo recopile mediciones recientes y analice la distribución gaussiana de las mismas. Y así establece la precisión. No excluiría la posibilidad de que utilicen un 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.