【问题标题】:How to determinate position of a point with triangulation如何通过三角测量确定点的位置
【发布时间】:2015-06-30 21:06:47
【问题描述】:

我正在研究定位无线传感器网络项目。我正在使用三角测量方法来估计无线传感器的位置,我有两个传感器,它的位置是已知的:

A(x1,Y1)

和 B(X2,Y2)

我要定位的点是c(x,y)

我知道这些点之间的距离:

AB、AC 和 BC

如何通过三角测量做到这一点?

【问题讨论】:

标签: geometry sensors wireless triangulation


【解决方案1】:

a := dist(B,C), b := dist(A,C).
A := (a1,a2), B := (b1,b2), C := (x,y).

我们有

(x - a1)^2 + (y - a2)^2 = b^2           eq (1)
(x - b1)^2 + (y - b2)^2 = a^2

因此:

x^2 -2(a1)x + (a1)^2 + y^2 -2(a2)y + (a2)^2 = b^2
x^2 -2(b1)x + (b1)^2 + y^2 -2(b2)y + (b2)^2 = a^2

现在减去:

(2(b1) - 2(a1))x + (a1)^2 - (b1)^2 + 2((b2) - (a2))y + (a2)^2 - (b2)^2
    = b^2 - a^2

求解y

y = u + vx                              eq (2)

地点:

u := ((a1)^2 + (a2)^2 - ((b1)^2 + (b2)^2) + a^2 - b^2)/(2((a2) - (b2)))
v := (2((b1) - (a1)))/(2((a2) - (b2)))

在上面的等式 1 中将 y 替换为 u + vx

(x - a1)^2 + (u + vx - a2)^2 = b^2 

rx^2 + sx + t = 0

地点:

r := 1 + v^2
s := -2(a1) + 2uv - 2v(a2)
t := (a1)^2 + (uˆ2) - 2u(a2) + (a2)^2 - b^2

求解x

x = (-s +/- sqrt(s^2 - 4rt))/(2r)

从方程 2:

y = u + vx.

替代方法

a := dist(B,C)b := dist(A,C) 为上图,c := dist(A,B).theta 为角度BAC,如下图所示。

我们有

cos(theta) = (b^2 + c^2 - a^2)/(2bc)    eq (3)

那么我们可以推导出hc1

h := b * sin(theta) = b * sqrt(1 - cost(theta)^2).
c1 := b * cos(theta)

所以,

D := (d1, d2) = (B - A) * c1 / c + A    eq (4)

在哪里

d1 := (b1 - a1)*c1/c + a1
d2 := (b2 - a2)*c1/c + a2

现在我们可以使用CAB 相交于D 的垂线距离h 的事实:

C := (d1, d2) +/- ((a2 - b2)*h/c, (b1 - a1)*h/c) 

其中+/- 代表C 高于或低于AC 线的两种可能性。

C = (x, y)

在哪里

x := d1 +/- (a2 - b2)*h/c
y := d2 +/- (b1 - a1)*h/c

示例

A = (2,3) - B = (5,4) - a = sqrt(5) - b = sqrt(5)

计算c:

c := dist(A,B) = 3.16227766016838.

从等式(3)

cos(theta) = 0.70710678118655
theta := 0.78539816339745 radians

计算hc1

h := b * sin(theta) = 1.58113883008419.
c1 := b * cos(theta) = 1.58113883008419.

从等式(4):

D = (3.5,3.5)

现在计算C:

C = ((a2 - b2)) * h / c , (b1 - a1) * h / c) + D
  = (-0.5,1.5) + (3.5,3.5)
  = (3,5)

验证:

dist(A,C) = dist((2,3),(3,5)) = sqrt(1ˆ2 + 2^2) = b (OK)
dist(B,C) = dist((5,4),(3,5)) = sqrt(2^2 + 1^2) = a (OK)

【讨论】:

  • 这可能不是最优雅的方程组。但是,它有望让您继续您的项目。
  • 是否有其他方法可以帮助确定未知点的位置?
  • 如果将所有点转换为 A,通过从自身和 AB 中减去,方程会更简单,因为这样你就可以摆脱 a1 和 @ 987654372@(同时变为0)。因此,您可以解决这个更简单情况的问题(包括重写a1 = a2 = 0 的方程),然后将A 添加回解决方案以获得C 的实际坐标为(x+a1, y+a2).
  • 我做了一些例子但结果不匹配,这个算法的结果是近似的还是精确的?请给我这个算法的来源,以便我可以参考,谢谢
  • 在等式中 x = (-s +/- sqrt(s^2 - 4rt))/(2r) [s +/-] 表示 s+ 或 s- ?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 2013-05-05
  • 2018-07-07
  • 2014-07-26
  • 1970-01-01
  • 2015-11-01
  • 2012-05-06
相关资源
最近更新 更多