Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 24 additions & 110 deletions panda_gym/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
"""Gymnasium registration for Panda and safety-aware Panda environments."""

import os

from gymnasium.envs.registration import register
Expand All @@ -6,124 +8,36 @@
__version__ = file_handler.read().strip()

ENV_IDS = []

for task in ["Reach", "Slide", "Push", "PickAndPlace", "Stack", "Flip",\
"ReachSafe", "PushSafe", "SlideSafe", "PickAndPlaceSafe", "StackSafe"\
"Stack3", "StackPyramid", "BuildL" ]:
for reward_type in ["sparse", "dense"]:
for control_type in ["ee", "joints"]:
TASKS = (
"Reach",
"Slide",
"Push",
"PickAndPlace",
"Stack",
"Flip",
"ReachSafe",
"PushSafe",
"SlideSafe",
"PickAndPlaceSafe",
"StackSafe",
"BuildL",
)

for task in TASKS:
for reward_type in ("sparse", "dense"):
for control_type in ("ee", "joints"):
reward_suffix = "Dense" if reward_type == "dense" else ""
control_suffix = "Joints" if control_type == "joints" else ""
env_id = f"Panda{task}{control_suffix}{reward_suffix}-v3"

register(
id=env_id,
entry_point=f"panda_gym.envs:Panda{task}Env",
kwargs={"reward_type": reward_type, "control_type": control_type},
max_episode_steps=100 if task == "Stack" else 50,
max_episode_steps=100
if task in {"Stack", "StackSafe", "BuildL"}
else 50,
)

ENV_IDS.append(env_id)



# register(
# id="PandaReachSafe{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaReachSafeEnv",
# kwargs=kwargs,
# max_episode_steps=50,
# )


# register(
# id="PandaPush{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaPushEnv",
# kwargs=kwargs,
# max_episode_steps=50,
# )

# register(
# id="PandaPushSafe{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaPushSafeEnv",
# kwargs=kwargs,
# max_episode_steps=50,
# )

# register(
# id="PandaSlide{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaSlideEnv",
# kwargs=kwargs,
# max_episode_steps=50,
# )

# register(
# id="PandaSlideSafe{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaSlideSafeEnv",
# kwargs=kwargs,
# max_episode_steps=50,
# )

# register(
# id="PandaPickAndPlace{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaPickAndPlaceEnv",
# kwargs=kwargs,
# max_episode_steps=50,
# )

# register(
# id="PandaPickAndPlaceSafe{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaPickAndPlaceSafeEnv",
# kwargs=kwargs,
# max_episode_steps=50,
# )

# register(
# id="PandaPickAndPlacePlatform{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaPickAndPlacePlatformEnv",
# kwargs=kwargs,
# max_episode_steps=50,
# )


# register(
# id="PandaStack{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaStackEnv",
# kwargs=kwargs,
# max_episode_steps=100,
# )

# register(
# id="PandaStackSafe{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaStackSafeEnv",
# kwargs=kwargs,
# max_episode_steps=100,
# )


# register(
# id="PandaStack3{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaStack3Env",
# kwargs=kwargs,
# max_episode_steps=100,
# )
# register(
# id="PandaStackPyramid{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaStackPyramidEnv",
# kwargs=kwargs,
# max_episode_steps=100,
# )

# register(
# id="PandaBuildL{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaBuildLEnv",
# kwargs=kwargs,
# max_episode_steps=100,
# )


# register(
# id="PandaFlip{}{}-v2".format(control_suffix, reward_suffix),
# entry_point="panda_gym.envs:PandaFlipEnv",
# kwargs=kwargs,
# max_episode_steps=50,
# )
__all__ = ["ENV_IDS", "TASKS", "__version__"]
40 changes: 21 additions & 19 deletions panda_gym/envs/__init__.py
Original file line number Diff line number Diff line change
@@ -1,31 +1,33 @@
"""Environment exports used by Gymnasium entry points."""

from panda_gym.envs.panda_tasks import (
PandaFlipEnv,
PandaPickAndPlaceEnv,
PandaPushEnv,
PandaReachEnv,
PandaSlideEnv,
PandaStackEnv,

#new environments
PandaStack3Env,
PandaStackPyramidEnv,
PandaPickAndPlacePlatformEnv,

#safe environments
)
from panda_gym.envs.panda_tasks_safe import (
PandaPickAndPlaceSafeEnv,
PandaPushSafeEnv,
PandaReachSafeEnv,
PandaSlideSafeEnv,
PandaPickAndPlaceSafeEnv,
PandaStackSafeEnv
PandaStackSafeEnv,
)
from panda_gym.envs.panda_tasks_multi import PandaBuildLEnv

# from panda_gym.envs.panda_tasks.panda_pick_and_place_platform import PandaPickAndPlacePlatformEnv
# from panda_gym.envs.panda_tasks.panda_stack_pyramid import PandaStackPyramidEnv
#from panda_gym.envs.panda_tasks.panda_stack_3 import PandaStack3Env
#from panda_gym.envs.panda_tasks.panda_stack_pyramid import PandaStackPyramidEnv
#from panda_gym.envs.panda_tasks.panda_build_L import PandaBuildLEnv
# from panda_gym.envs.panda_tasks.panda_push_safe import PandaPushSafeEnv
# from panda_gym.envs.panda_tasks.panda_reach_safe import PandaReachSafeEnv
# from panda_gym.envs.panda_tasks.panda_slide_safe import PandaSlideSafeEnv
# from panda_gym.envs.panda_tasks.panda_pick_and_place_safe import PandaPickAndPlaceSafeEnv
# from panda_gym.envs.panda_tasks.panda_stack_safe import PandaStackSafeEnv
__all__ = [
"PandaFlipEnv",
"PandaPickAndPlaceEnv",
"PandaPushEnv",
"PandaReachEnv",
"PandaSlideEnv",
"PandaStackEnv",
"PandaPickAndPlaceSafeEnv",
"PandaPushSafeEnv",
"PandaReachSafeEnv",
"PandaSlideSafeEnv",
"PandaStackSafeEnv",
"PandaBuildLEnv",
]
Loading