Понимание технологии iBeacon дистанцирование
пытаясь понять основную концепцию того, как дистанцирование с ibeacon (beacon/ bluetooth-le/ble) может работать. Есть ли какая-либо истинная документация о том, насколько точно ibeacon может измерить. Допустим, я 300 футов away...is это возможно для ibeacon, чтобы обнаружить это?
7 ответов:
оценка расстояния, предоставляемая iOS, основана на соотношении силы сигнала iBeacon (rssi) над калиброванной мощностью передатчика (txPower). TxPower-это известная измеренная сила сигнала в rssi на расстоянии 1 метра. Каждый iBeacon должен быть откалиброван с этим значением txPower, чтобы позволить точные оценки расстояния.
когда мы строили библиотека Android iBeacon мы должны были придумать свой собственный независимый алгоритм, потому что CoreLocation iOS исходный код недоступен. Мы измерили кучу измерений rssi на известных расстояниях, а затем сделали кривую наилучшего соответствия, чтобы соответствовать нашим точкам данных. Алгоритм, который мы придумали, показан ниже в виде кода Java.
обратите внимание, что термин "точность" здесь iOS говорит о расстоянии в метрах. Эта формула не идеальна, но она примерно приближается к тому, что делает 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; } }Примечание: значения 0,89976, 7,7095 и 0,111 являются тремя константами вычисляется при решении для наилучшего соответствия Кривой до наши измеренные точки данных. YMMV
Я очень тщательно исследую вопрос точности / rssi / близости с iBeacons, и я действительно действительно думаю, что все ресурсы в интернете (блоги, сообщения в StackOverflow) ошибаются.
davidgyoung (принятый ответ, > 100 upvotes) говорит:
обратите внимание, что термин "точность" здесь iOS говорит о расстоянии в метрах.
на самом деле, большинство людей говорят это, но я понятия не имею, почему! Документация делает это очень и очень ясно этот Клбикон.близость:
указывает на одну Сигму горизонтальной точности в метрах. используйте это свойство, чтобы различать маяки с одинаковым значением близости. Не используйте его для определения точного местоположения маяка. Значения точности могут колебаться из-за радиочастотных помех.
повторю: одна Сигма точность в метрах. Все 10 лучших страниц в google на эту тему имеет термин "одна Сигма" только в цитате из документы, но ни один из них не анализирует термин, который является основным для понимания этого.
очень важно объяснить, что на самом деле большая точность Сигма. Следующие URL-адреса для начала:http://en.wikipedia.org/wiki/Standard_error, http://en.wikipedia.org/wiki/Uncertainty
в физическом мире, когда вы делаете какое-то измерение, вы всегда получаете разные результаты (из-за шума, искажений и т. д.) , и очень часто результаты формируются Гауссово распределение. Существует два основных параметра, описывающих гауссову кривую:
- среднее (что легко понять, это значение, для которого происходит пик кривой).
- стандартное отклонение, которое говорит, насколько широка или узка кривая. Чем уже кривая, тем лучше точность, потому что все результаты близки друг к другу. Если кривая широкая и не крутая, то это означает, что измерения одного и того же явления очень сильно отличаются друг от друга, поэтому измерение имеет плохое качество.
одна Сигма это еще один способ описать, насколько узкой/широкой является гауссова кривая.
Он просто говорит, что если среднее значение измерения равно X, и одна Сигма равна σ, то 68% всех измерений находится междуX - σиX + σ.пример. Мы измеряем расстояние и получаем в результате гауссово распределение. Среднее значение равно 10 м. Если σ равно 4m, то это означает, что 68% измерений были между 6m и 14m.
когда мы измеряем расстояние с маяками, мы получаем значение тарировки 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 просто собирает последние измерения и анализирует их гауссовское распределение. И вот как он устанавливает точность. Я бы не исключил возможности того, что они используют акселерометр информационной формы для определения того, движется ли пользователь (и как быстро), чтобы сбросить предыдущие значения расстояния распределения, потому что они, безусловно, изменились.
выходная мощность iBeacon измеряется (калибруется) на расстоянии 1 метра. Предположим, что это -59 дБм (просто пример). IBeacon будет включать этот номер в свою рекламу LE.
прослушивающее устройство (iPhone и т. д.) будет измерять RSSI устройства. Предположим, например, что это, скажем, -72 дБм.
так как эти числа находятся в дБм, отношение мощности на самом деле разница в дБ. Итак:
ratio_dB = txCalibratedPower - RSSIчтобы преобразовать это в линейное отношение, мы используем стандартную формулу для dB:
ratio_linear = 10 ^ (ratio_dB / 10)если мы предполагаем сохранение энергии, то сила сигнала должна упасть как 1/r^2. Итак:
power = power_at_1_meter / r^2. Решая за r, получаем:r = sqrt(ratio_linear)в Javascript код будет выглядеть так:
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; }обратите внимание, что, если вы находитесь внутри стального здания, то, возможно, будут внутренние отражения, которые заставляют сигнал затухать медленнее, чем 1/r^2. Если сигнал проходит через человеческое тело (воду), то сигнал будет ослаблен. Очень вероятно, что антенна не имеет равного усиления во всех направлениях. Металлические предметы в комнате могут создавать странные интерференционные картины. И так далее... МММ.
iBeacon использует Bluetooth Low Energy (LE), чтобы держать в курсе местоположения, а расстояние / диапазон Bluetooth LE составляет 160 футов (http://en.wikipedia.org/wiki/Bluetooth_low_energy).
расстояния до источника рекламных пакетов в формате iBeacon составляют оценивается от затухания тракта сигнала, рассчитанного путем сравнения измеренной мощности принятого сигнала с заявленной мощностью передачи, которую передатчик должен кодировать в рекламных данных.
схема на основе потери пути, подобная этой, является только приблизительной и подвержена изменениям с такими вещами, как углы антенны, промежуточные объекты и, предположительно, шумная радиочастотная среда. Для сравнения, системы, действительно предназначенные для измерения расстояния (GPS, радар и т. д.), полагаются на точные измерения времени распространения, в тех же случаях даже исследуя фазу сигнала.
Как ов указывает, 160 футов, возможно, за пределами намеченного диапазона, но это не обязательно означает, что пакет будет никогда пройдите, только это не следует ожидать, что он будет работать на таком расстоянии.
это возможно, но это зависит от выходной мощности маяка, который вы получаете, других источников rf поблизости, препятствий и других факторов окружающей среды. Лучше всего попробовать его в среде, которая вас интересует.
с несколькими телефонами и маяками в одном и том же месте, это будет трудно измерить близость с любой высокой степенью точности. Попробуйте использовать приложение Android "B и l bluetooth le scanner", чтобы визуализировать изменения силы сигнала (расстояния) для нескольких маяков, и вы быстро обнаружите, что для обеспечения любой формы последовательного измерения близости могут потребоваться сложные адаптивные алгоритмы.
вы увидите много решений просто инструктаж пользователь, чтобы "пожалуйста, держите телефон здесь", чтобы уменьшить разочарование клиентов.
Comments