Polar beacon system using angle to find distance
To find the position of the opponent robot relative to our robot, a sensor measure the angle "position" of a beacon on the opponent, and the angle "width" of this beacon.
The robot is equipped with a rotating laser right below its beacon support (or more precisely, a rotating mirror, reflecting a laser). A retroreflector (catadioptre) beacon is on the opponent support.
The angle of the opponent robot is easy to determine, it is given by the angle of the rotating mirror when the laser was received back.
For the distance, this system uses the time during which the laser touch the beacon. The nearer the beacon, the longer the time. We can measure this time using a rotary encoder.
The distance can be computed with:
b
d = ------- N
2 π s
With:
d
: distanceb
: beacon widths
: measured stepsN
: encoders steps
Here is a first approximation of this system precision, using a 5000 steps/round encoder and a 80 mm wide beacon (because of angle, the retroreflector will not reflect during all that beacon width):
If the mirror is rotating at a speed of 20 round/second, there is one step every 10 µs (this corresponds to about 140 instructions at 14 MHz). The counter sampling could be done by a CPLD also used to decode the encoder signal. An other solution is to ignore encoder direction and use a AVR counter and input capture.
Links
http://www.microb-technology.org/index.php/Microb_Technology/2009/Beacon