lw_benchhub_env / env.py
EverNorif's picture
use IsaacLabArenaEnvWrapper to get wrapped_env.
0157b12
import logging
from typing import Any
from lerobot.envs.isaaclab_arena import IsaacLabArenaEnvWrapper
def make_env(n_envs: int = 1, use_async_envs: bool = False, **kwargs: Any):
"""
Create vectorized environments for leisaac task.
Args:
n_envs: Number of parallel environments
use_async_envs: Whether to use AsyncVectorEnv or SyncVectorEnv
(not use now)
**kwargs: Additional arguments to pass to the environment
- config_path: Path to the environment configuration file
Returns:
ManagerBasedRLEnv or DirectRLEnv inherit from gym.Env implemented in IsaacLab
"""
# use environment variable to set config path
if "config_path" not in kwargs:
raise ValueError("Please set config_path in the arguments")
config_path = kwargs['config_path']
logging.warning(
"Ignore n_envs and use_async_envs in parameter, we use the config path to create the environment")
from lw_benchhub.utils.envhub_utils import export_env_for_envhub
raw_env, environment, task, render_mode, episode_length, app_launcher = export_env_for_envhub(
config_path=config_path
)
wrapped_env = IsaacLabArenaEnvWrapper(
raw_env,
episode_length=episode_length,
task=task,
render_mode=render_mode,
simulation_app=app_launcher,
)
logging.info(f"Created: {environment} with {wrapped_env.num_envs} envs")
return {environment: {0: wrapped_env}}