Musculoskeletal Models in MuJoCo
See the codeMyoSim is the MuJoCo musculoskeletal model library used by MyoSuite. It provides anatomically detailed XML models of the human arm, leg, torso, and hand, plus a Python package for loading and composing them.
| Model | DoF | Muscles | Preview | Version |
|---|---|---|---|---|
| MyoLeg | 29 | 80 | stable | |
| MyoArm | 38 | 63 | stable | |
| MyoTorso (MyoBack) | 18 | 210 | ![]() | stable |
| MyoHand | 23 | 39 | ![]() | stable |
| MyoFullBody | 123 | 416 | stable | |
| MyoLeg26 | 18 | 26 | beta | |
| MyoFinger | 4 | 5 | ![]() | legacy |
| MyoElbow | 2 | 6 | ![]() | legacy |
Legacy models ship in the pip package under myo_sim/models/legacy/ and load via registry names such as myoelbow, myofinger, and osl. They are maintained for backwards compatibility only — see myo_sim/models/legacy/README.md.
The following registered models can be compiled with myo_sim.build.compose.build_model("<name>"):
myotorso — torso scaffold with torso muscles.myotorso_abdomen — simple abdomen scaffold.myotorso_arm_r — torso with the right arm only.myotorso_arms — torso with the right arm plus a mirrored-left arm.myoarm_r — passive anatomical torso scaffold with the right arm.myoarms — passive anatomical torso scaffold with mirrored arms.myohand_r — passive anatomical torso scaffold with the right hand derived from the pruned right arm.myohands — passive anatomical torso scaffold with right and mirrored-left hands derived from pruned arms.myolegs — passive anatomical torso scaffold with legs.myolegs26 — passive anatomical torso scaffold with reduced-muscle legs and simplified kinematic chain.myolegs_abdomen — simple abdomen scaffold with legs.myofullbody — full body with torso, mirrored arms, and legs.To generate compiled MuJoCo XML files for the primary composed assemblies, run:
uv run python -m myo_sim.build.compose --generate
This writes loadable XML files for myoarms, myotorso, myolegs, myolegs26, and myofullbody under myo_sim/models/. Treat these as generated snapshots for GUI viewing and compatibility; for source edits, update the component XML files and myo_sim/build/compose.py, then regenerate. Those downstream XMLs are not actively maintained.
pip install myo-sim
import mujoco
import myo_sim
# Load a model by registry name
model, data = myo_sim.load("myolegs")
print(f"Joints: {model.njnt}, Muscles: {model.nu}")
# Or compose another registered model
model, data = myo_sim.load("myotorso")
# Legacy models (backwards compatibility)
model, data = myo_sim.load("myoelbow")
# Compose a full-body MjSpec model
from myo_sim.build.compose import build_model
model = build_model("myofullbody")
print(f"Full body — joints: {model.njnt}, muscles: {model.nu}")
git clone https://github.com/MyoHub/myo_sim.git
cd myo_sim
uv sync --dev
uv run pytest tests/ -x -n auto --ignore=tests/test_equivalence.py
See CONTRIBUTING.md for the full contributor guide.
If you find this repository useful in your research, please cite the following works:
@misc{MyoSuite2022,
author = {Caggiano, Vittorio and Wang, Huawei and Durandau, Guillaume
and Sartori, Massimo and Kumar, Vikash},
title = {{MyoSuite}: A contact-rich simulation suite for musculoskeletal motor control},
year = {2022},
doi = {10.48550/ARXIV.2205.13600},
url = {https://arxiv.org/abs/2205.13600},
}
@article{Li2026MuscleMimic,
title={Towards Embodied AI with MuscleMimic: Unlocking full-body musculoskeletal motor learning at scale},
author={Li, Chengkun and Wang, Cheryl and Ziliotto, Bianca and Simos, Merkourios and Kovecses, Jozsef and Durandau, Guillaume and Mathis, Alexander},
journal={arXiv preprint arXiv:2603.25544},
year={2026}
}
Apache 2.0 — see LICENSE.
83 followers · starred Nov 2024
10 followers · starred Mar 2025
Musculoskeletal Models in MuJoCo
See the codeMyoSim is the MuJoCo musculoskeletal model library used by MyoSuite. It provides anatomically detailed XML models of the human arm, leg, torso, and hand, plus a Python package for loading and composing them.
| Model | DoF | Muscles | Preview | Version |
|---|---|---|---|---|
| MyoLeg | 29 | 80 | stable | |
| MyoArm | 38 | 63 | stable | |
| MyoTorso (MyoBack) | 18 | 210 | ![]() | stable |
| MyoHand | 23 | 39 | ![]() | stable |
| MyoFullBody | 123 | 416 | stable | |
| MyoLeg26 | 18 | 26 | beta | |
| MyoFinger | 4 | 5 | ![]() | legacy |
| MyoElbow | 2 | 6 | ![]() | legacy |
Legacy models ship in the pip package under myo_sim/models/legacy/ and load via registry names such as myoelbow, myofinger, and osl. They are maintained for backwards compatibility only — see myo_sim/models/legacy/README.md.
The following registered models can be compiled with myo_sim.build.compose.build_model("<name>"):
myotorso — torso scaffold with torso muscles.myotorso_abdomen — simple abdomen scaffold.myotorso_arm_r — torso with the right arm only.myotorso_arms — torso with the right arm plus a mirrored-left arm.myoarm_r — passive anatomical torso scaffold with the right arm.myoarms — passive anatomical torso scaffold with mirrored arms.myohand_r — passive anatomical torso scaffold with the right hand derived from the pruned right arm.myohands — passive anatomical torso scaffold with right and mirrored-left hands derived from pruned arms.myolegs — passive anatomical torso scaffold with legs.myolegs26 — passive anatomical torso scaffold with reduced-muscle legs and simplified kinematic chain.myolegs_abdomen — simple abdomen scaffold with legs.myofullbody — full body with torso, mirrored arms, and legs.To generate compiled MuJoCo XML files for the primary composed assemblies, run:
uv run python -m myo_sim.build.compose --generate
This writes loadable XML files for myoarms, myotorso, myolegs, myolegs26, and myofullbody under myo_sim/models/. Treat these as generated snapshots for GUI viewing and compatibility; for source edits, update the component XML files and myo_sim/build/compose.py, then regenerate. Those downstream XMLs are not actively maintained.
pip install myo-sim
import mujoco
import myo_sim
# Load a model by registry name
model, data = myo_sim.load("myolegs")
print(f"Joints: {model.njnt}, Muscles: {model.nu}")
# Or compose another registered model
model, data = myo_sim.load("myotorso")
# Legacy models (backwards compatibility)
model, data = myo_sim.load("myoelbow")
# Compose a full-body MjSpec model
from myo_sim.build.compose import build_model
model = build_model("myofullbody")
print(f"Full body — joints: {model.njnt}, muscles: {model.nu}")
git clone https://github.com/MyoHub/myo_sim.git
cd myo_sim
uv sync --dev
uv run pytest tests/ -x -n auto --ignore=tests/test_equivalence.py
See CONTRIBUTING.md for the full contributor guide.
If you find this repository useful in your research, please cite the following works:
@misc{MyoSuite2022,
author = {Caggiano, Vittorio and Wang, Huawei and Durandau, Guillaume
and Sartori, Massimo and Kumar, Vikash},
title = {{MyoSuite}: A contact-rich simulation suite for musculoskeletal motor control},
year = {2022},
doi = {10.48550/ARXIV.2205.13600},
url = {https://arxiv.org/abs/2205.13600},
}
@article{Li2026MuscleMimic,
title={Towards Embodied AI with MuscleMimic: Unlocking full-body musculoskeletal motor learning at scale},
author={Li, Chengkun and Wang, Cheryl and Ziliotto, Bianca and Simos, Merkourios and Kovecses, Jozsef and Durandau, Guillaume and Mathis, Alexander},
journal={arXiv preprint arXiv:2603.25544},
year={2026}
}
Apache 2.0 — see LICENSE.
83 followers · starred Nov 2024
10 followers · starred Mar 2025