[Home] [ Products / Projects ] [Documents] [Links]
With this thesis I designed and built an "unconventional" robot platform, called Random Morphology Robot (rmrobot) and examined how an Evolutionary Algorithms (EA) - in this case Genetic Programming (GP) - evolves control programs to move the robot "forward".
A specific characteristic of my approach is that it doesn't involve a mathmatical model of the robot. The robot is a totally black box to the software. The only information about the robot injected into the software is the number of the robot's degrees of freedom (dof) and distance moved by the robot. The dof information is injected implicitly by the function set the GP system uses.
Genetic Programming is a way to create computer programs by the means of evolution. Evolution means a stochastic process inside a computer here. Evolution starts with a set of randomly created programs. This set is called a population. The elements of this populations, the programs, are called individuals.
The GP systems takes individuals from the population randomly and executes them in one or more runs directly controlling the robot. This is called a fitness test. The fitness is defined here on basis of the distance the robot moved while running the fitness test.
The fitness of a bunch of individuals is compared among each other and the GP system will delete some individuals of this bunch with lower fitness out of the population. Now the GP system will breed new individuals by transforming the individuals of the bunch with better fitness to fill the gap left by the deleted individuals. There a three types of transformation operators to breed an new individual:
This evolutionary process is done in a loop until some system condition is achieved or the user interrupts the process.
As every individual is some kind of computer program the elements of these programs are functions. It turned out that the composition of this function set is elementary for success.
The random morphology robot Mk.2. It's just made up of servos as used in radio control (rc) models, brass rods and flexible plastic rods. There's no deeper plan which points of the robot a joint connects. I just wanted to create lots of couplings between the degrees of freedom of the robot. In the right image every servo and every joint has a number (Note: Verbindung:=joint).
I wanted to create a cheap platform for examination of the effectiveness of an Evolutionary Algorithm (EA) - in this case Genetic Programming (GP) - for generating control programs for locomotion. Also I wanted to show, that it's possible to create efficient control programs for locomotion without using a mathmatical model. Creating a mathematical model for a robot like Mk.2 is very difficult because
So why don't use a model?

Mouse cart for distance measurement. On the top right side you can see the pcb of an old computer mouse. One of the friction wheels is connected to the cart's axle via a LEGO Technic gear and chain. On the left side you can see the heat shrink tubed SSC and its battery.
My approach turned out to be very robust against hardware failure and external interferences. Interferences were caused by the experimentator self and the environment the robots lived in.
During most successful experiments the robot collided with obstacles like furniture, equipment or other stuff. The robots strangled themself with their data and energy cables or just reached the maximum length of the cables. All these events disturbed the fitness measurement massively. Lots of fitness tests got low fitness values they didn't deserve and lots of fitness tests got high fitness values they also didn't deserve.
Mk.1 suffered damage of the servos. The potentiometers, which are used internally in the servo to control the output shaft position, delivered more and more incorrect values so the servos began to shiver instead of holding a position. Interestingly Mk.1 evolved a locomotion strategy which used this shiver.
Mk.2 suffered damage of the joints. The joints were made of thin brass rods and apparently couldn't take lots of bending so some of the rods broke.
Plot of the fitness values of experiment 83: You can see the break-in starting at fitness test 3250. At this point joint 0 broke. After 200 fitness tests the system adapted to this situation and evolved new, even better control programs.
Before the Mk.2 robot I built the Mk.1 robot and used it with the whole system as a proof of concept. The Mk.1 is much simpler than the Mk.1, one can derive a model and a working control program easily.
The Mk.1 robot only has three degrees of freedom and has a straight design made of a LEGO Technic structure. It has two axles without an actuation. Every axle has a servo driven brake which can blockade the axle. The third servo bends the robot around the fulcrum in the front so that the front axle moves some centimeters to fore or back.
An effective control program will create a caterpillar like look. On this old web page you'll find some introductory words (in german) about Mk.1 and four little video clips showing Mk.1 while climbing a ramp.
The Mk.1 robot (with distance measuring system and servo controller removed). On the left image you can see the front axle and its brake (closed). The image in the middle shows the elongated robot and the back axle's brake openend. The right image shows the contracted robot with the back axle's brake closed.
Karl Hedman et.al.: Sensing and Direction in Locomotion Learning with a Random Morphology Robot
Henrik Hautop Lung: Co-Evolving Control and Morphology with LEGO Robots
Herve Morin, Le Monde: L'évolution des espèces peut aussi s'appliquer aux robots (€); contains a drawing of Mk.2
[Home] [ Products / Projects ] [Documents] [Links]
Impressum/contact; Haftungsausschluss/non-warranty