Project status: Not Active
The mazebot was a project that was developed as a part of my undergraduate thesis for the Department of Informatics of the Technological Educational Institute of Thessaloniki, Greece. It is quite a multi-disciplinary project, involving the use of a small robot, a reconfigurable maze and a console software running on a remote computer. The goals of the project were:
The robot that we used was the SRV-1 from Surveyor Corporation which fit our needs perfectly. Hardware additions were made to add an optical sensor for dead reckoning and custom firmware were written to enable the robot to function correctly in the maze application. More detailed information about this can be found in my undergraduate thesis found here
The main challenge faced at this project was making a robot traverse a maze without mistakes, using only vision as the primary sensor. Computer vision is a scientific field all by itself but for the purposes of this research project canny's edge detection algorithm was used to extract features from the maze images.
What gave intelligence to the robot and enabled it to differentiate between the various features of each image was 5 multi layer perceptron neural networks. In the case you are not familiar with what a neural network is you can visit the neural networks tutorial .
The problem with a neural network approach was that the CPU of the robot, the blackfin, has no FPU (floating point unit) to perform the necessary calculations required by a typical neural network. For that reason and after being unable to find an easily interfaceable floating point emulation library it was decided to create one from scratch, something which lead to another small project the floating point emulation library. That aside the neural networks when used in the actual movement algorithm of the mazebot brought about very encouraging results.
As can be seen in the picture the robot takes input from the camera and decides what needs to be done in order for it to move properly by utilizing the neural networks. In this picture specifically, the robot has stopped to check how aligned it is with the corridors of the maze and the neural nets command it to rotate right. The five different neural nets that are used each accomplish a separate task. One as we saw was alignment with the corridors. The other two are detecting openings on the left and on the right so that the robot can map its environment accurately. The fourth network in collaboration with the sensor we added for dead reckoning orders the robot when to stop moving and check for exits. And finally the fifth network has the task of deciding how to do corrective movements
The students of the Artificial Intelligence class can communicate with the robot by using the communication console developed solely for that project. That same console is used for video feedback, neural network training and even as a simple text editor for the AI algorithms providing the student with whatever he might need in a session with the robot. What's even more interesting though is the way via which students command the robot. A C interpreter was developed on the robot's side based on the excellent work being done by Zik Saleeba with the picoC interpreter. That way the student can just write a C source file, upload it to the robot and just see it running in the maze's real world environment. Many functions and macros have been pre-defined inside the robot so that the student's life can be just a bit easier. Using the interpreter many graph search algorithms can and have been showcased running inside the maze. Examples are A* and depth first graph search algorithms.
The mazebot is a project which is still being developed albeit not that much heavily anymore since I no longer am a student of the Technological Educational Institute of Thessaloniki.For more in-depth information on every part of the project you can check my graduation thesis.
The mazebot took part in Infosystem 2009, an Information technology exhibition taking place yearly in Thessaloniki, Greece. There we shot a few videos of the mazebot two of which can be seen here. First this is a video of the mazebot trying to find the exit to the maze using an uploaded A* algorithm with snippets of the algorithm popping up as the the robot moves
Secondly, here is a video of the robot moving inside the maze and following a strange route to the exit. In this video while the robot moves parts of the navigation algorithm's activity diagram are shown in an effort to give to the viewer an idea about how it finds its way inside the maze.