EvoRobSim

From Robin

(Difference between revisions)
Jump to: navigation, search
m (How to select and define your own objectives and define a (fitness) scenario)
 
(13 intermediate revisions not shown)
Line 6: Line 6:
* working dir: ../..
* working dir: ../..
* copy data/ into Debug/
* copy data/ into Debug/
 +
* launch vc_solution in debug mode
 +
* launch a debug instance of sim_worker_display (and possibly more sim_workers)
==== In experiment mode ====
==== In experiment mode ====
Line 11: Line 13:
* copy vc_solution.exe and sim_worker(_display).exe to root folder of project
* copy vc_solution.exe and sim_worker(_display).exe to root folder of project
* start vc_solution.exe yourname-evolution
* start vc_solution.exe yourname-evolution
-
* start and a number of sim_worker.exe and a sim_worker_display.exe for visualization. Optionally start sim_slave.exe which will launch sim_workers.
+
* start a number of sim_worker.exe and a sim_worker_display.exe for visualization. Optionally start sim_slave.exe which will launch sim_workers.
==== Using a network of computers ====
==== Using a network of computers ====
-
* ...
+
After compiling the solution:
 +
* On the server, run vc_solution.exe with the evolution manager name as first parameter
 +
* On every client, run sim_slave.exe with the server name/address as first parameter
 +
* Press any key on the server when ready to start the runs
== How to implement your own evolutionary setup and robot ==
== How to implement your own evolutionary setup and robot ==
Line 20: Line 25:
[[Fil:Server uml.png]]
[[Fil:Server uml.png]]
 +
{{note|This part needs some update on VanillaEvolution}}
Customize means to make your own subclass which contains your specific functionality
Customize means to make your own subclass which contains your specific functionality
* Make a custom EvolutionManager with evolutionary setup (the run() method can load a config file which specifies the objectives)
* Make a custom EvolutionManager with evolutionary setup (the run() method can load a config file which specifies the objectives)
Line 31: Line 37:
*** my_blueprint.h - contains the MyBlueprint class description
*** my_blueprint.h - contains the MyBlueprint class description
*** my_blueprint.cpp - contains the general implementation of MyBlueprint including serialization
*** my_blueprint.cpp - contains the general implementation of MyBlueprint including serialization
-
*** my_machine.cpp - contains the simulator-specific implementation of MyBlueprint, MyBlueprint::generateMachine - for the sim_worker / sim_worker_display / bbp_viewer projects
+
*** my_blueprint_machine.cpp - contains the simulator-specific implementation of MyBlueprint, MyBlueprint::generateMachine - for the sim_worker / sim_worker_display / bbp_viewer projects
-
*** my_nomachine.cpp - contains a dummy implementation of MyBlueprint::generateMachine - for the vc_solution project  
+
*** my_blueprint_nomachine.cpp - contains a dummy implementation of MyBlueprint::generateMachine - for the vc_solution project  
* Make a custom RobotGenes which contains a description of the genes and how to mutate them
* Make a custom RobotGenes which contains a description of the genes and how to mutate them
-
=== How to select and define your own objectives and define a (fitness) scenario ===
+
=== Evaluation client overview ===
 +
[[Fil:Scenario_evaluation.png]]
 +
 
 +
=== How to select and define your own objectives ===
*Make a custom SimEvaluator which is an evaluator class containing the functions onInclusion and onSimulationStep.
*Make a custom SimEvaluator which is an evaluator class containing the functions onInclusion and onSimulationStep.
** Register the class in the rtti system with a name starting with eval-
** Register the class in the rtti system with a name starting with eval-
** Implement the needed function and write the fitness value to _score. Return true to continue simulation, and false to stop simulating the current solution.
** Implement the needed function and write the fitness value to _score. Return true to continue simulation, and false to stop simulating the current solution.
* Include the new evaluator by adding it to your config file
* Include the new evaluator by adding it to your config file
 +
 +
=== How to define and use a scenario (e.g. some objects on your infinite plane) ===
 +
