Понимание дистанции ibeacon

113

Пытаемся понять базовую концепцию того, как может работать дистанцирование с помощью ibeacon (маяк / Bluetooth-lowenergy / BLE). Есть ли какая-нибудь достоверная документация о том, как далеко может измерять ibeacon? Допустим, я нахожусь на расстоянии 300 футов ... может ли Иибакон это обнаружить?

Специально для v4 и. v5 и с iOS, но обычно с любым устройством BLE.

Как на это влияет частота и пропускная способность Bluetooth? Могут ли маяковые устройства увеличивать или ограничивать расстояние / улучшать базовый BLE?

т.е.

               | 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       |
Рамбосса
источник

Ответы:

224

Оценка расстояния, предоставляемая iOS, основана на соотношении мощности радиомаяка (rssi) к откалиброванной мощности передатчика (txPower). TxPower - это известная измеренная мощность сигнала в rssi на расстоянии 1 метра. Каждый маяк должен быть откалиброван с этим значением txPower, чтобы обеспечить точные оценки расстояния.

Хотя оценки расстояния полезны, они не идеальны и требуют, чтобы вы контролировали другие переменные. Убедитесь, что вы ознакомились со сложностями и ограничениями, прежде чем использовать это неправильно.

Когда мы создавали библиотеку Android iBeacon, нам пришлось придумать собственный независимый алгоритм, потому что исходный код iOS CoreLocation недоступен. Мы измерили кучу измерений 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

Дэвидгён
источник
4
Отличный ответ и код Дэвид. Откуда взялось значение txPower? Это значение калибровки выполняется на стороне клиента (получателя)? Или это показатель, который вы можете получить от маяка?
rmooney 06
14
для чего нужны значения 0,89976, 7,7095 и 0,111?
malhal 06
4
С этим уравнением я получаю 84457991114,574738, когда маяк находится на 1/4 от моего телефона.
jdog
1
Эддистоун - опорная точка 0 м, лет. Деление против вычитания связано с тем, что в этом случае мы не используем логарифмическую функцию. Для используемой нами аппроксимации кривой вычитание не сработало.
davidgyoung
1
@davidgyoung, не могли бы вы поделиться формулой наилучшего соответствия кривой или чем-нибудь еще, с помощью чего мы можем узнать эти 3 значения для нашего устройства?
Пареш Майани
77

Я очень тщательно исследую вопрос точности / rssi / близости с iBeacons, и я действительно считаю, что все ресурсы в Интернете (блоги, сообщения в StackOverflow) ошибаются.

Дэвидгён (принятый ответ,> 100 голосов) говорит:

Обратите внимание, что термин «точность» в iOS означает расстояние в метрах.

На самом деле, большинство людей так говорят, но я понятия не имею, почему! Из документации очень ясно, что CLBeacon.proximity:

Указывает горизонтальную точность до одной сигмы в метрах. Используйте это свойство, чтобы различать маяки с одинаковым значением близости. Не используйте его для определения точного местоположения маяка. Значения точности могут колебаться из-за радиочастотных помех.

Повторюсь: точность до одной сигмы в метрах . На всех 10 главных страницах Google по этой теме есть термин «одна сигма» только в цитате из документов, но ни одна из них не анализирует этот термин, который является основным для понимания этого.

Очень важно объяснить, что такое точность до одной сигмы . Следующие URL-адреса для начала: http://en.wikipedia.org/wiki/Standard_error , http://en.wikipedia.org/wiki/Uncertainty

В физическом мире, когда вы проводите какое-либо измерение, вы всегда получаете разные результаты (из-за шума, искажения и т. Д.), И очень часто результаты образуют распределение Гаусса. Кривая Гаусса описывается двумя основными параметрами:

  1. среднее (что легко понять, это значение, при котором происходит пик кривой).
  2. стандартное отклонение, которое говорит, насколько широкая или узкая кривая. Чем уже кривая, тем выше точность, потому что все результаты близки друг к другу. Если кривая широкая, а не крутая, это означает, что измерения одного и того же явления очень сильно отличаются друг от друга, поэтому измерения плохого качества.

одна сигма - это еще один способ описать, насколько узкая / широкая гауссова кривая.
Он просто говорит, что если среднее значение измерения равно 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 для определения точности просто собирает последние измерения и анализирует их гауссовское распределение. Вот как он устанавливает точность. Я не исключаю возможность того, что они используют акселерометр информационной формы для определения того, движется ли пользователь (и насколько быстро), чтобы сбросить предыдущие значения расстояния распределения, потому что они определенно изменились.

