diff --git a/gym/utils/task_registry.py b/gym/utils/task_registry.py index f137fa20..6c2025ba 100644 --- a/gym/utils/task_registry.py +++ b/gym/utils/task_registry.py @@ -37,7 +37,6 @@ from datetime import datetime from typing import Tuple -from learning.env import VecEnv from learning.runners import * # noqa: F403 from learning.utils import set_discount_from_horizon @@ -67,7 +66,7 @@ def __init__(self): def register( self, name: str, - task_class: VecEnv, + task_class, env_cfg: BaseConfig, train_cfg: LeggedRobotRunnerCfg, ): @@ -75,7 +74,7 @@ def register( self.env_cfgs[name] = env_cfg self.train_cfgs[name] = train_cfg - def get_task_class(self, name: str) -> VecEnv: + def get_task_class(self, name: str): return self.task_classes[name] def get_cfgs(self, name) -> Tuple[LeggedRobotCfg, LeggedRobotRunnerCfg]: @@ -217,7 +216,7 @@ def make_sim(self): self.sim["params"], ) - def make_env(self, name, env_cfg) -> VecEnv: + def make_env(self, name, env_cfg): if name in self.task_classes: task_class = self.get_task_class(name) else: diff --git a/learning/env/__init__.py b/learning/env/__init__.py deleted file mode 100644 index 60fb029c..00000000 --- a/learning/env/__init__.py +++ /dev/null @@ -1,33 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. -# All rights reserved. -# SPDX-License-Identifier: BSD-3-Clause -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -# THE POSSIBILITY OF SUCH DAMAGE. -# -# Copyright (c) 2021 ETH Zurich, Nikita Rudin - -from .vec_env import VecEnv diff --git a/learning/env/vec_env.py b/learning/env/vec_env.py deleted file mode 100644 index 09ecd90d..00000000 --- a/learning/env/vec_env.py +++ /dev/null @@ -1,75 +0,0 @@ -# SPDX-FileCopyrightText: Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. -# All rights reserved. -# SPDX-License-Identifier: BSD-3-Clause -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# 1. Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# -# 2. Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# 3. Neither the name of the copyright holder nor the names of its -# contributors may be used to endorse or promote products derived from -# this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF -# THE POSSIBILITY OF SUCH DAMAGE. -# -# Copyright (c) 2021 ETH Zurich, Nikita Rudin - -from abc import ABC, abstractmethod -import torch -from typing import Tuple, Union - - -# minimal interface of the environment -class VecEnv(ABC): - num_envs: int - num_obs: int - num_privileged_obs: int - num_actions: int - max_episode_length: int - privileged_obs_buf: torch.Tensor - obs_buf: torch.Tensor - rew_buf: torch.Tensor - reset_buf: torch.Tensor - episode_length_buf: torch.Tensor # current episode duration - extras: dict - device: torch.device - - @abstractmethod - def step( - self, actions: torch.Tensor - ) -> Tuple[ - torch.Tensor, - Union[torch.Tensor, None], - torch.Tensor, - torch.Tensor, - dict, - ]: - pass - - @abstractmethod - def reset(self, env_ids: Union[list, torch.Tensor]): - pass - - @abstractmethod - def get_observations(self) -> torch.Tensor: - pass - - @abstractmethod - def get_privileged_observations(self) -> Union[torch.Tensor, None]: - pass diff --git a/learning/runners/BaseRunner.py b/learning/runners/BaseRunner.py index 627ba58f..c0462853 100644 --- a/learning/runners/BaseRunner.py +++ b/learning/runners/BaseRunner.py @@ -1,12 +1,11 @@ import torch from learning.algorithms import PPO from learning.modules import ActorCritic -from learning.env import VecEnv from learning.utils import remove_zero_weighted_rewards class BaseRunner: - def __init__(self, env: VecEnv, train_cfg, device="cpu"): + def __init__(self, env, train_cfg, device="cpu"): self.device = device self.env = env self.parse_train_cfg(train_cfg) diff --git a/learning/runners/my_runner.py b/learning/runners/my_runner.py index 74b842d4..e555b525 100644 --- a/learning/runners/my_runner.py +++ b/learning/runners/my_runner.py @@ -1,5 +1,4 @@ import torch -from learning.env import VecEnv from learning.utils import Logger from learning.utils import PotentialBasedRewardShaping @@ -11,7 +10,7 @@ class MyRunner(OnPolicyRunner): - def __init__(self, env: VecEnv, train_cfg, device="cpu"): + def __init__(self, env, train_cfg, device="cpu"): super().__init__(env, train_cfg, device) logger.initialize( self.env.num_envs, diff --git a/learning/runners/on_policy_runner.py b/learning/runners/on_policy_runner.py index 9820d749..e2fb524e 100644 --- a/learning/runners/on_policy_runner.py +++ b/learning/runners/on_policy_runner.py @@ -1,6 +1,5 @@ import os import torch -from learning.env import VecEnv from learning.utils import Logger @@ -10,7 +9,7 @@ class OnPolicyRunner(BaseRunner): - def __init__(self, env: VecEnv, train_cfg, device="cpu"): + def __init__(self, env, train_cfg, device="cpu"): super().__init__(env, train_cfg, device) logger.initialize( self.env.num_envs,