Skip to content
Draft
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
13 changes: 12 additions & 1 deletion isaaclab_arena/assets/register.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@
#
# SPDX-License-Identifier: Apache-2.0

from isaaclab_arena.assets.asset_registry import (
from isaaclab_arena.assets.registries import (
AssetRegistry,
DeviceRegistry,
EnvironmentRegistry,
HDRImageRegistry,
PolicyRegistry,
RetargeterRegistry,
Expand Down Expand Up @@ -57,3 +58,13 @@ def register_hdr(cls):
else:
HDRImageRegistry().register(cls, cls.name)
return cls


# Decorator to register an environment with the EnvironmentRegistry.
def register_environment(cls):
registry = EnvironmentRegistry()
if registry.is_registered(cls.name):
print(f"WARNING: Environment {cls.name} is already registered. Doing nothing.")
else:
registry.register(cls, cls.name)
return cls
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,13 @@ def get_random_hdr_by_tag(self, tag: str) -> type["HDRImage"]:
return random.choice(hdrs)


class EnvironmentRegistry(Registry):
"""Registry for example environment classes."""

def __init__(self):
super().__init__()


# Lazy registration to avoid circular imports
_assets_registered = False

Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/environments/arena_env_builder.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
from isaaclab_tasks.utils import parse_env_cfg
from isaaclab_teleop import IsaacTeleopCfg

from isaaclab_arena.assets.asset_registry import DeviceRegistry
from isaaclab_arena.assets.object import Object
from isaaclab_arena.assets.object_reference import ObjectReference
from isaaclab_arena.assets.registries import DeviceRegistry
from isaaclab_arena.embodiments.no_embodiment import NoEmbodiment
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
from isaaclab_arena.environments.isaaclab_arena_manager_based_env import (
Expand Down
6 changes: 4 additions & 2 deletions isaaclab_arena/environments/isaaclab_interop.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

import argparse

from isaaclab_arena_environments.cli import ExampleEnvironments
from isaaclab_arena.assets.registries import EnvironmentRegistry
from isaaclab_arena_environments.cli import ensure_environments_registered


def is_simulation_app_running() -> bool:
Expand Down Expand Up @@ -58,7 +59,8 @@ def environment_registration_callback() -> list[str]:
# The result is that a single argument tells Arena what to register, and Lab what to run.
parser.add_argument("--task", type=str, required=True, help="Name of the IsaacLab Arena environment to register.")
environment_name = parser.parse_known_args()[0].task
environment = ExampleEnvironments[environment_name]()
ensure_environments_registered()
environment = EnvironmentRegistry().get_component_by_name(environment_name)()
# Get the full list of environment-specific CLI args.
AppLauncher.add_app_launcher_args(parser)
add_isaac_lab_cli_args(parser)
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/evaluation/policy_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def get_policy_cls(policy_type: str) -> type["PolicyBase"]:
the policy_type argument as a string representing the module path and class name.

"""
from isaaclab_arena.assets.asset_registry import PolicyRegistry
from isaaclab_arena.assets.registries import PolicyRegistry

policy_registry = PolicyRegistry()
if policy_registry.is_registered(policy_type):
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/examples/compile_env_notebook.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

# %%

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_achieve_cube_goal_pose.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
def get_test_environment(num_envs: int):
"""Returns a scene which we use for these tests."""

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.franka.franka import FrankaIKEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
Expand Down
4 changes: 2 additions & 2 deletions isaaclab_arena/tests/test_assembly_task.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ def get_peg_insert_test_environment(num_envs: int, remove_events: bool = False):
"""Returns a peg insert environment for testing."""
import isaaclab.sim as sim_utils

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.franka.franka import FrankaIKEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
Expand Down Expand Up @@ -88,7 +88,7 @@ def get_gear_mesh_test_environment(num_envs: int, remove_events: bool = False):
"""Returns a gear mesh environment for testing."""
import isaaclab.sim as sim_utils

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.franka.franka import FrankaIKEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
Expand Down
10 changes: 5 additions & 5 deletions isaaclab_arena/tests/test_asset_registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@


def _test_default_assets_registered(simulation_app):
from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry

asset_registry = AssetRegistry()
assert asset_registry is not None
Expand Down Expand Up @@ -46,8 +46,8 @@ def test_default_assets_registered():
def _test_all_assets_in_registry(simulation_app):
# Import the necessary classes.

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.object import Object
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.embodiments.franka.franka import FrankaIKEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
Expand Down Expand Up @@ -131,8 +131,8 @@ def test_all_assets_in_registry():


def _test_hdr_images_registered(simulation_app):
from isaaclab_arena.assets.asset_registry import HDRImageRegistry
from isaaclab_arena.assets.hdr_image import HDRImage
from isaaclab_arena.assets.registries import HDRImageRegistry

hdr_registry = HDRImageRegistry()
all_keys = hdr_registry.get_all_keys()
Expand Down Expand Up @@ -168,7 +168,7 @@ def _test_hdr_image_spawn(simulation_app):
This test only needs to confirm that the DomeLight + HDRImage mechanism
works in a live simulation, so a single HDR is sufficient.
"""
from isaaclab_arena.assets.asset_registry import AssetRegistry, HDRImageRegistry
from isaaclab_arena.assets.registries import AssetRegistry, HDRImageRegistry
from isaaclab_arena.embodiments.franka.franka import FrankaIKEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
Expand Down Expand Up @@ -223,7 +223,7 @@ def test_hdr_image_spawn():
def _test_multi_light_in_scene(simulation_app):
from pxr import UsdLux

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.embodiments.franka.franka import FrankaIKEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_camera_observation.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

def _test_camera_observation(simulation_app) -> bool:

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.gr1t2.gr1t2 import GR1T2PinkEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_close_door.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
def get_test_environment(remove_reset_door_state_event: bool, num_envs: int):
"""Returns a scene which we use for these tests."""

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.franka.franka import FrankaIKEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_contact_sensor_not_at_root.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ def get_test_environment(num_envs: int):
# This test tests that we can successfully at a contact sensor to an object
# whose rigid body is not at the root of the USD file.

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.object_reference import ObjectReference
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.franka.franka import FrankaIKEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
Expand Down
4 changes: 2 additions & 2 deletions isaaclab_arena/tests/test_detect_object_type.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,8 +62,8 @@ def _test_detect_object_type(simulation_app):


def _test_detect_object_type_for_all_objects(simulation_app):
from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.object_utils import detect_object_type
from isaaclab_arena.assets.registries import AssetRegistry

asset_registry = AssetRegistry()
for object_asset in asset_registry.get_assets_by_tag("object"):
Expand All @@ -87,9 +87,9 @@ def _test_detect_object_type_for_all_objects(simulation_app):

def _test_auto_object_type(simulation_app):

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.object import Object
from isaaclab_arena.assets.object_base import ObjectType
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
def _test_all_devices_and_retargeters_in_registry(simulation_app):
# Import the necessary classes.

from isaaclab_arena.assets.asset_registry import AssetRegistry, DeviceRegistry, RetargeterRegistry
from isaaclab_arena.assets.registries import AssetRegistry, DeviceRegistry, RetargeterRegistry
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
from isaaclab_arena.scene.scene import Scene
Expand Down
13 changes: 8 additions & 5 deletions isaaclab_arena/tests/test_dexsuite_kuka_lift_example.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,18 +13,21 @@ def test_dexsuite_lift_example_in_cli_registry() -> None:
pytest.importorskip(
"isaaclab_tasks.manager_based.manipulation.dexsuite.config.kuka_allegro.dexsuite_kuka_allegro_env_cfg"
)
from isaaclab_arena_environments.cli import ExampleEnvironments
from isaaclab_arena.assets.registries import EnvironmentRegistry
from isaaclab_arena_environments.cli import ensure_environments_registered

assert "dexsuite_lift" in ExampleEnvironments
assert ExampleEnvironments["dexsuite_lift"].name == "dexsuite_lift"
ensure_environments_registered()
env_registry = EnvironmentRegistry()
assert env_registry.is_registered("dexsuite_lift")
assert env_registry.get_component_by_name("dexsuite_lift").name == "dexsuite_lift"


@pytest.mark.with_newton
def test_procedural_assets_registered() -> None:
pytest.importorskip(
"isaaclab_tasks.manager_based.manipulation.dexsuite.config.kuka_allegro.dexsuite_kuka_allegro_env_cfg"
)
from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry

reg = AssetRegistry()
assert reg.is_registered("procedural_table")
Expand All @@ -37,7 +40,7 @@ def test_dexsuite_kuka_lift_task_matches_lift_mdp_flags() -> None:
"isaaclab_tasks.manager_based.manipulation.dexsuite.config.kuka_allegro.dexsuite_kuka_allegro_env_cfg"
)

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.metrics.success_rate import SuccessRateMetric
from isaaclab_arena.tasks.lift_object_task import DexsuiteLiftTask, DexsuiteLiftTerminationsCfg, LiftObjectTask
from isaaclab_arena.utils.pose import Pose, PoseRange
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_duplicate_asset.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
def get_test_environment(num_envs: int, position_1: tuple[float, float, float], position_2: tuple[float, float, float]):
"""Returns a scene with two copies of the same cube object."""

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.franka.franka import FrankaIKEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
Expand Down
29 changes: 29 additions & 0 deletions isaaclab_arena/tests/test_environment_registry.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Copyright (c) 2026, The Isaac Lab Arena Project Developers (https://github.com/isaac-sim/IsaacLab-Arena/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: Apache-2.0

"""Tests that all environments in isaaclab_arena_environments are registered."""

from isaaclab_arena.assets.registries import EnvironmentRegistry
from isaaclab_arena_environments.cli import ensure_environments_registered


def test_environments_registered():
"""All environments in isaaclab_arena_environments are in the registry after ensure_environments_registered()."""
ensure_environments_registered()
env_registry = EnvironmentRegistry()
registered = set(env_registry.get_all_keys())
assert len(registered) > 0, "No environments registered"


def test_environments_registered_twice():
"""Calling ensure_environments_registered() twice should leave the registry unchanged."""
ensure_environments_registered()
env_registry = EnvironmentRegistry()
keys_after_first = set(env_registry.get_all_keys())

ensure_environments_registered()
keys_after_second = set(env_registry.get_all_keys())

assert keys_after_first == keys_after_second
4 changes: 2 additions & 2 deletions isaaclab_arena/tests/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ def _test_set_object_pose_per_env_event(simulation_app):

from isaaclab.managers import EventTermCfg, SceneEntityCfg

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.object_reference import ObjectReference
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
Expand Down Expand Up @@ -118,7 +118,7 @@ def _test_object_moves_with_initial_velocity(simulation_app):
"""Test that a sphere moves with the given initial velocity after reset."""
import isaaclab.sim as sim_utils

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ def get_test_environment(num_envs: int):
isolate task termination logic from the full production environment.
"""

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.g1.g1 import G1WBCAgileJointEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_g1_wbc_embodiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
def get_test_environment(num_envs: int, pink_ik_enabled: bool):
"""Returns a scene which we use for these tests."""

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.g1.g1 import G1WBCJointEmbodiment, G1WBCPinkEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_galbot_embodiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@

def get_galbot_test_environment(num_envs: int = 1):
"""Returns a kitchen scene with Galbot embodiment for testing."""
from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.object_base import ObjectType
from isaaclab_arena.assets.object_reference import ObjectReference
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.common.arm_mode import ArmMode
from isaaclab_arena.embodiments.galbot.galbot import GalbotEmbodiment
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_kuka_allegro_embodiment.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def test_kuka_allegro_registered_in_asset_registry() -> None:
pytest.importorskip(
"isaaclab_tasks.manager_based.manipulation.dexsuite.config.kuka_allegro.dexsuite_kuka_allegro_env_cfg"
)
from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.embodiments.kuka_allegro.kuka_allegro import KukaAllegroEmbodiment

reg = AssetRegistry()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ def _test_g1_locomanip_object_on_destination_termination(simulation_app) -> bool

from isaaclab.managers import SceneEntityCfg

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_object_configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

def _test_object_initial_pose_update(simulation_app):

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.utils.pose import Pose

asset_registry = AssetRegistry()
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_object_of_type_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@

def _test_object_of_type_base(simulation_app):

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.object_base import ObjectType
from isaaclab_arena.assets.object_library import LibraryObject
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_object_on_termination.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ def _test_object_on_destination_termination(simulation_app) -> bool:

from isaaclab.managers import SceneEntityCfg

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.object_reference import ObjectReference
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.embodiments.franka.franka import FrankaIKEmbodiment
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
Expand Down
2 changes: 1 addition & 1 deletion isaaclab_arena/tests/test_object_pose_randomization.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
def _test_object_pose_randomization(simulation_app):
"""Test that object poses are randomized within the specified range."""

from isaaclab_arena.assets.asset_registry import AssetRegistry
from isaaclab_arena.assets.registries import AssetRegistry
from isaaclab_arena.cli.isaaclab_arena_cli import get_isaaclab_arena_cli_parser
from isaaclab_arena.environments.arena_env_builder import ArenaEnvBuilder
from isaaclab_arena.environments.isaaclab_arena_environment import IsaacLabArenaEnvironment
Expand Down
Loading
Loading