From 944bba44ca5b684f548598bf360b507c698539cd Mon Sep 17 00:00:00 2001 From: Melvin Laux Date: Fri, 28 Jun 2024 13:32:37 +0200 Subject: [PATCH 1/6] Add render_mode keyword --- deformable_gym/envs/base_env.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deformable_gym/envs/base_env.py b/deformable_gym/envs/base_env.py index 16ee30a..3a5585b 100644 --- a/deformable_gym/envs/base_env.py +++ b/deformable_gym/envs/base_env.py @@ -39,7 +39,7 @@ class BaseBulletEnv(gym.Env, abc.ABC): def __init__( self, - gui: bool = True, + gui: bool = False, real_time: bool = False, horizon: int = 100, soft: bool = False, @@ -47,6 +47,7 @@ def __init__( time_delta: float = 0.001, verbose_dt: float = 10.00, pybullet_options: str = "", + render_mode: str | None = None ): self.gui = gui From 217170c68cceddfe3e11a29db2246b2e478e940a Mon Sep 17 00:00:00 2001 From: Melvin Laux Date: Fri, 28 Jun 2024 14:02:10 +0200 Subject: [PATCH 2/6] Get annotations syntax --- deformable_gym/envs/base_env.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/deformable_gym/envs/base_env.py b/deformable_gym/envs/base_env.py index 3a5585b..5102b80 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 @@ -47,7 +48,7 @@ def __init__( time_delta: float = 0.001, verbose_dt: float = 10.00, pybullet_options: str = "", - render_mode: str | None = None + render_mode: str | None = None, ): self.gui = gui From 2ae1aa5f6739eb378a308fd4834a0f2cac679316 Mon Sep 17 00:00:00 2001 From: Melvin Laux Date: Fri, 28 Jun 2024 15:20:55 +0200 Subject: [PATCH 3/6] Replace gui keyword with render_mode --- deformable_gym/envs/base_env.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deformable_gym/envs/base_env.py b/deformable_gym/envs/base_env.py index 5102b80..0b07827 100644 --- a/deformable_gym/envs/base_env.py +++ b/deformable_gym/envs/base_env.py @@ -37,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 = False, real_time: bool = False, horizon: int = 100, soft: bool = False, @@ -51,11 +51,11 @@ def __init__( 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, @@ -131,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") From e0658fbb195766728dec7be56c763ad8a2b8d887 Mon Sep 17 00:00:00 2001 From: Melvin Laux Date: Fri, 28 Jun 2024 15:21:56 +0200 Subject: [PATCH 4/6] Remove gui keyword from tests --- tests/envs/test_floating_mia_grasp_env.py | 3 --- tests/envs/test_floating_shadow_grasp_env.py | 2 -- tests/envs/test_parallel_envs.py | 4 ++-- tests/envs/test_ur10_shadow_grasp_env.py | 2 -- tests/envs/test_ur5_mia_grasp_env.py | 3 --- 5 files changed, 2 insertions(+), 12 deletions(-) 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", ) From 87c01bbb34bf2dc2c58aa31fec492c8cbcb06ad5 Mon Sep 17 00:00:00 2001 From: Melvin Laux Date: Fri, 28 Jun 2024 15:31:13 +0200 Subject: [PATCH 5/6] Replace gui with render_mode --- examples/floating_mia_example.py | 4 ++-- examples/floating_shadow_example.py | 6 +++--- examples/parallel_floating_mia_example.py | 4 ++-- examples/uniform_initialisation_example.py | 6 ++++-- examples/ur10_shadow_grasp_example.py | 2 +- examples/ur5_mia_grasp_example.py | 2 +- 6 files changed, 13 insertions(+), 11 deletions(-) diff --git a/examples/floating_mia_example.py b/examples/floating_mia_example.py index a25b15e..81ec26f 100644 --- a/examples/floating_mia_example.py +++ b/examples/floating_mia_example.py @@ -7,12 +7,12 @@ Floating Mia Example ========= -This is an example of how to use the FloatingMiaGraspEnv. A random policy is +This is an example of how to use the FloatingMiaGraspEnv. 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 5f62358..69eaebe 100644 --- a/examples/floating_shadow_example.py +++ b/examples/floating_shadow_example.py @@ -7,12 +7,12 @@ Floating Shadow Example ========= -This is an example of how to use the FloatingShadowGraspEnv. A random policy is then -used to generate ten episodes. +This is an example of how to use the FloatingShadowGraspEnv. 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 d479282..f6659cc 100644 --- a/examples/uniform_initialisation_example.py +++ b/examples/uniform_initialisation_example.py @@ -8,7 +8,7 @@ Floating Mia Example ========= -This is an example of how to use the FloatingMiaGraspEnv. A random policy is +This is an example of how to use the FloatingMiaGraspEnv. A random policy is then used to generate ten episodes. """ @@ -23,7 +23,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 184f7d1..7ffb2cc 100644 --- a/examples/ur10_shadow_grasp_example.py +++ b/examples/ur10_shadow_grasp_example.py @@ -10,7 +10,7 @@ """ -env = UR10ShadowGraspEnv(gui=True, object_name="insole") +env = UR10ShadowGraspEnv(object_name="insole") env.reset() episode_return = 0 diff --git a/examples/ur5_mia_grasp_example.py b/examples/ur5_mia_grasp_example.py index 68335ee..f6379cd 100644 --- a/examples/ur5_mia_grasp_example.py +++ b/examples/ur5_mia_grasp_example.py @@ -10,7 +10,7 @@ """ -env = UR5MiaGraspEnv(gui=True, object_name="insole2") +env = UR5MiaGraspEnv(object_name="insole2") env.reset() episode_return = 0 From 50d92c72fef0431f05498a35f99245eb49682ad4 Mon Sep 17 00:00:00 2001 From: Melvin Laux Date: Fri, 28 Jun 2024 15:48:35 +0200 Subject: [PATCH 6/6] Bump version --- setup.py | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) 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", + ], + )