Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trilateration and locating the point (x,y,z)

Tags:

I want to find the coordinate of an unknown node which lie somewhere in the space which has its reference distance away from 3 or more nodes which all of them have known coordinate.

This problem is exactly like Trilateration as described here Trilateration.

However, I don't understand the part about "Preliminary and final computations" (refer to the wikipedia site). I don't get where I could find P1, P2 and P3 just so I can put to those equation?

Thanks

like image 362
CB4 Avatar asked Apr 23 '13 18:04

CB4


People also ask

How do you calculate trilateration?

Distance = Rate × Time The first concept, trilateration, is the focus of this activity. It centers around finding your position on the Earth by knowing the location of orbiting GPS satellites and the distance from those satellites to your location on the planet.

How many refference points are required for 2D trilateration?

In a 2D scenario, three land references are required to perform a trilateration process as illustrated in Figure 3.2.

What is trilateration algorithm?

Trilateration Algorithms In simple terms, trilateration is a mathematical technique in which the location of a point in space is calculated using the distances from such a point to a series of known geometrical entities, e.g., a sphere or a circle.

What is 3D trilateration?

What Is Trilateration? Trilateration is the more common method for position calculations. Trilateration uses the known distance from at least three fixed points in 2D space or four fixed points in 3D space (as if on the surface of the Earth) to calculate the position of an object.


1 Answers

Trilateration is the process of finding the center of the area of intersection of three spheres. The center point and radius of each of the three spheres must be known.

Let's consider your three example centerpoints P1 [-1,1], P2 [1,1], and P3 [-1,-1]. The first requirement is that P1' be at the origin, so let us adjust the points accordingly by adding an offset vector V [1,-1] to all three:

P1' = P1 + V = [0, 0] P2' = P2 + V = [2, 0] P3' = P3 + V = [0,-2] 

Note: Adjusted points are denoted by the ' (prime) annotation.

P2' must also lie on the x-axis. In this case it already does, so no adjustment is necessary.

We will assume the radius of each sphere to be 2.

Now we have 3 equations (given) and 3 unknowns (X, Y, Z of center-of-intersection point).

Solve for P4'x:

x = (r1^2 - r2^2 + d^2) / 2d  //(d,0) are coords of P2' x = (2^2 - 2^2 + 2^2) / 2*2 x = 1 

Solve for P4'y:

y = (r1^2 - r3^2 + i^2 + j^2) / 2j - (i/j)x //(i,j) are coords of P3' y = (2^2 - 2^2 + 0 + -2^2) / 2*-2 - 0 y = -1 

Ignore z for 2D problems.

P4' = [1,-1]

Now we translate back to original coordinate space by subtracting the offset vector V:

P4 = P4' - V = [0,0]

The solution point, P4, lies at the origin as expected.

The second half of the article is describing a method of representing a set of points where P1 is not at the origin or P2 is not on the x-axis such that they fit those constraints. I prefer to think of it instead as a translation, but both methods will result in the same solution.

Edit: Rotating P2' to the x-axis

If P2' does not lie on the x-axis after translating P1 to the origin, we must perform a rotation on the view.

First, let's create some new vectors to use as an example: P1 = [2,3] P2 = [3,4] P3 = [5,2]

Remember, we must first translate P1 to the origin. As always, the offset vector, V, is -P1. In this case, V = [-2,-3]

P1' = P1 + V = [2,3] + [-2,-3] = [0, 0] P2' = P2 + V = [3,4] + [-2,-3] = [1, 1] P3' = P3 + V = [5,2] + [-2,-3] = [3,-1] 

To determine the angle of rotation, we must find the angle between P2' and [1,0] (the x-axis).

We can use the dot product equality:

A dot B = ||A|| ||B|| cos(theta) 

When B is [1,0], this can be simplified: A dot B is always just the X component of A, and ||B|| (the magnitude of B) is always a multiplication by 1, and can therefore be ignored.

We now have Ax = ||A|| cos(theta), which we can rearrange to our final equation:

theta = acos(Ax / ||A||) 

or in our case:

theta = acos(P2'x / ||P2'||) 

We calculate the magnitude of P2' using ||A|| = sqrt(Ax + Ay + Az)

||P2'|| = sqrt(1 + 1 + 0) = sqrt(2) 

Plugging that in we can solve for theta

theta = acos(1 / sqrt(2)) = 45 degrees 

Now let's use the rotation matrix to rotate the scene by -45 degrees. Since P2'y is positive, and the rotation matrix rotates counter-clockwise, we'll use a negative rotation to align P2 to the x-axis (if P2'y is negative, don't negate theta).

R(theta) = [cos(theta) -sin(theta)]            [sin(theta)  cos(theta)]    R(-45) = [cos(-45) -sin(-45)]            [sin(-45)  cos(-45)] 

We'll use double prime notation, '', to denote vectors which have been both translated and rotated.

P1'' = [0,0] (no need to calculate this one)  P2'' = [1 cos(-45) - 1 sin(-45)] = [sqrt(2)] = [1.414]        [1 sin(-45) + 1 cos(-45)] = [0]       = [0]  P3'' = [3 cos(-45) - (-1) sin(-45)] = [sqrt(2)]    = [ 1.414]        [3 sin(-45) + (-1) cos(-45)] = [-2*sqrt(2)] = [-2.828] 

Now you can use P1'', P2'', and P3'' to solve for P4''. Apply the reverse rotation to P4'' to get P4', then the reverse translation to get P4, your center point.

To undo the rotation, multiply P4'' by R(-theta), in this case R(45). To undo the translation, subtract the offset vector V, which is the same as adding P1 (assuming you used -P1 as your V originally).

like image 184
Dan Bechard Avatar answered Sep 21 '22 21:09

Dan Bechard