mirror of
https://github.com/huggingface/lerobot.git
synced 2026-05-18 02:00:03 +00:00
add changes
This commit is contained in:
+45
-3
@@ -48,7 +48,8 @@ To make your environment loadable from the Hub, your repository must contain at
|
||||
|
||||
**`env.py`** (or custom Python file)
|
||||
|
||||
- Must expose a `make_env(n_envs: int, use_async_envs: bool)` function
|
||||
- Must expose a `make_env(n_envs: int, use_async_envs: bool, **kwargs)` function
|
||||
- The function should accept `**kwargs` to allow users to pass custom configurations
|
||||
- This function should return one of:
|
||||
- A `gym.vector.VectorEnv` (most common)
|
||||
- A single `gym.Env` (will be automatically wrapped)
|
||||
@@ -92,6 +93,8 @@ Create an `env.py` file with a `make_env` function:
|
||||
```python
|
||||
# env.py
|
||||
import gymnasium as gym
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
def make_env(n_envs: int = 1, use_async_envs: bool = False):
|
||||
"""
|
||||
@@ -243,6 +246,44 @@ envs_dict = make_env(
|
||||
)
|
||||
```
|
||||
|
||||
### Custom Configuration via kwargs
|
||||
|
||||
Hub environments can accept custom configurations through keyword arguments. This is useful for parameterizing tasks, loading different objects, or overriding default settings:
|
||||
|
||||
```python
|
||||
from pathlib import Path
|
||||
|
||||
# Pass a config file path
|
||||
envs_dict = make_env(
|
||||
"nvkartik/isaaclab-arena-envs:envs/microwave_g1.py",
|
||||
n_envs=4,
|
||||
trust_remote_code=True,
|
||||
config_path=Path("/path/to/my_config.yaml"),
|
||||
)
|
||||
|
||||
# Pass config overrides as a dictionary
|
||||
envs_dict = make_env(
|
||||
"nvkartik/isaaclab-arena-envs:envs/microwave_g1.py",
|
||||
n_envs=4,
|
||||
trust_remote_code=True,
|
||||
config_overrides={
|
||||
"scene.object": "microwave",
|
||||
"sim.dt": 0.01,
|
||||
},
|
||||
)
|
||||
|
||||
# Combine config path with overrides
|
||||
envs_dict = make_env(
|
||||
"username/my-env",
|
||||
n_envs=4,
|
||||
trust_remote_code=True,
|
||||
config_path="configs/gr1_pick_place.yaml",
|
||||
config_overrides={"scene.table_objects": ["apple", "banana", "cup"]},
|
||||
)
|
||||
```
|
||||
|
||||
Any keyword arguments you pass will be forwarded to the hub environment's `make_env` function. Check the environment's documentation for supported configuration options.
|
||||
|
||||
## URL Format Reference
|
||||
|
||||
The hub URL format supports several patterns:
|
||||
@@ -259,7 +300,7 @@ The hub URL format supports several patterns:
|
||||
For benchmarks with multiple tasks (like LIBERO), return a nested dictionary:
|
||||
|
||||
```python
|
||||
def make_env(n_envs: int = 1, use_async_envs: bool = False):
|
||||
def make_env(n_envs: int = 1, use_async_envs: bool = False, **kwargs):
|
||||
env_cls = gym.vector.AsyncVectorEnv if use_async_envs else gym.vector.SyncVectorEnv
|
||||
|
||||
# Return dict: {suite_name: {task_id: VectorEnv}}
|
||||
@@ -381,8 +422,9 @@ pip install gymnasium numpy
|
||||
Your `env.py` must expose a `make_env` function:
|
||||
|
||||
```python
|
||||
def make_env(n_envs: int, use_async_envs: bool):
|
||||
def make_env(n_envs: int, use_async_envs: bool, **kwargs):
|
||||
# Your implementation
|
||||
# kwargs can include config_path, config_overrides, etc.
|
||||
pass
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user