altbeacon - константы для расчета расстояния
Я пишу дипломную работу по навигации внутри помещений с помощью iBeacons. Для этого я использую трилатерацию, чтобы найти свою позицию. Я использовал библиотеку android beacon, которая теперь называется библиотекой AltBeacon, для обнаружения маяков и вычисления расстояния. Я заметил, что расстояния, которые я получаю, не настолько точны, и после некоторого поиска здесь, я наткнулся на сообщение от DavidYoung, в котором говорится, что, поскольку большинство устройств имеют разные антенны Bluetooth, я должен был это учитывать при расчете расстояния.
Библиотека AltBeacon вычисляет расстояние следующим образом (взято из публикации DavidYoungs):
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) для моего Lg G2 с измерениями RSSI через определенные интервалы метров от маяка?
Я нашел это в качестве примера для значений измерения с вычисленным коэффициентом.
Данные о расстоянии до Nexus 5
Метры RSSI
0,25 -41
0,5 -43
1 -49
2 -65
3 -58
4 -57
5 -67
6 -67
7 -77
8 -70
9 -69
10 -75
12 -72
14 -72
16 -78
18 -83
20 -81
25 -81
30 -75
40 -83Android-устройство:
версия: 4.4.2
номер_стройки: LPV79
модель: Nexus 5
производитель: LGE
Информация о маяке:
Тэг RadBeacon
Объявлений в секунду: 10
Мощность передачи: Макс
IPhone 5s Средний RSSI @1m: -51Коэффициенты формулы расстояния рассчитываются для этих значений:
Перехват: 0.1820634
Множитель: 0,8229884
Мощность: 6.6525179
Термин "перехват" предполагает линейную регрессию, но когда я поместил значения в калькулятор линейной регрессии, он дал мне результаты, которые не были близки к этим значениям.
Я надеюсь, что вы можете помочь мне, и что мой вопрос достаточно ясен:)
1 ответ
Существует много видов формул, которые вы можете использовать при выполнении регрессии с наилучшим соответствием. Для расчета расстояния мы используем кривую мощности, подгонка к которой поддерживается бесплатным статистическим пакетом R. Вы можете прочитать больше о том, как сделать это здесь:
https://github.com/AltBeacon/android-beacon-library/issues/47
Хотя получение формулы для конкретного устройства поможет вам получить более точные оценки расстояния, большая часть ошибки, которую вы видите на выходе трилатерации, вероятно, связана с шумом сигнала, ослаблением препятствий и многолучевым распространением. Поймите, что даже с формулой, специфичной для устройства, дальность маяка неточна, а точность ухудшается по мере удаления от устройства. Чтобы смягчить эти эффекты, расположите ваши маяки как можно ближе и, по возможности, на расстоянии прямой видимости от мобильного устройства.