根据精度计算 2D 信标位置

Calculating 2D beacons position based on accuracy

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

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

看成三角形就可以了

通过使用 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 处的点。

您将获得两分,而不是一分。

光靠两个信标是无法知道准确位置的。

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

你不能。世界上所有的数学都不会改变这样一个事实,即您从信标获得的 RSSI 读数会剧烈波动,并且会响应许多您无法控制的因素。

您最多只能粗略地说出您附近有哪些信标,以及它们有多近。一旦您在真实环境中进行测试,任何比 更精确的尝试都会 失败。

终于得到了一个不错的结果,如果有人需要解决方案:

我把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;

现在有两个已知圆心和半径的圆相交于一个点,也就是手机的位置。