我正在研究本地化无线传感器网络项目。我正在使用三角测量法来估计无线传感器的位置,其中我有两个传感器,其位置是已知的:
A(X1,Y1)
和B(X2,Y2)
我要找的点是c(x,y)
我有这些点之间的距离:
AB,AC& BC
我怎么能用三角测量来做到这一点?
答案 0 :(得分:3)
把
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)))
将y
替换为上面第1项中的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)
然后我们可以将h
和c1
推导为
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
现在我们可以使用C
与h
交叉的AB
垂直距离D
的事实:
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.
来自eq(3)
cos(theta) = 0.70710678118655
theta := 0.78539816339745 radians
计算h
和c1
:
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)