This project, named as Bsensor, was designed to overcome a difficult task for a small mobile robot in indoors environment; to solve the absolute positioning problem with few computational resources. Several methods exists, but most require triangulation from several sensors and positioning is not easily calculated as it is required that the robot receive signals from different directions.
This project is based on active beacons and a vision based intelligent sensor positioned in the robot to determine distance and angle from the beacon. The beacons, based on IR LEDs, are composed of four LEDs in a square shape with known dimensions. The beacons could be tagged by including additional LEDs inside the square but making sure that no LEDs are one over the other in a vertical position (to differentiate them from the sides).
The sensor use a video processing system, based on an analog camera with an IR filter, ADC, CPLD, FIFO and the M16C, a video frame is captured, LEDs are identified, filtered, and the beacons recognized and identified with its corresponding tag number. Based on the apparent dimensions in the frame, and with some calibration data, distance can be calculated. Also, due to the way the image is projected in the camera plane, different distances are calculated for each vertical side and thus the angle to the beacon can be estimated. With both, distance and angle, the robot could have a rough position just by looking a single and simple active beacon. Output is sent to the robot main CPU through a serial port.
Naubert Aparicio develops this project based on M16C platform which has enough I/O ports, fast, DMA capabilities, and its lower power consumption is ideal in mobile robots. Besides the C development environment and debugging facilities made the programming very fast.