Pepoun

Pepoun, 2004

Pepoun is the project for Evolutionary Robotics, summer term 2003/2004, Computer Science department, Faculty of Mathematics and Physics, Charles University in Prague, Czech Republic.

It is unique in its usage of Kohonen neural network for the self calibration of the infrared vision.

Team members:

The following text is extracted from the documentation written by Matìj Hoffmann.

Project description

Pepoun on the line

We tried to teach the Lego(R) robot (www.lego.com) equipped with the BrickOS system (http://legos.sourceforge.net) to follow the line guided with its infrared sensors. The robot is fully autonomous, it does not cooperate with the control tower. It has got three active infrared sensors. The program is written in C. Pepoun initializes itself to distinguish dark and light background in the beginning . Afterwards it is able to follow the line.

Calibration

The Pepoun robot turns itself around and measures the responses from sensors after power on. The Kohonen's neural network with eight neurons, three inputs each, is being initialized at this moment. Every neuron represents one of the situations of the kind: 'dark/light on the left sensor combined with dark/light on the central one and dark/light on the right one'. The start-up initialization guarantees, that every neuron will represent the situation it is supposed to.

Normally the black line on the white background is expected, but other dark vers. light combination should do as well. The automatic calibration should handle this. With the expectation of the darker color to be the line. There is the INVERSED macro in linefol.cpp utility to switch the behavior for the inverse environment. The initialization is placed in kohonen.cpp. The ideal environment for calibration is the chaotic alternation of the dark and the light color.

Line following

The outer sensors are the most important for the line following. The robot supposes that it is placed on the line and that it is running forward. The outer sensors capture the light color. If not, e.g. the left sensor captures the dark color, then the robot turns left (the line got under the sensor because of the line curve or because the robot is turning too much to the right) and it keeps turning until the left sensor captures the light color - the line got in between the sensors again. For the right side analogically.

The central sensor has the controlling function. It could happen, that the robot keeps going forward with outer sensors on the light background, thinking, that it is still on the line, but it is not. That is why the central sensor scans the line (dark background). When neither the central sensor, nor his outer colleagues see the line, the timeout is being counted down (since the line lose). This watchdog is reset whenever any sensor recognizes the line. However, when the line is not seen soon enough, the panic mode placed in matej.cpp is entered. The robot turns left and right, extending the diameter. The code for the random walk or backward move could be added, for handling the failure situation.

Note: The backward riding is not used, because the environment is not simply binary (dark/light) and because in our case the robot finds always the line.

Videos

All videos require ffmpeg codec.