Android如何获得Ibeacon X轴的正负值?

时间:2019-04-02 08:47:36

标签: android ibeacon ibeacon-android

假设我在一条水平线上有3个信标,我想检查距离中点有多远,所以我想获得该区域的正负值。这意味着我要声明信标的右侧或左侧位置,以便估算信标的当前位置。

这是类似于Google地图导航的内容,我想用水平线在圆形区域上显示指针,因此在此之前,我想知道如何获得Ibeacon的正或负X-axis

enter image description here

2 个答案:

答案 0 :(得分:2)

有解决此问题的方法。但它们很复杂,我们将无法通过StackOverflow答案中的简单代码片段来解决。

主要问题是信标信号是全向的。因此,如果您根据信标的信号强度估计您在3米外,那么您将不知道哪个方向。对于问题中的2D轴,您不知道是左还是右。

第二个问题是,一旦超过1-3 m,信号测量中的噪声就会变得很高,从而使距离估算的误差也很高。 这使得三边测量等技术即使在中等距离下也无法正常工作。

对于2D室内位置,一般的解决方案是使用RSSI指纹识别。这需要训练数据集,其中每个信标的相对信号电平的矢量记录在2D网格的每个点上。 (对于一维线也一样。)训练后,此数据集用于查找位置。为每个信标的相对信号电平创建一个新矢量。然后在训练集中搜索最接近的向量匹配。那给你你的位置。

答案 1 :(得分:1)

您可以查找称为三边测量或多边测量的概念。假设您知道至少3个信标的位置,它们的位置彼此分开但信号重叠,则可以求解这些信标之间的任意点。

因此,您的移动应用需要做的是: 1)事先掌握每个信标的位置(例如x,y)这些位置可以是任意的,只要它们始终应用于坐标系中的所有信标

2)扫描每个信标的广告数据,其中应包括该信标的RSSI。您可以使用它来估计每个检测到的信标与手机之间的距离。

3)了解每个信标的位置以及手机与每个信标的距离,您可以使用多边函数计算手机相对于信标的位置。那里有很多可以做到这一点的库,某些基于非线性最小二乘算法的库就可以工作。

我已经在一些室内导航应用上完成了上述操作,其质量和准确性在很大程度上取决于您的信标位置。您需要确保在您要覆盖的任何区域中,在附近放置3至4个信标,以提供良好的RSSI读数。