RadBeacon Tag расчет расстояния

Я использую iBeacon от Radius Networks. В данный момент я пытаюсь рассчитать расстояние между устройством Android и тегом RadBeacon с помощью RSSI. Как упомянуто здесь Дэвидом Янгом, андроид устройства имеют другую антенну. Мой опыт работы со следующим форумом не очень хорош в сочетании с моим Nexus 7.

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

Кто-нибудь может дать мне другую формулу для расчета расстояния или некоторые данные RSSI / измерения расстояния для разных расстояний?

2 ответа

Вы можете получить лучшие результаты для конкретного устройства, измеряя RSSI на различных расстояниях и выполняя регрессию по приведенной выше формуле, чтобы найти коэффициенты для наилучшего соответствия. Вы можете прочитать объяснение рекомендуемых расстояний здесь:

http://altbeacon.github.io/android-beacon-library/distance-calculations.html

Затем вы можете импортировать данные в R (бесплатное программное обеспечение для статистических вычислений) и использовать функцию nls (нелинейные наименьшие квадраты) для подгонки данных к кривой мощности. Вот уравнение кривой мощности: функция (x, b0, b1, b2) {b0 + b1*(x^b2)}

Функция nls решает для коэффициентов b0, b1 и b2, которые используются в формуле для A, B и C.

Вот учебник по подгонке кривой в R для получения дополнительной информации:

http://www.walkingrandomly.com/?p=5254

Это приложение может помочь вам получить коэффициенты для формулы расстояния напрямую или собрать все необходимые данные для расчета самостоятельно https://play.google.com/store/apps/details?id=com.msl.ibeaconchef

Другие вопросы по тегам