My MazeBot


The purpose of this robot is to solve a line maze, according of the rules we defined for RobotMC. A line maze offers the same chalange as a classic maze but it's easier to create the maze itself.

The maze-bot on the test-maze

The differential drive mazebot has a ball-caster at the front and uses a tamiya twin gearbox with optical encoders on both motors. This makes it possible to determine the motor speed (and robot progress) with high accuracy. It did however turned out to be quite difficult to *control* the robot with this accuray. The robot can drive & follow the line quite well. To take the turns it is nescesarry to slow down significantly and take 'single steps' to prevent overshoot. 

Tamiya twin gearbox with optical encoders

The robot learns the maze while searching for the target and uses a flooding algorithm to determine the fastet way to the target (when known, in the second and third run) or to the fastest reachable unknown cell. And 'fastest' not only takes the distance into account, but also the number of turns.

The flooding algorithm was developed and tested in perl, with a simulated maze. The algorithm requires one byte to store each crossing and one byte for flooding. To facilitate mazes up to 16*16, 512 bytes of memory is required. I selected the 18F452 for this.
The flooding algorithm is used on each crossing and requires up to 1 second to flood the full maze, but in most cases only a fraction of the maze needs to be processed and also needs a fraction of the time.

The line-sensor consists of 8 Fairchild QRB1134 IR Photo reflectors. The line position is determined every 2ms by reading the 8 photo-transistors with and without the IR-led on. The 6 middle sensors are converted via a look-up table to the line position. The outer two sensors are used to detect left and right turns.


Links:          My Robots


Joep Suijs