基于准确度计算2D信标位置

时间:2016-04-14 11:59:36

标签: ios ibeacon beacon

我在已知位置有两个信标。 如何根据准确度计算两个信标之间iPhone的确切2d位置。

3 个答案:

答案 0 :(得分:4)

我同意jrturton。它只能在高度受控的条件下工作并且有三个信标,结果将远非完美。以下是使用两个信标计算时发生的情况:

将其视为三角形。

enter image description here

使用distance formula,你有两个方程式:

20m = sqrt((1 - iPhone.x)^ 2 +(2 - iPhone.y)^ 2)
40m = sqrt((10 - iPhone.x)^ 2 +(2 - iPhone.y)^ 2)

现在您需要解决iPhone.xiPhone.y

20 ^ 2 =(1 - iPhone.x)^ 2 +(2 - iPhone.y)^ 2
40 ^ 2 =(10 - iPhone.x)^ 2 +(2 - iPhone.y)^ 2

所以这些是圆的方程式,你必须在which they're touching计算点。

你会得到两分,而不是一分。

enter image description here

您无法从两个信标中知道确切的位置。

正如评论中提到的那样,你需要三个信标才能做到这一点。

答案 1 :(得分:4)

你做不到。世界上所有的数学都不会改变这样一个事实,即你从信标中获得的RSSI读数会大幅波动并响应你控制之外的许多因素。

你能做的最好的事情就是粗略地说出你附近的信标,以及它们附近的信息。在真实环境中进行测试后,任何比更精确的尝试都会失败

答案 2 :(得分:0)

我终于得到了一个好结果,以便有人需要解决方案:

我认为p1和p2是两个圆圈的中心。

然后我计算了两个中心之间的距离(两点距离公式),如下所示:double dx = (b.x-a.x); double dy = (b.y-a.y); double dist = sqrt(dx*dx + dy*dy); 然后我找到了一个基本公式,将近似精度限制在两点之间的距离(p1,p2)

double l = dist / (dA + dB);

现在我有两个已知中心的圆圈,并根据精度和极限计算半径

float r1 = l * dA;
float r2 = l * dB;

现在有两个圆已知中心,半径在单点交叉,这是移动的位置。