1

I have a problem involving 3d positioning - sort of like GPS. Given a set of known 3d coordinates (transmitter) and their distances d from an unknown point, I want to find the unknown point (receiver). There are 8 known points. The distances are accurate to about 0.3mm, and I want to multilaterate to find the most precise position of the receiver possible.

But at any given point in time, some of the distance from one of these known points to the unknown point may be obstructed and will be giving incorrect range results. Also, at any given point, the non-obstructed (and useable) ranges might be off by a constant error of 8.7 mm (though if I detect this, I can easily correct for it).

What would be the best way to go about this? Since it's unlikely that my data will have an exact solution (all of the 4+ spheres probably won't have a single perfect intersect point), the algorithm would need to be capable of approximating it. I have seen algorithms that rely upon iteration to determine the minimum error, but how do I filter out the incorrect ranges and identify the "off-by-constant" ranges?

EDIT: Once I find a fairly confident position once, I can use this previous position data and my update rate to filter out bad results.. the difficulty is in finding the first position.

user2525288
  • 87
  • 1
  • 6

1 Answers1

0

Don't try using Newton-Gauss. The cost function has a discontinuity points in first derivative of the cost function which makes Newton based algorithms unusable (they almost never converge). Try using direct search algorithm family (I tried it and it works perfectly). It works. Google direct search function optimization algorithm. There are plenty of nice examples. It is rather simple algorithm - so it makes it rather calculation "cheap". But it is a bit sensitive to the choice of start point.