* ...
== How to use your results ==
== How to use your results ==
Line 61: Line 73:
* overføre resultat til virkelig robot
* overføre resultat til virkelig robot
* mulig å ha ett frittstående / fryst eksempel som kjører evolusjon (og hvordan kjør) og gjør det mulig å overføre?
* mulig å ha ett frittstående / fryst eksempel som kjører evolusjon (og hvordan kjør) og gjør det mulig å overføre?
-
* Nettverkskjøring
+
* Egne fitnessfunksjoner / scenario
-
* Egne fitnessfunksjoner
+
* Hvordan legge over .stl filer
* Hvordan legge over .stl filer
 +
* Hvordan dumpe bildesekvens fra viewer som man kan lage video fra

Current revision as of 13:25, 10 October 2014

Contents

Evolutionary run

How to start an evolutionary run

In debug mode

  • set vc_solution as startup project
  • command arguments: hox-evolution debug (or yourname-evolution)
  • working dir: ../..
  • copy data/ into Debug/
  • launch vc_solution in debug mode
  • launch a debug instance of sim_worker_display (and possibly more sim_workers)

In experiment mode

  • make file seeds.txt and fill with random numbers from random.org, format one column
  • copy vc_solution.exe and sim_worker(_display).exe to root folder of project
  • start vc_solution.exe yourname-evolution
  • start a number of sim_worker.exe and a sim_worker_display.exe for visualization. Optionally start sim_slave.exe which will launch sim_workers.

Using a network of computers

After compiling the solution:

  • On the server, run vc_solution.exe with the evolution manager name as first parameter
  • On every client, run sim_slave.exe with the server name/address as first parameter
  • Press any key on the server when ready to start the runs

How to implement your own evolutionary setup and robot

How to implement an evolutionary control/harness/run

Fil:Server uml.png

This part needs some update on VanillaEvolution

Customize means to make your own subclass which contains your specific functionality

  • Make a custom EvolutionManager with evolutionary setup (the run() method can load a config file which specifies the objectives)
  • Possibly make your own evaluation critera by customizing SimEvaluator
  • Customize EvorobScenario for setting up the simulation environment, like obstacles etc.

How to define your own simulated robot

  • Make a custom Blueprint which is a simulator/hardware-independent description of the robot
    • Implement a MyBlueprint::generateMachine method which generates a custom Machine (a simulator description of the robot)
    • File structure:
      • my_blueprint.h - contains the MyBlueprint class description
      • my_blueprint.cpp - contains the general implementation of MyBlueprint including serialization
      • my_blueprint_machine.cpp - contains the simulator-specific implementation of MyBlueprint, MyBlueprint::generateMachine - for the sim_worker / sim_worker_display / bbp_viewer projects
      • my_blueprint_nomachine.cpp - contains a dummy implementation of MyBlueprint::generateMachine - for the vc_solution project
  • Make a custom RobotGenes which contains a description of the genes and how to mutate them

Evaluation client overview

Fil:Scenario_evaluation.png

How to select and define your own objectives

  • Make a custom SimEvaluator which is an evaluator class containing the functions onInclusion and onSimulationStep.
    • Register the class in the rtti system with a name starting with eval-
    • Implement the needed function and write the fitness value to _score. Return true to continue simulation, and false to stop simulating the current solution.
  • Include the new evaluator by adding it to your config file

How to define and use a scenario (e.g. some objects on your infinite plane)

  • ...

How to use your results

How to see the results in the bbp_viewer

    • Make sure you have code for dumping the bbp files in your extension of EvolutionManager
    • Include the source code for your robot and blueprint in bbp_viewer
    • Launch bbp_viewer.exe your_blueprint.bbp

How to plot some stats from the runs

A simple example for matlab is included below:

   files = dir('*.txt');
   fitness = zeros(length(files),1);
   for i = 1:length(files)
       files(i).content = load(files(i).name);
       fitness(i) = mean(files(i).content(:,1));
   end
   plot(fitness);

remaining topics

  • overføre resultat til virkelig robot
  • mulig å ha ett frittstående / fryst eksempel som kjører evolusjon (og hvordan kjør) og gjør det mulig å overføre?
  • Egne fitnessfunksjoner / scenario
  • Hvordan legge over .stl filer
  • Hvordan dumpe bildesekvens fra viewer som man kan lage video fra
Personal tools
Front page