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 -83

Android-устройство:
версия: 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

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

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