You may have seen my query a few days ago about learning the math involved in determining position from landmarks. [Calculating position from observation of landmarks or beacons] The articles by Jim Ubersetzig describe a fairly simple home-made scanner by spinning a laser pointer beam, and then a phototransiter which detects light bouncing back from a retroreflector.
I like this method becuase it seems like it would be more accurate than a camera based method. A camera is limited in its resolution, but a single point light sensor has essentially unlimited angle resolution (limited only by the processor speed). Though I imagine the camera based system has an advantage in that it always takes an instantaious image of the markers, and therefore can take good readings while it is moving.
The system in the articles, is however, demands that all markers stay within view. As soon as a marker is blocked, the robot must resort to blind navigation techniques.
The problem is the technique he uses identifies the markers. By knowing that the first two of the markers are closer together than the
3rd, he can identify the first two. I am trying to think of a way to identify markers without resorting to a camera.
Actually, I can think of one way to handle the problem without needing to change the sensor system. If the robot doesn't count the correct number of markers, it can assume that one (or more) is blocked. Then, it can calculate its position by trying every possible combination of markers, eliminating any combination which results in a postion too far from its last confident position.
But obviously, the ability to identify individual markers results in a more robust system. Color is obviously one way. But, I think I would need a single sensor capable of detecting multiple colors. I could use different color retroreflectors, and have different color light sources emitting from the sensor assembly. Then what ever color was on at the time, it would reflect only sensors with its color.
Another idea is like bar-codes. Each marker would be followed closely by a series of spaces or markers to form the code. They could be distinguished from the other marker positions by their poximitiy. But, the weakness is that a marker could be partially blocked.
Any other ideas?