Skip to content

Imitation learning benchmark focusing on complex locomotion tasks using MuJoCo.

License

Notifications You must be signed in to change notification settings

Mr-tooth/loco-mujoco

Repository files navigation

LocoMuJoCo

LocoMujoco7_small

LocoMuJoCo is an imitation learning benchmark specifically targeted towards locomotion. It encompasses a diverse set of environments, including quadrupeds, bipeds, and musculoskeletal human models, each accompanied by comprehensive datasets, such as real noisy motion capture data, ground truth expert data, and ground truth sub-optimal data, enabling evaluation across a spectrum of difficulty levels.

LocoMuJoCo also allows you to specify your own reward function to use this benchmark for pure reinforcement learning! Checkout the example below!

Key Advantages

✅ Easy to use with Gymnasium or Mushroom-RL interface
✅ Many environments including humanoids and quadrupeds
✅ Diverse set of datasets --> e.g., noisy motion capture or ground truth datasets with actions
✅ Wide spectrum spectrum of difficulty levels
✅ Built-in domain randomization
✅ Many baseline algorithms for quick benchmarking


Installation

To install this repository, clone it and then run:

cd loco-mujoco
pip install -e . 

Now you have to download and install the datasets by running

python download_datasets.py

If you also want to run the baselines, you have to install our imitation learning library imitation_lib. You find example files for training the baselines for any LocoMuJoCo task here.

To verify that everything is installed correctly, run the examples such as:

python examples/simple_mushroom_env/example_unitree_a1.py

To replay a dataset run:

python examples/replay_datasets/replay_Unitree.py

Environments & Tasks

You want a quick overview of all environments, tasks and datasets available? Here you can find it.

LocoMujoco7_2_compressed

And stay tuned! There are many more to come ...


Examples

LocoMuJoCo is very easy to use. Just choose and create the environment, and generate the dataset belonging to this task and you are ready to go!

import numpy as np
import loco_mujoco
import gymnasium as gym


env = gym.make("LocoMujoco", env_name="HumanoidTorque.run")
dataset = env.create_dataset()

You want to use LocoMuJoCo for pure reinforcement learning? No problem! Just define your custom reward function and pass it to the environment!

import numpy as np
import loco_mujoco
import gymnasium as gym
import numpy as np


def my_reward_function(state, action, next_state):
    return -np.mean(action)


env = gym.make("LocoMujoco", env_name="HumanoidTorque.run", reward_type="custom",
               reward_params=dict(reward_callback=my_reward_function))

LocoMuJoCo natively supports MushroomRL:

import numpy as np
from loco_mujoco import LocoEnv

env = LocoEnv.make("HumanoidTorque.run")
dataset = env.create_dataset()

You can find many more examples here


Citation

@inproceedings{alhafez2023b,
title={LocoMuJoCo: A Comprehensive Imitation Learning Benchmark for Locomotion},
author={Firas Al-Hafez and Guoping Zhao and Jan Peters and Davide Tateo},
booktitle={6th Robot Learning Workshop, NeurIPS},
year={2023}
}

Credits

Both Unitree models were taken from the MuJoCo menagerie

About

Imitation learning benchmark focusing on complex locomotion tasks using MuJoCo.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%