Affiliations:
- Inria Nancy Grand-Est, France
- CNRS, France
- University of Lorraine, France
If you use our code for a scientific paper, please cite:
Chatzilygeroudis, K., Vassiliades, V., & Mouret, J.-B. (2018). Reset-free Trial-and-Error Learning for Robot Damage Recovery. Robotics and Autonomous Systems.
In BibTex:
@article{chatzilygeroudis2018resetfree,
title = {{Reset-free Trial-and-Error Learning for Robot Damage Recovery}},
journal = {Robotics and Autonomous Systems},
year = {2018},
volume = {100},
pages = {236 - 250},
issn = {0921-8890},
doi = {https://doi.org/10.1016/j.robot.2017.11.010},
url = {https://www.sciencedirect.com/science/article/pii/S0921889017302440},
author = {Chatzilygeroudis, Konstantinos and Vassiliades, Vassilis and Mouret, Jean-Baptiste},
organization={Elsevier}
}
- Ubuntu 14.04, 15.04 (and it should run on 16.04)
- DART simulator, http://dartsim.github.io/ (release-6.1 branch)
- Eigen 3, http://eigen.tuxfamily.org/
- Boost
- ROS (Optional - only for the physical robot)
mcts
contains the implementation of a generic and lightweight C++14 library for Monte Carlo Tree Search algorithms
hexapod_common
contains code for the low-level controller of the hexapod (both in simulation and real robot) and a URDF model of the hexapod needed for ROS/DART.hexapod_ros
contains code for controlling our custom physical hexapodhexapod_simu
contains a DART integration for our hexapod [requires hexapod_common]limbo
contains the limbo workspace for Reset-free Trial-and-Error algorithm. The actual code is in folderlimbo/exp/rte-hexa/
sferes
contains the sferes workspace for generating an action repertoire with the MAP-Elites algorithm. The actual code is in foldersferes/exp/map_elites_hexapod/
libfastsim
contains code for simulating simple velocity controlled differential drive robots.limbo
contains the limbo workspace for Reset-free Trial-and-Error algorithm. The actual code is in folderlimbo/exp/rte_mobile/
sferes
contains the sferes workspace for generating an action repertoire with the MAP-Elites algorithm. The actual code is in foldersferes/exp/map_elites_mobile/
- Install dependencies
export RESIBOTS_DIR=/path/to/workspace
cd path/to/hexapod_common/hexapod_models
./waf configure --prefix=$RESIBOTS_DIR
./waf install
cd path/to/hexapod_common/hexapod_controller
./waf configure --prefix=$RESIBOTS_DIR
./waf install
cd path/to/hexapod_simu/hexapod_dart/
./waf configure --prefix=$RESIBOTS_DIR
./waf install
cd path/to/mcts
./waf configure --prefix=$RESIBOTS_DIR
./waf install
- Install dependencies
export RESIBOTS_DIR=/path/to/workspace
cd path/to/libfastsim
./waf configure --prefix=$RESIBOTS_DIR
./waf install
cd path/to/mcts
./waf configure --prefix=$RESIBOTS_DIR
./waf install
cd path/to/sferes
(rte_hexa/sferes
for the hexapod andrte_mobile/sferes
for the mobile robot)./waf configure --exp name_of_experiment
./waf --exp name_of_experiment
name_of_experiment
can be eithermap_elites_hexapod
ormap_elites_mobile
cd path/to/sferes
(rte_hexa/sferes
for the hexapod)./build/exp/map_elites_hexapod/hexa_position_text_position_only
- This will generate an action repertoire in
path/to/sferes/build/exp/map_elites_hexapod
folder (*.bin files). Typical runs take 1-2 days in a cluster.
cd path/to/sferes
(rte_mobile/sferes
for the mobile robot)./build/exp/map_elites_mobile/mobile_text
- This will generate an action repertoire in
path/to/sferes/build/exp/map_elites_mobile
folder (*.bin files). Typical runs take a few hours in a cluster.
cd path/to/limbo
./waf configure --exp name_of_experiment
./waf --exp name_of_experiment
name_of_experiment
can be eitherrte-hexa
orrte_mobile
- If you have the physical hexapod append
-- robot
to both commands (requires ROS packages, e.g.hexapod_ros
andtf
)
cd path/to/limbo
(rte_hexa/limbo
for the hexapod)./build/exp/rte-hexa/rte_hexa_graphic_low_dim -m path/to/action_repertoire.bin -l exp/rte-hexa/test_maps/map_{0,1,2,3}.txt -i 5000 -k 0.0 -d 0.03 -p 4 -c 150 -r [list of leg indices to remove] -s [list of leg indices to shorten]
- We provide 2 sample action repertoires (
action_repertoire_1.bin
,action_repertoire_2.bin
inpath/to/limbo
folder)
cd path/to/limbo
(rte_mobile/limbo
for the mobile robot)./build/exp/rte_mobile/rte_mobile_graphic -m path/to/action_repertoire.bin -l exp/rte_mobile/map_small.txt -p 4 -c 150 -a 0.5 -b 0.6 -i 5000 -v 30 -d 1
- We provide the action repertoires (
action_repertoire.bin
inpath/to/limbo
folder)
This version of code does not include the rough terrain experiments and the TEXPLORE baseline for the hexapod robot. Do not hesitate to contact the authors for details and/or this missing code.
Please contact Konstantinos Chatzilygeroudis ([email protected]) for any inquires or difficulties.