Анджей Домбровски
источник
Отличное вступление к "сигма" корреляции. Также для компьютерщика (даже компьютерщика Apple) было бы странно использовать имя переменной «точность», когда они имели в виду «расстояние». Каждое определение RSSI «расстояние» или «местоположение» сопровождается «пределом погрешности» (например, вы здесь +/- столько же). Так что логично, что в их библиотеке есть и функция для «расстояния», и для «точности».
Джесси Чизхолм
@ r00dY Должен сказать, блестящее объяснение. Теперь просто вопрос, можете ли вы помочь. У меня есть данные калибровки маяка, измеренные на расстоянии 1 м, 2 м ... 15 м, ... 20 м и так далее. У меня есть средние значения расстояния для каждого расстояния. Теперь, от делегата диспетчера местоположения, когда мы получаем данные радиобуя, такие как beacon major, minor, rssi, и т. Д., Целесообразно ли использовать расстояние, полученное из вышеуказанной калибровки, которую я объяснил? Пожалуйста, предложите, любая помощь будет оценена. Заранее спасибо.
Алкеш Фудани,
Apple accuracy- это функция обоих rssiи tx power. Не совсем возможно, что Estimote решила перепроектировать accuracyфункцию и начала предоставлять tx powerтакие значения, чтобы чтение accuracyоценивало расстояние. Это упрощает разработчикам оценку расстояния, но нарушает определение Apple accuracy. Другие бренды могут остаться более верными определению Apple accuracyи фактически предоставить «оценку в 1 метр», а не значение, полученное методом обратной инженерии, которое позволяет accuracyоценить расстояние.
Senseful
63

Выходная мощность iBeacon измеряется (калибруется) на расстоянии 1 метр. Предположим, что это -59 дБм (просто пример). IBeacon будет включать этот номер в свою рекламу LE.

Подслушивающее устройство (iPhone и т. Д.) Будет измерять RSSI устройства. Предположим, например, что это, скажем, -72 дБмВт.

Поскольку эти числа даны в дБм, отношение мощности на самом деле является разницей в дБ. Так:

ratio_dB = txCalibratedPower - RSSI

Чтобы преобразовать это в линейное соотношение, мы используем стандартную формулу для дБ:

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. Если сигнал проходит через тело человека (воду), то сигнал ослабляется. Очень вероятно, что антенна не имеет одинакового усиления во всех направлениях. Металлические предметы в комнате могут создавать странные интерференционные узоры. И т. Д. И т. Д. YMMV.

Марк Фасслер
источник
из любопытства: как получается ratio_dB = txCalibratedPower - RSSI? Поскольку оба показателя выражены в дБм, я бы предположил, что результат также будет в дБм?
BlackWolf 09
3

Расстояния до источника рекламных пакетов в формате iBeacon оцениваются по затуханию на пути прохождения сигнала, вычисляемому путем сравнения измеренной мощности принятого сигнала с заявленной мощностью передачи, которую передатчик должен кодировать в рекламных данных.

Схема, основанная на потерях на трассе, подобная этой, является только приблизительной и может изменяться в зависимости от таких вещей, как углы антенны, мешающие объекты и, предположительно, шумная радиочастотная среда. Для сравнения, системы, действительно предназначенные для измерения расстояний (GPS, радар и т. Д.), Полагаются на точные измерения времени распространения, а в тех же случаях даже проверяют фазу сигнала.

Как указывает Джиару, 160 футов, вероятно, выходят за рамки предполагаемого диапазона, но это не обязательно означает, что пакет никогда не пройдет , только то, что не следует ожидать, что он сработает на таком расстоянии.

Крис Стрэттон
источник
1

Это возможно, но это зависит от выходной мощности маяка, который вы принимаете, других источников РЧ поблизости, препятствий и других факторов окружающей среды. Лучше всего попробовать это в интересующей вас среде.

Danh
источник
1

При наличии нескольких телефонов и маяков в одном месте будет сложно измерить расстояние с какой-либо высокой степенью точности. Попробуйте использовать Android-приложение «b and l bluetooth le scanner», чтобы визуализировать изменения силы сигнала (расстояния) для нескольких маяков, и вы быстро обнаружите, что для обеспечения любой формы согласованного измерения приближения могут потребоваться сложные адаптивные алгоритмы. .

Вы увидите множество решений, просто инструктирующих пользователя «пожалуйста, держите свой телефон здесь», чтобы уменьшить разочарование клиентов.

BlueSpectrumz
источник