使用iBeacons在Android中进行三角测量

我们希望使用iBeacons实现某种室内位置确定.
This article seems really interesting,其中作者使用Eigen C库和Levenberg Marquardt算法实现了非线性最小二乘三角剖分.由于Eigen是用C语言编写的,我试图使用JNI和Android NDK来使用它,但是它会抛出 lot of errors that I have no idea how to solve并且我在网上找不到任何东西.我也尝试使用Jeigen,但它没有我们需要的所有功能.

所以,我的问题是:

>有人曾经使用过实施某种Trilateration
Android中的信标?
>您认为使用Eigen JNI NDK是一个很好的解决方案吗?如是,
你有没有用Levenberg Marquardt实现它
组合?
>有没有比Levenberg Marquardt算法更好的选项来计算Android应用程序中的三边测量?

解决方法

看看这个库: https://github.com/lemmingapex/Trilateration

使用来自Apache Commons Math的Levenberg-Marquardt算法.

例如..
进入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);

但是如果您看到objectivec示例https://github.com/RGADigital/indoor_navigation_iBeacons/blob/show-work/ios/Group5iBeacons/Debug/Managers/Location/NonLinear/NonLinear.mm,您可以注意到精度用作评估参数而不是距离.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...