There are 3 sensors (A, B, C) on a plane, located in the corners of a (known) equilateral triangle.
I want to calculate the (2D) location of an object (X) inside that triangle.
One sensor returns one scalar value per reading, but in order to compensate for environmental effects, I always use the values relative to each other in order to get stable values.
This means I get one value between 1.0 and 0 for each pair of sensors depending on whether the object is on the median line between two sensors (ratio=1.0), directly in one corner of the triangle (ratio= ~0.3) or even further away.
Here you can see some plots that show the idea.
The red dots are the sensor locations. I have plotted selected ratios of the measurements depending on the position of the object X.
So if X moves on a plotted curve, the ratio of sensor readings stays constant.
My goal in the end is to find X's location depending on the three sensor ratios.
Ratio B/A :
All Ratios (Ratios A/B and B/A highlighted) :
While I can make calibration measurements, these take a lot of time and are only practical for roughly 1/10th of the targeted spatial resolution. (i.e.: I can make a calibration measurement each meter, but I am targeting a 0.1m resolution.) I am, however not limited on how I select the location for the calibration measurements.
I have three values per measurement and have to somehow do a reverse interpolation.
Unfortunately, the physical model behind it is very complex (and proprietary) so I don't have a way to use it as a starting point. Also there are a lot of nonlinearities and other unknowns in the system.
What I've tried:
My first attempt was to fit circles to my calibration measurements, and reverse-interpolate on the positions of center and radius. So I would calculate a circle per sensor ratio and look for the point where the three circles would (roughly) intersect. Unfortunately this did not really work out - especially as the circle's radius approaches infitity if my sensor-ratio approaches 1.
So in the end I've ditched the geometrical approach and have looked more into numerical solutions, but I haven't found a solution that could work in my case.
I hope my explanation was clear and precise. I'm grateful for any pointers in the right direction!
(I'm currently working with Python/numpy)
More information as answer to the question in the comments
I have spent some time thinking about the reverse interpolation approach. I figured that I would need a way to reverse interpolate each 3D surface and obtain a 2D function (per sensor pair). I would then have to find the intersections of the three 2D functions. Ideally, I would then find the single point where the error is minimal.
I am not sure how to do this.