-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8e99fa8
commit 43fb85f
Showing
21 changed files
with
2,370 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
name: Lint | ||
|
||
on: | ||
push: | ||
branches: | ||
- main | ||
pull_request: | ||
branches: | ||
- main | ||
|
||
jobs: | ||
lint: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Format code with Black | ||
uses: psf/black@stable | ||
with: | ||
src: moojoco_env/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
# This workflow uses actions that are not certified by GitHub. | ||
# They are provided by a third-party and are governed by | ||
# separate terms of service, privacy policy, and support | ||
# documentation. | ||
|
||
# GitHub recommends pinning actions to a commit SHA. | ||
# To get a newer version, you will need to update the SHA. | ||
# You can also reference a tag or branch, but the action may change without warning. | ||
|
||
name: Upload Python Package | ||
|
||
on: | ||
release: | ||
types: [published] | ||
|
||
jobs: | ||
deploy: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v4 | ||
- name: Set up Python | ||
uses: actions/setup-python@v4 | ||
with: | ||
python-version: '3.x' | ||
- name: Install dependencies | ||
run: | | ||
python -m pip install --upgrade pip | ||
pip install build | ||
- name: Build package | ||
run: python -m build | ||
- name: Publish package | ||
uses: pypa/gh-action-pypi-publish@release/v1 | ||
with: | ||
password: ${{ secrets.PYPI_TOKEN }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
include requirements.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,53 @@ | ||
# moojoco-utils | ||
A unified framework for implementing and interfacing with MuJoCo and MuJoCo-XLA simulation environments. | ||
# moojoco-env | ||
|
||
**moojoco-env** 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)](https://github.com/Co-Evolve/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 `ArenaConfig[requirements.txt](requirements.txt)uration` | ||
* reconfigurable via a configuration | ||
[requirements.txt](requirements.txt) | ||
|
||
## Unified MJC and MJX environment in[README.md](README.md)terface | ||
|
||
* 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`, `render` and `close` functions. | ||
* 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-env**, please refer to | ||
the [Bio-inspired Robotics Benchmark](https://github.com/Co-Evolve/brb), | ||
which employs this framework extensively. | ||
|
||
## Installation | ||
|
||
``pip install moojoco-env`` |
Empty file.
Empty file.
Oops, something went wrong.