This repository provides an implementation of the paper:
This environment builds upon the legged gym environment 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 upon the rsl_rl repository, also by Nikita Rudin, Robotic Systems Lab, ETH Zurich. All redistributed code retains its original license.
Our initial release provides the following features:
CODE STRUCTURE The main environment for simulating a legged robot is in legged_robot.py. The default configuration parameters including reward weightings are defined in legged_robot_config.py::Cfg.
There are three scripts in the scripts directory:
scripts
├── __init__.py
├── play.py
├── test.py
└── train.py
You can run the test.py
script to verify your environment setup. If it runs then you have installed the gym
environments correctly. To train an agent, run train.py
. To evaluate a pretrained agent, run play.py
. We provie a
pretrained agent checkpoint in the [./runs/](.
The recommended way to run the code is to use the docker image. We provide a Dockerfile. To build the docker image, use a Ubuntu 18.04 or Ubuntu 20.04 machine, and follow these steps:
IsaacGym_Preview_3_Package.tar.gz
from the NVIDIA website (https://developer.nvidia.com/isaac-gym). You'll
have to create a free NVIDIA account. After downloading the file, place it in this repo
at: docker/rsc/IsaacGym_Preview_3_Package.tar.gz
.cd docker && make build
cd docker && make run
bash docker/visualize_access.bash
If you'd prefer to run our code in your own python environment, you can follow the instructions below:
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
Download and install Isaac Gym Preview 3 from https://developer.nvidia.com/isaac-gym
unzip the file via:
tar -xf IsaacGym_Preview_3_Package.tar.gz
now install the python package
cd isaacgym_lib/python && pip install -e .
Verify the installation by try running an example
python examples/1080_balls_of_solitude.py
For troubleshooting check docs isaacgym/docs/index.html
mini_gym
packageIn this repository, run pip install -e .
If everything is installed correctly, you should be able to run the test script with:
python scripts/test.py
The script should print Simulating step {i}
.
The GUI is off by default. To turn it on, set headless=False
in test.py
's main function call.
To train the mini-cheetah robot to run and spin fast, run:
python scripts/train.py
After initializing the simulator, the script will print out a list of metrics every ten training iterations.
Training with the default configuration requires about 12GB of GPU memory. If you have less memory available, you can
still train by reducing the number of parallel environments used in simulation (the default is Cfg.env.num_envs = 4000
).
To visualize training progress, first start the ml_dash frontend app:
python -m ml_dash.app
then start the ml_dash backend server by running this command in the parent directory of the runs
folder:
python -m ml_dash.server .
Finally, use a web browser to go to the app IP (defaults to localhost:3001
)
and create a new profile with the credentials:
Username: runs
API: [server IP] (defaults to localhost:8081
)
Access Token: [blank]
Now, clicking on the profile should yield a
To evaluate the most recently trained model, run:
python scripts/play.py
The robot is commanded to run forward at 5m/s for 5 seconds. After completing the simulation, the script plots the robot's velocity and joint angles. To modify the commanded velocity, you can edit line 109 of the script.
The GUI is on by default.
If it does not appear, and you're working in docker, make sure you haven't forgotten to run bash docker/visualize_access.bash
.
For questions about the code, please create an issue in the repository.