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