Compare commits
5
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eccbf32794 | ||
|
|
26fe6082fc | ||
|
|
e3a2932c42 | ||
|
|
12a3558950 | ||
|
|
e624876f24 |
@@ -0,0 +1,40 @@
|
|||||||
|
name: Deploy static docs to Pages
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: ["release"]
|
||||||
|
|
||||||
|
# Allows you to run this workflow manually from the Actions tab
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
||||||
|
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
||||||
|
concurrency:
|
||||||
|
group: "pages"
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Single deploy job since we're just deploying
|
||||||
|
deploy:
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Setup Pages
|
||||||
|
uses: actions/configure-pages@v4
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-pages-artifact@v3
|
||||||
|
with:
|
||||||
|
path: 'docs/build/html'
|
||||||
|
- name: Deploy to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v4
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
name: Run pytest
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
# - master
|
||||||
|
- release
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
# - master
|
||||||
|
- release
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
pytest:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Set up Python
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.x'
|
||||||
|
|
||||||
|
- name: Install package dependencies
|
||||||
|
run: pip install .[testing]
|
||||||
|
|
||||||
|
- name: Install Metaworld
|
||||||
|
run: pip install metaworld@git+https://github.com/Farama-Foundation/Metaworld.git@d155d0051630bb365ea6a824e02c66c068947439#egg=metaworld
|
||||||
|
|
||||||
|
- name: Run pytest
|
||||||
|
run: pytest
|
||||||
@@ -10,25 +10,25 @@ Built upon the foundation of [Gymnasium](https://gymnasium.farama.org) (a mainta
|
|||||||
|
|
||||||
**Key Features**:
|
**Key Features**:
|
||||||
|
|
||||||
- **New Challenging Environments**: `fancy_gym` includes several new environments ([Panda Box Pushing](https://alrhub.github.io/fancy_gym/envs/fancy/mujoco.html#box-pushing), [Table Tennis](https://alrhub.github.io/fancy_gym/envs/fancy/mujoco.html#table-tennis), [etc.](https://alrhub.github.io/fancy_gym/envs/fancy/index.html)) that present a higher degree of difficulty, pushing the boundaries of reinforcement learning research.
|
- **New Challenging Environments**: `fancy_gym` includes several new environments ([Panda Box Pushing](https://dominik-roth.eu/fancy/envs/fancy/mujoco.html#box-pushing), [Table Tennis](https://dominik-roth.eu/fancy/envs/fancy/mujoco.html#table-tennis), [etc.](https://dominik-roth.eu/fancy/envs/fancy/index.html)) that present a higher degree of difficulty, pushing the boundaries of reinforcement learning research.
|
||||||
- **Support for Movement Primitives**: `fancy_gym` supports a range of movement primitives (MPs), including Dynamic Movement Primitives (DMPs), Probabilistic Movement Primitives (ProMP), and Probabilistic Dynamic Movement Primitives (ProDMP).
|
- **Support for Movement Primitives**: `fancy_gym` supports a range of movement primitives (MPs), including Dynamic Movement Primitives (DMPs), Probabilistic Movement Primitives (ProMP), and Probabilistic Dynamic Movement Primitives (ProDMP).
|
||||||
- **Upgrade to Movement Primitives**: With our framework, it’s straightforward to transform standard Gymnasium environments into environments that support movement primitives.
|
- **Upgrade to Movement Primitives**: With our framework, it’s straightforward to transform standard Gymnasium environments into environments that support movement primitives.
|
||||||
- **Benchmark Suite Compatibility**: `fancy_gym` makes it easy to access renowned benchmark suites such as [DeepMind Control](https://alrhub.github.io/fancy_gym/envs/dmc.html)
|
- **Benchmark Suite Compatibility**: `fancy_gym` makes it easy to access renowned benchmark suites such as [DeepMind Control](dominik-roth.eu/fancy/envs/dmc.html)
|
||||||
and [Metaworld](https://alrhub.github.io/fancy_gym/envs/meta.html), whether you want to use them in the regular step-based setting or using MPs.
|
and [Metaworld](https://dominik-roth.eu/fancy/envs/meta.html), whether you want to use them in the regular step-based setting or using MPs.
|
||||||
- **Contribute Your Own Environments**: If you’re inspired to create custom gym environments, both step-based and with movement primitives, this [guide](https://alrhub.github.io/fancy_gym/guide/upgrading_envs.html) will assist you. We encourage and highly appreciate submissions via PRs to integrate these environments into `fancy_gym`.
|
- **Contribute Your Own Environments**: If you’re inspired to create custom gym environments, both step-based and with movement primitives, this [guide](https://dominik-roth.eu/fancy/guide/upgrading_envs.html) will assist you. We encourage and highly appreciate submissions via PRs to integrate these environments into `fancy_gym`.
|
||||||
|
|
||||||
## Quickstart Guide
|
## Quickstart Guide
|
||||||
|
|
||||||
| ⚠ We recommend installing `fancy_gym` into a virtual environment as provided by [venv](https://docs.python.org/3/library/venv.html), [Poetry](https://python-poetry.org/) or [Conda](https://docs.conda.io/en/latest/). |
|
| ⚠ We recommend installing `fancy_gym` into a virtual environment as provided by [venv](https://docs.python.org/3/library/venv.html), [Poetry](https://python-poetry.org/) or [Conda](https://docs.conda.io/en/latest/). |
|
||||||
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
|
|
||||||
Install via pip [or use an alternative installation method](https://alrhub.github.io/fancy_gym/guide/installation.html)
|
Install via pip [or use an alternative installation method](https://dominik-roth.eu/fancy/guide/installation.html)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip install 'fancy_gym[all]'
|
pip install 'fancy_gym[all]'
|
||||||
```
|
```
|
||||||
|
|
||||||
Try out one of our step-based environments [or explore our other envs](https://alrhub.github.io/fancy_gym/envs/fancy/index.html)
|
Try out one of our step-based environments [or explore our other envs](https://dominik-roth.eu/fancy/envs/fancy/index.html)
|
||||||
|
|
||||||
```python
|
```python
|
||||||
import gymnasium as gym
|
import gymnasium as gym
|
||||||
@@ -48,7 +48,7 @@ Try out one of our step-based environments [or explore our other envs](https://a
|
|||||||
observation, info = env.reset()
|
observation, info = env.reset()
|
||||||
```
|
```
|
||||||
|
|
||||||
Explore the MP-based variant [or learn more about Movement Primitives (MPs)](https://alrhub.github.io/fancy_gym/guide/episodic_rl.html)
|
Explore the MP-based variant [or learn more about Movement Primitives (MPs)](https://dominik-roth.eu/fancy/guide/episodic_rl.html)
|
||||||
|
|
||||||
```python
|
```python
|
||||||
import gymnasium as gym
|
import gymnasium as gym
|
||||||
@@ -66,7 +66,7 @@ Explore the MP-based variant [or learn more about Movement Primitives (MPs)](htt
|
|||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
Documentation for `fancy_gym` can be found [here](https://alrhub.github.io/fancy_gym/); Usage Examples can be found [here](https://alrhub.github.io/fancy_gym/examples/general.html).
|
Documentation for `fancy_gym` can be found [here](https://dominik-roth.eu/fancy); Usage Examples can be found [here](https://dominik-roth.eu/fancy/examples/general.html).
|
||||||
|
|
||||||
## Citing the Project
|
## Citing the Project
|
||||||
|
|
||||||
|
|||||||
@@ -21,15 +21,21 @@ GYM_MP_IDS = fancy_gym.ALL_DMC_MOVEMENT_PRIMITIVE_ENVIRONMENTS['all']
|
|||||||
SEED = 1
|
SEED = 1
|
||||||
|
|
||||||
|
|
||||||
|
known_fail_functionality = ['LunarLander-v2', 'Blackjack-v1', 'CliffWalking-v0']
|
||||||
@pytest.mark.parametrize('env_id', GYM_IDS)
|
@pytest.mark.parametrize('env_id', GYM_IDS)
|
||||||
def test_step_gym_functionality(env_id: str):
|
def test_step_gym_functionality(env_id: str):
|
||||||
"""Tests that step environments run without errors using random actions."""
|
"""Tests that step environments run without errors using random actions."""
|
||||||
|
if env_id in known_fail_functionality:
|
||||||
|
pytest.xfail(f"{env_id} is expected to fail the functionality test")
|
||||||
run_env(env_id)
|
run_env(env_id)
|
||||||
|
|
||||||
|
|
||||||
|
known_fail_deteminism = ['LunarLanderContinuous-v2', 'CliffWalking-v0']
|
||||||
@pytest.mark.parametrize('env_id', GYM_IDS)
|
@pytest.mark.parametrize('env_id', GYM_IDS)
|
||||||
def test_step_gym_determinism(env_id: str):
|
def test_step_gym_determinism(env_id: str):
|
||||||
"""Tests that for step environments identical seeds produce identical trajectories."""
|
"""Tests that for step environments identical seeds produce identical trajectories."""
|
||||||
|
if env_id in known_fail_deteminism:
|
||||||
|
pytest.xfail(f"{env_id} is expected to fail the determinism test")
|
||||||
run_env_determinism(env_id, SEED)
|
run_env_determinism(env_id, SEED)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,15 +15,21 @@ DMC_MP_IDS = fancy_gym.ALL_DMC_MOVEMENT_PRIMITIVE_ENVIRONMENTS['all']
|
|||||||
SEED = 1
|
SEED = 1
|
||||||
|
|
||||||
|
|
||||||
|
known_fail_functionality = []
|
||||||
@pytest.mark.parametrize('env_id', DMC_IDS)
|
@pytest.mark.parametrize('env_id', DMC_IDS)
|
||||||
def test_step_dm_control_functionality(env_id: str):
|
def test_step_dm_control_functionality(env_id: str):
|
||||||
"""Tests that suite step environments run without errors using random actions."""
|
"""Tests that suite step environments run without errors using random actions."""
|
||||||
|
if env_id in known_fail_functionality:
|
||||||
|
pytest.xfail(f"{env_id} is expected to fail the functionality test")
|
||||||
run_env(env_id, 5000, wrappers=[gym.wrappers.FlattenObservation])
|
run_env(env_id, 5000, wrappers=[gym.wrappers.FlattenObservation])
|
||||||
|
|
||||||
|
|
||||||
|
known_fail_deteminism = ['dm_control/CmuHumanoidMazeForage-v0', 'dm_control/CmuHumanoidHeterogeneousForage-v0', 'dm_control/RodentMazeForage-v0', 'dm_control/RodentTwoTouch-v0']
|
||||||
@pytest.mark.parametrize('env_id', DMC_IDS)
|
@pytest.mark.parametrize('env_id', DMC_IDS)
|
||||||
def test_step_dm_control_determinism(env_id: str):
|
def test_step_dm_control_determinism(env_id: str):
|
||||||
"""Tests that for step environments identical seeds produce identical trajectories."""
|
"""Tests that for step environments identical seeds produce identical trajectories."""
|
||||||
|
if env_id in known_fail_deteminism:
|
||||||
|
pytest.xfail(f"{env_id} is expected to fail the determinism test")
|
||||||
run_env_determinism(env_id, SEED, 5000, wrappers=[gym.wrappers.FlattenObservation])
|
run_env_determinism(env_id, SEED, 5000, wrappers=[gym.wrappers.FlattenObservation])
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user