Goal

  • To gain a deeper understanding about how to evolve controllers and morphologies in RoboGen.

Getting Started

Similar to the previous exercises, you will be using RoboGen Online.  To get started, visit http://robogen.org/app

Once again, you should click on the “Advanced” tab to be able to modify files and start custom evolutionary experiments or visualize your robots.

Tip: if the software is having some problem, try refreshing the page.

Important: Remember, all data is being saved to a virtual filesystem within your web browser. If you want to save anything for later use, be sure to download it to your home directory!

Exercise 1

From the advanced tab, click “Start an evolution”

Enter

examples/myEvolConf.txt

as the Configuration file,

simpleExperiment

as the Output directory, and a number of your choice as the Seed for the RNG

Take note of these parameters that define an experiment: the configuration file specifies an evolution configuration file. Note: This is different from the simulator configuration file described above!

The Output directory specifies where to write results to. Unless you click “Overwrite” the evolver will not overwrite results! So, if you run multiple experiments with the same output directory it will start creating directories: results/simpleExperiment _1, results/simpleExperiment _2, etc. Keep this in mind when analyzing results. Make sure you are not looking in the wrong place.

Additionally, remember that if you want to save results for future use, be sure to download them to your home directory.

Finally, the seed for the random number generator is important. If you are replicating an evolutionary experiment several times, you should be sure to specify different seeds for each replicate (this is important for making statistical comparisons!).

The evolution configuration file specifies parameters related to the evolutionary algorithm, as you saw last time, and also includes references to the simulator configuration file that will be used for the fitness evaluations, and to a robot file to evolve from (if applicable). The possible options for this file are documented: http://robogen.org/docs/evolution-configuration/#Evolution_client_settings

evolutionaryAlgorithm – this lets you switch between a basic evolutionary algorithm (Basic) or an indirect encoding known as HyperNEAT, which you will learn about later in the course. For this example we use HyperNEAT so that we can quickly evolve good gaits for our robot. The neatParamsFile lets you modify some internal parameters for HyperNEAT, but we will not touch this file now.

Exercise 2

Try changing properties of the evolution or the robot and running additional evolutionary experiments. Some suggestions:

Change the evolutionaryAlgorithm from HyperNEAT to Basic, and see how the gaits you evolve compare when using a direct encoding vs. the indirect HyperNEAT encoding (you will learn more about this later in the course)
Remove the Oscillator lines from your robot description file. This will revert the ANN to use standard sigmoid neurons. How do standard neurons compare to oscillators on the “chasing” task? Why would we want to use a standard ANN instead of oscillators on other tasks?

Exercise 3

Now, you will explore the basics of evolving morphologies:
Look at the examples/myEvolConfFull.txt, this shows an example evolutionary configuration for evolving brains + bodies (note the line evolutionMode=full). Your population will start from a random collection of morphologies using the specified allowed parts

numInitialParts=MIN:MAX defines the possible sizes of these initial morphologies
The addBodyPart command in your evolutionary configuration file defines what body parts are allowed to be included

In the example, this is set to All, so all possible body parts are allowed to be included

Think about why including all body parts may not always be the best idea
Change this to specify just particular body parts (on separate lines), this can take either the Character Code, or name of the Body Part. For example:

addBodyPart=FixedBrick
addBodyPart=ActiveHinge
addBodyPart=PassiveHinge

Try evolving some basic morphologies! We recommend starting with a small number of initial components (say 4 or 5), and only allowing a small subset of components at first.
Familiarize yourself with the other parameters controlling the mutation operators for morphological evolution

http://robogen.org/docs/evolution-configuration/#Evolution_client_settings

For example try adjusting the probabilities of adding body parts, swapping subtrees, modifying parameters, etc.

Be aware: getting good results with full evolution may take some time.

You may need to use larger population sizes, experiment with the replacement strategy and tournament-size and run for many generations.
Today we want to make sure you know how to use the software so you can begin working on your projects.
You should begin carrying on experiments outside of class time.

If you have questions, ask your instructor or the community.

 


Previous Exercise: Configuring the Simulator