Skip to content
* Limbo experiment * Intelligent Trial & Error Algorithm for robot adaption
C++ Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Intelligent Trial & Error (Limbo experiment)

ITE code for the experiments published in Cully et al. (2015), Nature.

Full reference: Cully, Antoine, Jeff Clune, Danesh Tarapore, and Jean-Baptiste Mouret. "Robots that can adapt like animals." Nature 521, no. 7553 (2015): 503-507.

Video (click on it to play):

Robots that can adapt like animals

Other parts of the experiments published in the paper:

  • limbo: A lightweight framework for Bayesian and model-based optimisation of black-box functions
  • Sferes2: A high-performance, multi-core, lightweight, generic C++98 framework for evolutionary computation.
  • map_elites_hexapod: MAP-Elites code for the hexapod


  • Original author : Antoine Cully
  • Other contributions: Jean-Baptiste Mouret, Konstantinos Chatzilygeroudis

How to compile


  • robdyn: Dynamic simulator
    • Get the code: git clone
    • Configure for compilation/installation: ./waf configure
    • Compile with ./waf
    • Install robdyn on your computer: sudo ./waf install
    • For more advanced options, look at robdyn's repo.
  • limbo: A lightweight framework for Bayesian and model-based optimisation of black-box functions
    • Get the code: git clone
    • For more advanced options, look at limbo's repo.
  • ROS (optional):
    • If you want to run the experiment on the real robot, you need to have ROS installed. Please check the official instructions to download and install ROS.
  • hexa_control (optional):
    • If you want to run the experiment on the real robot, you need to have the hexa_control ROS package to control the robot. See hexa_control's repo for instructions.


  • Make sure you have all the dependencies installed/downloaded.
  • Go to your limbo root directory
  • Configure for compilation: ./waf configure
  • Compile limbo with: ./waf
  • Create an experiment folder (if there's none) and cd to it: mkdir exp && cd exp
  • Clone ITE: git clone
  • Go back to your limbo root dir
  • Compile the ITE experiment: ./waf --exp ITE
    • You need to add --robot true if you want to run ITE on the real robot
    • You can add --disable-graphics true if you want to not build the graphic version (requires OSG)

How to execute an experiment

Nature version

./build/exp/ITE/hexa_bomean_variant path_to_archive [matern_kernel_l_value] [leg_indices]
  • Parameters:
    • [] means that the parameter is optional
    • the order must be followed
    • hexa_bomean_variant - there are 2 variants: hexa_bomean_robot (this exists only if you have compiled with --robot true) and hexa_bomean_graphic
    • path_to_archive - path for the MAP Elites archive to use
      • There are some available archives in the archives folder
    • matern_kernel_l_value - l value for the matern kernel (optional - 0.4 is the default)
    • leg_indices - leg_indices should not be more than 5 in number and in [0-5] range - this parameter is useful only when simulating
    • Example: ./build/exp/ITE/hexa_bomean_graphic ./exp/ite/archives/archive.dat 0.5 1
      • This will run a simulated robot using the "./exp/ite/archives/archive.dat", setting the l value to 0.5 and removing leg 1 from the robot.

Generated MAP Elites archives are located in the archives directory.


This work has been funded by the ANR Creadapt project (ANR-12-JS03-0009) and the European Research Council (ERC) under the European Union’s Horizon 2020 research and innovation programme (grant agreement number 637972 - ResiBots).



You can’t perform that action at this time.