| # Isaac Lab: Environment Suite |
|
|
| Using the core framework developed as part of Isaac Lab, we provide various learning environments for robotics research. |
| These environments follow the `gym.Env` API from OpenAI Gym version `0.21.0`. The environments are registered using |
| the Gym registry. |
|
|
| Each environment's name is composed of `Isaac-<Task>-<Robot>-v<X>`, where `<Task>` indicates the skill to learn |
| in the environment, `<Robot>` indicates the embodiment of the acting agent, and `<X>` represents the version of |
| the environment (which can be used to suggest different observation or action spaces). |
|
|
| The environments are configured using either Python classes (wrapped using `configclass` decorator) or through |
| YAML files. The template structure of the environment is always put at the same level as the environment file |
| itself. However, its various instances are included in directories within the environment directory itself. |
| This looks like as follows: |
|
|
| ```tree |
| isaaclab_tasks/locomotion/ |
| βββ __init__.py |
| βββ velocity |
| βββ config |
| β βββ anymal_c |
| β βββ agent # <- this is where we store the learning agent configurations |
| β βββ __init__.py # <- this is where we register the environment and configurations to gym registry |
| β βββ flat_env_cfg.py |
| β βββ rough_env_cfg.py |
| βββ __init__.py |
| βββ velocity_env_cfg.py # <- this is the base task configuration |
| ``` |
|
|
| The environments are then registered in the `isaaclab_tasks/locomotion/velocity/config/anymal_c/__init__.py`: |
|
|
| ```python |
| gym.register( |
| id="Isaac-Velocity-Rough-Anymal-C-v0", |
| entry_point="isaaclab.envs:ManagerBasedRLEnv", |
| disable_env_checker=True, |
| kwargs={ |
| "env_cfg_entry_point": f"{__name__}.rough_env_cfg:AnymalCRoughEnvCfg", |
| "rl_games_cfg_entry_point": f"{agents.__name__}:rl_games_rough_ppo_cfg.yaml", |
| "rsl_rl_cfg_entry_point": f"{agents.__name__}.rsl_rl_ppo_cfg:AnymalCRoughPPORunnerCfg", |
| "skrl_cfg_entry_point": f"{agents.__name__}:skrl_rough_ppo_cfg.yaml", |
| }, |
| ) |
| |
| gym.register( |
| id="Isaac-Velocity-Flat-Anymal-C-v0", |
| entry_point="isaaclab.envs:ManagerBasedRLEnv", |
| disable_env_checker=True, |
| kwargs={ |
| "env_cfg_entry_point": f"{__name__}.flat_env_cfg:AnymalCFlatEnvCfg", |
| "rsl_rl_cfg_entry_point": f"{agents.__name__}.rsl_rl_ppo_cfg:AnymalCFlatPPORunnerCfg", |
| "rl_games_cfg_entry_point": f"{agents.__name__}:rl_games_flat_ppo_cfg.yaml", |
| "skrl_cfg_entry_point": f"{agents.__name__}:skrl_flat_ppo_cfg.yaml", |
| }, |
| ) |
| ``` |
|
|
| > **Note:** As a practice, we specify all the environments in a single file to avoid name conflicts between different |
| > tasks or environments. However, this practice is debatable and we are open to suggestions to deal with a large |
| > scaling in the number of tasks or environments. |
|
|