Skip to content

Commit d652ed4

Browse files
authored
Remove RLFramework enum, replace with plain string (#544)
## Summary - Deletes `isaaclab_arena/reinforcement_learning/`: A module that existed solely for an `RLFramework` enum whose only method produced strings like `"rsl_rl_cfg_entry_point"` - Replaces `rl_framework: RLFramework` with `rl_framework_entry_point: str` on `IsaacLabArenaEnvironment` and let the user pass in the correct string directly Signed-off-by: Clemens Volk <cvolk@nvidia.com>
1 parent a101fc8 commit d652ed4

6 files changed

Lines changed: 17 additions & 29 deletions

File tree

docs/pages/example_workflows/dexsuite_lift/step_1_environment_setup.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ The environment is defined in
3232
import isaaclab_tasks.manager_based.manipulation.dexsuite # noqa: F401
3333
3434
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
35-
from isaaclab_arena.reinforcement_learning.frameworks import RLFramework
3635
from isaaclab_arena.scene.scene import Scene
3736
from isaaclab_arena.tasks.lift_object_task import DexsuiteLiftTask
3837
from isaaclab_arena.utils.pose import Pose, PoseRange
@@ -69,7 +68,7 @@ The environment is defined in
6968
scene=scene,
7069
task=task,
7170
teleop_device=None,
72-
rl_framework=RLFramework.RSL_RL,
71+
rl_framework_entry_point="rsl_rl_cfg_entry_point",
7372
rl_policy_cfg=dexsuite_rl_cfg_entry,
7473
)
7574

isaaclab_arena/environments/arena_env_builder.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -315,9 +315,8 @@ def build_registered(
315315
kwargs = {
316316
"env_cfg_entry_point": cfg_entry,
317317
}
318-
if self.arena_env.rl_framework is not None:
319-
assert self.arena_env.rl_policy_cfg is not None
320-
kwargs[self.arena_env.rl_framework.get_entry_point_string()] = self.arena_env.rl_policy_cfg
318+
if self.arena_env.rl_framework_entry_point is not None:
319+
kwargs[self.arena_env.rl_framework_entry_point] = self.arena_env.rl_policy_cfg
321320
gym.register(
322321
id=name,
323322
entry_point=entry_point,

isaaclab_arena/environments/isaaclab_arena_environment.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
from isaaclab_arena.embodiments.embodiment_base import EmbodimentBase
1414
from isaaclab_arena.environments.isaaclab_arena_manager_based_env import IsaacLabArenaManagerBasedRLEnvCfg
1515
from isaaclab_arena.orchestrator.orchestrator_base import OrchestratorBase
16-
from isaaclab_arena.reinforcement_learning.frameworks import RLFramework
1716
from isaaclab_arena.scene.scene import Scene
1817
from isaaclab_arena.tasks.task_base import TaskBase
1918

@@ -30,7 +29,7 @@ def __init__(
3029
teleop_device: TeleopDeviceBase | None = None,
3130
orchestrator: OrchestratorBase | None = None,
3231
env_cfg_callback: Callable[IsaacLabArenaManagerBasedRLEnvCfg] | None = None,
33-
rl_framework: RLFramework | None = None,
32+
rl_framework_entry_point: str | None = None,
3433
rl_policy_cfg: str | None = None,
3534
):
3635
"""
@@ -42,6 +41,14 @@ def __init__(
4241
teleop_device: The teleop device to use in the environment.
4342
orchestrator: The orchestrator to use in the environment.
4443
env_cfg_callback: A callback function that modifies the environment configuration.
44+
rl_framework_entry_point: Gym kwargs key under which the RL policy config is
45+
registered. This is an IsaacLab convention: each supported RL framework has a
46+
fixed key that its training scripts look up via ``load_cfg_from_registry``.
47+
Common values: ``"rsl_rl_cfg_entry_point"``, ``"skrl_cfg_entry_point"``,
48+
``"sb3_cfg_entry_point"``, ``"rl_games_cfg_entry_point"``. Required when
49+
``rl_policy_cfg`` is set.
50+
rl_policy_cfg: Import path to the RL policy config class, e.g.
51+
``"my_module:RLPolicyCfg"``.
4552
"""
4653
self.name = name
4754
self.scene = scene
@@ -50,5 +57,7 @@ def __init__(
5057
self.teleop_device = teleop_device
5158
self.orchestrator = orchestrator
5259
self.env_cfg_callback = env_cfg_callback
53-
self.rl_framework = rl_framework
60+
if (rl_framework_entry_point is None) != (rl_policy_cfg is None):
61+
raise ValueError("rl_framework_entry_point and rl_policy_cfg must both be set or both be None.")
62+
self.rl_framework_entry_point = rl_framework_entry_point
5463
self.rl_policy_cfg = rl_policy_cfg

isaaclab_arena/reinforcement_learning/frameworks.py

Lines changed: 0 additions & 17 deletions
This file was deleted.

isaaclab_arena_environments/dexsuite_lift_environment.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ def get_env(self, args_cli: argparse.Namespace):
2727
import isaaclab_tasks.manager_based.manipulation.dexsuite # noqa: F401
2828

2929
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
30-
from isaaclab_arena.reinforcement_learning.frameworks import RLFramework
3130
from isaaclab_arena.scene.scene import Scene
3231
from isaaclab_arena.tasks.lift_object_task import DexsuiteLiftTask
3332
from isaaclab_arena.utils.pose import Pose, PoseRange
@@ -64,7 +63,7 @@ def get_env(self, args_cli: argparse.Namespace):
6463
scene=scene,
6564
task=task,
6665
teleop_device=None,
67-
rl_framework=RLFramework.RSL_RL,
66+
rl_framework_entry_point="rsl_rl_cfg_entry_point",
6867
rl_policy_cfg=dexsuite_rl_cfg_entry,
6968
)
7069

isaaclab_arena_environments/lift_object_environment.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ class LiftObjectEnvironment(ExampleEnvironmentBase):
2121
def get_env(self, args_cli: argparse.Namespace): # -> IsaacLabArenaEnvironment:
2222
import isaaclab_arena_examples.policy.base_rsl_rl_policy as base_rsl_rl_policy
2323
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
24-
from isaaclab_arena.reinforcement_learning.frameworks import RLFramework
2524
from isaaclab_arena.scene.scene import Scene
2625
from isaaclab_arena.tasks.lift_object_task import LiftObjectTaskRL
2726
from isaaclab_arena.utils.pose import Pose
@@ -66,7 +65,7 @@ def get_env(self, args_cli: argparse.Namespace): # -> IsaacLabArenaEnvironment:
6665
scene=scene,
6766
task=task,
6867
teleop_device=teleop_device,
69-
rl_framework=RLFramework.RSL_RL,
68+
rl_framework_entry_point="rsl_rl_cfg_entry_point",
7069
rl_policy_cfg=f"{base_rsl_rl_policy.__name__}:RLPolicyCfg",
7170
)
7271

0 commit comments

Comments
 (0)