diff --git a/deformable_gym/envs/base_env.py b/deformable_gym/envs/base_env.py index 16ee30a..0b07827 100644 --- a/deformable_gym/envs/base_env.py +++ b/deformable_gym/envs/base_env.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import abc from typing import Any @@ -7,7 +9,6 @@ import pybullet as pb import pytransform3d.rotations as pr from gymnasium import spaces -from pybullet_utils import bullet_client as bc from ..envs.bullet_simulation import BulletSimulation from ..helpers.pybullet_helper import MultibodyPose @@ -36,10 +37,10 @@ class BaseBulletEnv(gym.Env, abc.ABC): robot: BulletRobot observation_space: spaces.Box action_space: spaces.Box + metadata = {"render_modes": ["human"]} def __init__( self, - gui: bool = True, real_time: bool = False, horizon: int = 100, soft: bool = False, @@ -47,13 +48,14 @@ def __init__( time_delta: float = 0.001, verbose_dt: float = 10.00, pybullet_options: str = "", + render_mode: str | None = None, ): - self.gui = gui self.verbose = verbose self.horizon = horizon + self.render_mode = render_mode - mode = pb.GUI if gui else pb.DIRECT + mode = pb.GUI if render_mode == "human" else pb.DIRECT self.simulation = BulletSimulation( soft=soft, @@ -129,7 +131,7 @@ def render(self, mode: str = "human"): :param mode: Render mode. Only 'human' is allowed. """ if mode == "human": - assert self.gui + assert self.render_mode == "human" else: raise NotImplementedError(f"Render mode {mode} not supported") diff --git a/examples/floating_mia_example.py b/examples/floating_mia_example.py index c28edaf..d54f204 100644 --- a/examples/floating_mia_example.py +++ b/examples/floating_mia_example.py @@ -9,10 +9,9 @@ This is an example of how to use the FloatingMiaGraspInsole environment. A random policy is then used to generate ten episodes. - """ -env = gymnasium.make("FloatingMiaGraspInsole-v0") +env = gymnasium.make("FloatingMiaGraspInsole-v0", render_mode="human") obs, info = env.reset() episode_return = 0 diff --git a/examples/floating_shadow_example.py b/examples/floating_shadow_example.py index caae628..d2d6ae1 100644 --- a/examples/floating_shadow_example.py +++ b/examples/floating_shadow_example.py @@ -9,10 +9,9 @@ This is an example of how to use the FloatingShadowGraspInsole environment. A random policy is then used to generate ten episodes. - """ -env = gymnasium.make("FloatingShadowGraspInsole-v0") +env = gymnasium.make("FloatingShadowGraspInsole-v0", render_mode="human") obs, info = env.reset() diff --git a/examples/parallel_floating_mia_example.py b/examples/parallel_floating_mia_example.py index 6418e26..38180ad 100644 --- a/examples/parallel_floating_mia_example.py +++ b/examples/parallel_floating_mia_example.py @@ -4,8 +4,8 @@ SEED = 0 -env = gymnasium.make("FloatingMiaGraspInsole-v0", gui=False) -env2 = gymnasium.make("FloatingMiaGraspInsole-v0", gui=False) +env = gymnasium.make("FloatingMiaGraspInsole-v0") +env2 = gymnasium.make("FloatingMiaGraspInsole-v0") obs, info = env.reset(seed=SEED) num_steps = 0 diff --git a/examples/uniform_initialisation_example.py b/examples/uniform_initialisation_example.py index 7deca9b..0935271 100644 --- a/examples/uniform_initialisation_example.py +++ b/examples/uniform_initialisation_example.py @@ -13,7 +13,9 @@ sampler = UniformSampler(low, high, seed=0) env = gymnasium.make( - "FloatingMiaGraspInsole-v0", initial_state_sampler=sampler, gui=True + "FloatingMiaGraspInsole-v0", + initial_state_sampler=sampler, + render_mode="human", ) obs, info = env.reset() diff --git a/examples/ur10_shadow_grasp_example.py b/examples/ur10_shadow_grasp_example.py index 05ec16a..94a78bc 100644 --- a/examples/ur10_shadow_grasp_example.py +++ b/examples/ur10_shadow_grasp_example.py @@ -14,6 +14,7 @@ env = gym.make("URShadowGraspPillow-v0") + env.reset() episode_return = 0 num_episodes = 0 diff --git a/examples/ur5_mia_grasp_example.py b/examples/ur5_mia_grasp_example.py index fe88f7f..8ec5bcb 100644 --- a/examples/ur5_mia_grasp_example.py +++ b/examples/ur5_mia_grasp_example.py @@ -14,6 +14,7 @@ env = gym.make("URMiaGraspPillow-v0") + env.reset() episode_return = 0 num_episodes = 0 diff --git a/setup.py b/setup.py index c8a9ac6..47b4512 100644 --- a/setup.py +++ b/setup.py @@ -4,18 +4,20 @@ with open("README.md", "r") as f: long_description = f.read() - setup(name='deformable_gym', - version="0.3.3", - maintainer='Melvin Laux', - maintainer_email='melvin.laux@uni-bremen.de', - description='Gym environments for grasping deformable objects', - long_description=long_description, - long_description_content_type="text/markdown", - license='BSD-3-Clause', - packages=["deformable_gym"], - install_requires=[ - "pybullet", - "gymnasium", - "numpy>=1.23.5,<2.0.0", - "pytransform3d" - ]) + setup( + name="deformable_gym", + version="0.3.4", + maintainer="Melvin Laux", + maintainer_email="melvin.laux@uni-bremen.de", + description="Gym environments for grasping deformable objects", + long_description=long_description, + long_description_content_type="text/markdown", + license="BSD-3-Clause", + packages=["deformable_gym"], + install_requires=[ + "pybullet", + "gymnasium", + "numpy>=1.23.5,<2.0.0", + "pytransform3d", + ], + ) diff --git a/tests/envs/test_floating_mia_grasp_env.py b/tests/envs/test_floating_mia_grasp_env.py index af8be17..daf67bb 100644 --- a/tests/envs/test_floating_mia_grasp_env.py +++ b/tests/envs/test_floating_mia_grasp_env.py @@ -7,11 +7,9 @@ @pytest.fixture def env(): return FloatingMiaGraspEnv( - gui=False, verbose=False, horizon=10, object_name="insole_on_conveyor_belt/back", - # observable_object_pos=True, ) @@ -59,7 +57,6 @@ def test_episode_reproducibility(env: FloatingMiaGraspEnv): env = FloatingMiaGraspEnv( verbose=False, horizon=3, - gui=False, object_name="insole_on_conveyor_belt/back", ) diff --git a/tests/envs/test_floating_shadow_grasp_env.py b/tests/envs/test_floating_shadow_grasp_env.py index 8420803..f001292 100644 --- a/tests/envs/test_floating_shadow_grasp_env.py +++ b/tests/envs/test_floating_shadow_grasp_env.py @@ -7,7 +7,6 @@ @pytest.fixture def env(): return FloatingShadowGraspEnv( - gui=False, verbose=False, horizon=10, object_name="insole", @@ -60,7 +59,6 @@ def test_episode_reproducibility(env: FloatingShadowGraspEnv): env = FloatingShadowGraspEnv( verbose=False, horizon=3, - gui=False, object_name="insole_on_conveyor_belt/back", ) diff --git a/tests/envs/test_parallel_envs.py b/tests/envs/test_parallel_envs.py index e48483d..08a0ed7 100644 --- a/tests/envs/test_parallel_envs.py +++ b/tests/envs/test_parallel_envs.py @@ -4,8 +4,8 @@ def test_parallel_envs(): - env = gymnasium.make("FloatingMiaGraspInsole-v0", gui=False, horizon=10) - env2 = gymnasium.make("FloatingMiaGraspInsole-v0", gui=False, horizon=10) + env = gymnasium.make("FloatingMiaGraspInsole-v0", horizon=10) + env2 = gymnasium.make("FloatingMiaGraspInsole-v0", horizon=10) obs, info = env.reset(seed=SEED) num_steps = 0 diff --git a/tests/envs/test_ur10_shadow_grasp_env.py b/tests/envs/test_ur10_shadow_grasp_env.py index 77c8f54..316c674 100644 --- a/tests/envs/test_ur10_shadow_grasp_env.py +++ b/tests/envs/test_ur10_shadow_grasp_env.py @@ -7,7 +7,6 @@ @pytest.fixture def env(): return UR10ShadowGraspEnv( - gui=False, verbose=False, horizon=10, object_name="insole", @@ -61,7 +60,6 @@ def test_episode_reproducibility(env: UR10ShadowGraspEnv): env = UR10ShadowGraspEnv( verbose=False, horizon=3, - gui=False, object_name="insole_on_conveyor_belt/back", ) diff --git a/tests/envs/test_ur5_mia_grasp_env.py b/tests/envs/test_ur5_mia_grasp_env.py index 11af06f..ffa0035 100644 --- a/tests/envs/test_ur5_mia_grasp_env.py +++ b/tests/envs/test_ur5_mia_grasp_env.py @@ -7,11 +7,9 @@ @pytest.fixture def env(): return UR5MiaGraspEnv( - gui=False, verbose=False, horizon=10, object_name="insole", - # observable_object_pos=True, ) @@ -43,7 +41,6 @@ def test_episode_reproducibility(env: UR5MiaGraspEnv): env = UR5MiaGraspEnv( verbose=False, horizon=3, - gui=False, object_name="insole_on_conveyor_belt/back", )