One big problem that continues to haunt you is the problem of a robot finding its dock from an arbitrary distance with sufficient accuracy to line-up and dock.
Possible solution: (optical, software, and hardware based)
Use a trick from the Second World War for arieal navigation: A “polarized” locator beam.
During the Second World War, both German and RAF Pathfinder squadrons used a specialized radio beam directed toward the intended target.
The “beam” was actually two different, overlapping, radio beams comprised of interlocking dots and dashes, such that if the operator heard a continuous tone in his receiver, he was “on the beam”. If he heard dots, he was on a specific side of the beam and had to turn a particular direction to find the intersection point. If he heard dashes, he had to turn the other way to correct.
It should be possible to establish a relatively narrow set of IR beams[1] that interlock[2] so that the robot can see his dock from a distance and know where he is with respect to its center-line.
If you want to establish this for both robots individually, you can modulate the beams with a specific frequency such that the robot can know which beam is “his” beam.
==================== Footnotes ====================
-
For initial experimentation and alignment purposes, you can use visible light from a conventional LED as the light source. Once the mechanics and optical alignment are in place, you can substitute IR LEDs.
-
Interlocking dots and dashes can be done easily with either a small programmable device or a bistable multivibrator based on a 555 timer that has different intervals for each state.
- A small programmable device, (like the ones available from Adafruit or SparkFun), can be programmed to provide both the interlocking signals and modulate them at the robot’s specific identifying frequency.
- A similarly programmed device can be placed on the robot to both detect the beam and provide a correction signal to the robot itself.