Я очень тщательно исследую вопрос точности / rssi / близости с iBeacons, и я действительно считаю, что все ресурсы в Интернете (блоги, сообщения в StackOverflow) ошибаются.
Дэвидгён (принятый ответ,> 100 голосов) говорит:
Обратите внимание, что термин «точность» в iOS означает расстояние в метрах.
На самом деле, большинство людей так говорят, но я понятия не имею, почему! Из документации очень ясно, что CLBeacon.proximity:
Указывает горизонтальную точность до одной сигмы в метрах. Используйте это свойство, чтобы различать маяки с одинаковым значением близости. Не используйте его для определения точного местоположения маяка. Значения точности могут колебаться из-за радиочастотных помех.
Повторюсь: точность до одной сигмы в метрах . На всех 10 главных страницах Google по этой теме есть термин «одна сигма» только в цитате из документов, но ни одна из них не анализирует этот термин, который является основным для понимания этого.
Очень важно объяснить, что такое точность до одной сигмы . Следующие URL-адреса для начала: http://en.wikipedia.org/wiki/Standard_error , http://en.wikipedia.org/wiki/Uncertainty
В физическом мире, когда вы проводите какое-либо измерение, вы всегда получаете разные результаты (из-за шума, искажения и т. Д.), И очень часто результаты образуют распределение Гаусса. Кривая Гаусса описывается двумя основными параметрами:
- среднее (что легко понять, это значение, при котором происходит пик кривой).
- стандартное отклонение, которое говорит, насколько широкая или узкая кривая. Чем уже кривая, тем выше точность, потому что все результаты близки друг к другу. Если кривая широкая, а не крутая, это означает, что измерения одного и того же явления очень сильно отличаются друг от друга, поэтому измерения плохого качества.
одна сигма - это еще один способ описать, насколько узкая / широкая гауссова кривая.
Он просто говорит, что если среднее значение измерения равно X, а одна сигма равна σ, то 68% всех измерений будут между X - σ
и X + σ
.
Пример. Мы измеряем расстояние и в результате получаем гауссово распределение. Среднее значение 10м. Если σ равно 4 м, это означает, что 68% измерений были между 6 и 14 м.
Когда мы измеряем расстояние с помощью маяков, мы получаем RSSI и калибровочное значение в 1 метр, что позволяет нам измерять расстояние в метрах. Но каждое измерение дает разные значения, которые образуют гауссову кривую. И одна сигма (и точность) - это точность измерения, а не расстояние!
Это может ввести в заблуждение, потому что, когда мы перемещаем маяк дальше, одна сигма фактически увеличивается, потому что сигнал хуже. Но с разными уровнями мощности маяков мы можем получить совершенно разные значения точности без фактического изменения расстояния. Чем выше мощность, тем меньше погрешность.
В блоге есть подробный анализ этого вопроса: http://blog.shinetech.com/2014/02/17/the-beacon-experiments-low-energy-bluetooth-devices-in-action/
У автора есть гипотеза, что точность - это расстояние. Он утверждает, что маяки от Kontakt.io неисправны, потому что, когда он увеличил мощность до максимального значения, значение точности было очень маленьким для 1, 5 и даже 15 метров. До увеличения мощности точность была довольно близка к значениям расстояния. Я лично считаю, что это правильно, потому что чем выше уровень мощности, тем меньше влияние помех. И странно, почему маячки Estimote так не ведут себя.
Я не говорю, что я прав на 100%, но помимо того, что я разработчик iOS, у меня есть степень в области беспроводной электроники, и я думаю, что мы не должны игнорировать термин «одна сигма» из документации, и я хотел бы начать обсуждение этого вопроса.
Возможно, алгоритм Apple для определения точности просто собирает последние измерения и анализирует их гауссовское распределение. Вот как он устанавливает точность. Я не исключаю возможность того, что они используют акселерометр информационной формы для определения того, движется ли пользователь (и насколько быстро), чтобы сбросить предыдущие значения расстояния распределения, потому что они определенно изменились.