A number of factors would attribute to a nice algorithm:
- How is it detecting the beacons, IR or RF?
- Are the Beacons transmitting on different frequencies as that will help in distance measurement.
I would recommend a 360 degree Directional IR Beacon and place it in a center location. You could then put on the Robot a 360 ring of IR receivers to get it's bering from the Directional IR Beacon then use a IR Distance Sensor mounted in the direction of the Beacon(Or have a rotating Distance sensor to rotate to that specific bering) operating on a different frequency to measure the distance between itself and the robot.
In the Robot's program set the Beacon as 0,0 for the point of origin(Just like in Geometry) and set each IR emitter on the robot's 360 ring of IR receivers to a specific degree. This is when trigonometry kicks in.
Think of the distance between the beacon and robot is the hypotenuse of a triangle. Take the distance measurement from the IR distance sensor and the bering from the 360 IR ring and put it into a Sine formula:
Sin <Bering from 360 IR Ring> = Y / <IR Distance Measurement>
Y is your robot's Y Coordinate value
Then take the Y coordinate and put it into this Tangent formula:
Tan 90 = Y / X
X is your robot's X coordinate value
You then have your Robot's X,Y coordinates, using only one Beacon.
However your robot must have a processor/MCU able to process the Trig functions or store a table of values for the Trig functions.
Find more info on Trig functions and triangles (I removed the URL as Avast had blocked a trojan horse from that site)
Hope this helps,
Nick(macdad-)