This repository provides an implementation (Simulation code) of the CPG-RL framework in the following paper:
Viability Leads to the Emergence of Gait Transitions in Learning Agile Quadrupedal Locomotion on Challenging TerrainsMilad Shafiee , Guillaume Bellegarda and Auke Ijspeert
Nature Communications, vol. 15, no. 1, p. 3073, 2024.
Paper / Project page
@article{shafiee2024Viability,
title={Viability leads to the emergence of gait transitions in learning agile quadrupedal locomotion on challenging terrains},
author={Shafiee, Milad and Bellegarda, Guillaume and Ijspeert, Auke },
journal={Nature Communications},
volume={15},
number={1},
pages={3073},
year={2024},
publisher={Nature Publishing Group UK London}
}
We need GPU and Cuda installed for running the Isaac Gym simulator. To train in the default configuration, we recommend a GPU with at least 8GB memory. The code tested with GPU RTX-3070 (cuda-11.4) and GPU RTX-4090 (cuda-11.7). Installation of Nvidia drivers and Cuda may take couple of hours depending on the hardware. After having cuda installed and GPU ready, installation ideally will take less than 15 minutes:
💾 Create a new python virtual env with python 3.6, 3.7 or 3.8 (3.8 recommended)
virtualenv -p python3 DeepTransitionENVsource DeepTransitionENV/bin/activate
📄 Clone this repository and install dependencies:
-
pip install -r requirements.txt -
Install pytorch 1.10 with cuda-11.3 or (pytorch 1.11 and cuda-11.4) (tested with GPU RTX-3070 on Ubuntu 18.04 and Ubuntu 20.04)
pip3 install torch==1.10.0+cu113 torchvision==0.11.1+cu113 torchaudio==0.10.0+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
or alternatively, Install pytorch 1.13 with cuda-11.7 (tested with GPU RTX-4090 on Ubuntu 20.04)
pip install torch==1.13.0+cu117 torchvision==0.14.0+cu117 torchaudio==0.13.0 --extra-index-url https://download.pytorch.org/whl/cu117
🤸 Install Isaac Gym
- Download and install Isaac Gym Preview 3 Download
cd isaacgym/python && pip install -e .- Check installation by running an example:
cd examples && python 1080_balls_of_solitude.py
📈 Install rsl_rl (PPO)
cd rsl_rl && pip install -e .
🦿 Install legged_gym
cd legged_gym && pip install -e .
The training environment is defined by an env file (quadruped.py) and a config file (quadruped_config.py) that these classes use inheritance. quadruped_config.py includes body names, default_joint_positions and PD gains, reward weights,etc. You need to modify the reward weights in quadruped_config.py and train the policy to reproduce the result of the paper.
The config file contains two classes: one containing all the environment parameters (LeggedRobotCfg) and one for the training parameters (LeggedRobotCfgPPo).
Central Pattern Generator (CPG) is defined by CPG.py.
-
Isaac Gym requires an NVIDIA GPU. To train in the default configuration, we recommend a GPU with at least 8GB memory. The code can run on a smaller GPU if you decrease the number of parallel environments (
Cfg.env.num_envs) or reducing the precision of terrain meshes. Training will be slower with fewer environments. An example for training (training will take less than two hours with the suggest GPUs):python legged_gym/scripts/train.py --task=quadruped --max_iterations=3000 --num_envs=4096 -
To run on CPU add following arguments:
--sim_device=cpu,--rl_device=cpu(sim on CPU and rl on GPU is possible). Running on CPU is not encouraged and may lead to different results. -
To run without no rendering add
--headless. -
To improve performance, once the training starts (and if your are not running headless) make sure to press
vto stop the rendering. You can then enable it later to check the progress. -
The trained policy is saved in
issacgym_anymal/logs/<experiment_name>/<date_time>_<run_name>/model_<iteration>.pt. Where<experiment_name>and<run_name>are defined in the train config. -
The following command line arguments override the values set in the config files:
-
--taskTASK: Task name. -
--num_envsNUM_ENVS: Number of environments to create. -
--max_iterationsMAX_ITERATIONS: Maximum number of training iterations.
Play a pre-trained policy (It will take less than one minute):
-
python legged_gym/scripts/play.py --task=quadruped -
By default, the loaded policy is the last model of the last run of the experiment folder.
This environment builds on the amazing repository [legged gym environment](https://leggedrobotics.github.io/legged_gym/) by Nikita
Rudin, Robotic Systems Lab, ETH Zurich (Paper: https://arxiv.org/abs/2109.11978) and the Isaac Gym simulator from
NVIDIA (Paper: https://arxiv.org/abs/2108.10470). Training code builds on the [rsl_rl](https://github.com/leggedrobotics/rsl_rl)
repository, also by Nikita Rudin, Robotic Systems Lab, ETH Zurich.
All redistributed code retains its original [license](LICENSES/legged_gym/LICENSE).
