MooJoCo provides a unified framework for implementing and interfacing with MuJoCo and MuJoCo-XLA simulation environments. The main goal of this framework is to unify the development and interfaces of environments implemented in native MuJoCo (MJC) and MuJoCo-XLA (MJX).
MJCFMorphology and MJCFArena
- Both are parameterized/reconfigurable MJCF (MuJoCo-XML) generators that serve as input to an environment.
- MJCFMorphology defines the robot morphology.
- MJCFMorphologies are parameterized using the Framework for Parameterized Robot Specifications (FPRS).
- MJCFMorphologies follow a modular design, dividing the robot into distinct parts.
- MJCFArena defines the arena in which the robot is places (i.e. all non-morphological structures).
- MJCFArena are reconfigurable via a
ArenaConfiguration- reconfigurable via a configuration requirements.txt
- MJCFArena are reconfigurable via a
Unified MJC and MJX environment interface
- Reconfigurable through an environment configuration
- Functional programming
- MJX requires the functional programming paradigm. To unify MJC and MJX, we thus apply this stronger coding constraint to the MJC side as well.
- Simply said: functions are pure, and should not have side effects.
- Environments expect states and return states.
- Gymnasium-like interface
- Environments provide an observation and action space (automatically)
- Outside code interacts with the environment using the typical
step,reset,renderandclosefunctions. - Main difference with the original gymnasium interface: here the environment returns and expects states, which encapsulates the original observations, rewards, info, etc. in a datastructure, together with the underlying physics state.
- Differences between MJCEnv (i.e. a native MuJoCo environment) and MJXEnv (i.e. an MJX environment):
- development: MJXEnv's should be implemented in JAX, MJCEnv's do not necessarily require JAX.
- usage: MJXEnvState contains JAX arrays (and the additional mjx.Model and mjx.Data structures), the MJCEnvState uses numpy arrays.
- Observations are implemented using Observables; these define retriever functions that extract the observation based on the state datastructure and provide an easy way to implement observations.
- DualMuJocoEnvironment provides the unification of MJC and MJX, and allows conditional environment creation based on a backend string.
- Both MJC and MJX support human-mode and rgb_array rendering modes.
- Note: MJX rendering is slow due to the offloading of datastructures of the GPU
Examples
For practical applications and demonstrations of MooJoCo, please refer to the Bio-inspired Robotics Testbed, which employs this framework extensively.
Installation
pip install moojoco
Metadata
Release files for moojoco 1.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| moojoco-1.1.7.tar.gz | 21.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| moojoco-1.1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.9 kB
Release files / moojoco-1.1.7.tar.gz
| Download URL | moojoco-1.1.7.tar.gz |
|---|---|
| Size | 21.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9a4a5384c2021e47ad111d1c226a6bcc4c133797df49493888094ae52e9058f2
|
|
BLAKE2b-256 checksum How to use checksums |
a1f7f2a6a9e628e29e44b6eab663a811e49c31614f2f4471fd499d6d6f3c743f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Release files / moojoco-1.1.7-py3-none-any.whl
| Download URL | moojoco-1.1.7-py3-none-any.whl |
|---|---|
| Size | 24.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8f8bb333fc12e94d527ce9f4365e485af8bdb93a3f5257be568fcf8e1910a43f
|
|
BLAKE2b-256 checksum How to use checksums |
2a7241f8cee40c465fa6f73ef984a88ece724b3e8731eb3efdaf483863b54422
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|