Трилатерация в Android с использованием iBeacons

Мы хотим реализовать какое-то определение местоположения в помещении с помощью iBeacons. Эта статья кажется действительно интересной, в которой автор реализовал -линейная триангуляция методом наименьших квадратов с использованием библиотеки Eigen C++ и алгоритма Levenberg Marquardt. Поскольку Eigen написан на C++, я попытался использовать JNI и Android NDK, чтобы использовать его, но он выдает множество ошибок, которые я понятия не имею, как решить, и я ничего не смог найти в Интернете. Я также пытался использовать Jeigen, но в нем нет всех функций, которые нам нужны.

Итак, мои вопросы:

  1. Кто-нибудь когда-нибудь реализовывал какую-то трилатерацию с использованием маяков в Android?

  2. Считаете ли вы, что использование Eigen+JNI+NDK является хорошим решением? Если да, то реализовывали ли вы Levenberg Marquardt с помощью этой комбинации?

  3. Есть ли лучшие варианты, чем алгоритм Левенберга-Марквардта, для вычисления трилатерации в приложении для Android?


person Lucas Coelho    schedule 10.11.2014    source источник


Ответы (1)


Взгляните на эту библиотеку: https://github.com/lemmingapex/Trilateration

использует алгоритм Левенберга-Марквардта из Apache Commons Math.

Например... в TrilaterationTest.java

ты можешь видеть:

double[][] positions = new double[][] { { 1.0, 1.0 }, { 2.0, 1.0 } };
double[] distances = new double[] { 0.0, 1.0 };

TrilaterationFunction trilaterationFunction = new TrilaterationFunction(positions, distances);
NonLinearLeastSquaresSolver solver = new NonLinearLeastSquaresSolver(trilaterationFunction, new LevenbergMarquardtOptimizer());

double[] expectedPosition = new double[] { 1.0, 1.0 };
Optimum optimum = solver.solve();
testResults(expectedPosition, 0.0001, optimum);

но если вы видите объективный пример https://github.com/RGADigital/indoor_navigation_iBeacons/blob/show-work/ios/Group5iBeacons/Debug/Managers/Location/NonLinear/NonLinear.mm можно заметить, что точность используется как параметр оценки, а не расстояние.

person Massimiliano D'Amico    schedule 09.06.2015
comment
Прекрасно работает! При использовании алгоритма трилатерации обязательно конвертируйте (широта, долгота, альт) в декартовы координаты (x, y, z) в соответствии с требованиями библиотеки. - person Scott Wiedemann; 02.01.2017