From 9da8aef33f2d0f299fa36c80c03ce1c895251546 Mon Sep 17 00:00:00 2001 From: Qian Lin Date: Tue, 14 Jul 2026 00:57:13 -0700 Subject: [PATCH] Add Replicator kitchen backgrounds to background library Discover Replicator/ USDA floorplans and register them as replicator_kitchen_ background assets with a framing viewer cfg. Add yamls in kitchen_bench with replicator background + p&p task. Enable mesh mode for background in relation solver. Signed-off-by: Qian Lin Add replicator kitchen yaml --- isaaclab_arena/assets/background_library.py | 49 +++++++++++ .../test_replicator_background_discovery.py | 25 ++++++ ...eplicator_kitchen_g_shape_banana_bowl.yaml | 74 +++++++++++++++++ .../replicator_kitchen_g_shape_bowl_sink.yaml | 81 +++++++++++++++++++ ...plicator_kitchen_g_shape_mustard_bowl.yaml | 74 +++++++++++++++++ ...plicator_kitchen_l_island_banana_bowl.yaml | 74 +++++++++++++++++ ...replicator_kitchen_l_island_bowl_sink.yaml | 81 +++++++++++++++++++ ...licator_kitchen_l_island_mustard_bowl.yaml | 74 +++++++++++++++++ ...eplicator_kitchen_l_shape_banana_bowl.yaml | 74 +++++++++++++++++ .../replicator_kitchen_l_shape_bowl_sink.yaml | 81 +++++++++++++++++++ ...plicator_kitchen_l_shape_mustard_bowl.yaml | 74 +++++++++++++++++ ...eplicator_kitchen_peninsula_bowl_sink.yaml | 81 +++++++++++++++++++ ...icator_kitchen_peninsula_mustard_bowl.yaml | 74 +++++++++++++++++ ...eplicator_kitchen_u_shape_banana_bowl.yaml | 74 +++++++++++++++++ .../replicator_kitchen_u_shape_bowl_sink.yaml | 81 +++++++++++++++++++ ...plicator_kitchen_u_shape_mustard_bowl.yaml | 74 +++++++++++++++++ 16 files changed, 1145 insertions(+) create mode 100644 isaaclab_arena/tests/test_replicator_background_discovery.py create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_banana_bowl.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_bowl_sink.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_mustard_bowl.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_banana_bowl.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_bowl_sink.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_mustard_bowl.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_banana_bowl.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_bowl_sink.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_mustard_bowl.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_peninsula_bowl_sink.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_peninsula_mustard_bowl.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_banana_bowl.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_bowl_sink.yaml create mode 100644 isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_mustard_bowl.yaml diff --git a/isaaclab_arena/assets/background_library.py b/isaaclab_arena/assets/background_library.py index 7fcaf01c9..79fd602f2 100644 --- a/isaaclab_arena/assets/background_library.py +++ b/isaaclab_arena/assets/background_library.py @@ -3,6 +3,9 @@ # # SPDX-License-Identifier: Apache-2.0 +from __future__ import annotations + +from pathlib import Path from typing import Any import isaaclab.sim as sim_utils @@ -200,6 +203,52 @@ def get_viewer_cfg(self) -> ViewerCfg: return ViewerCfg(eye=(2.75, -5.5, 1.5), lookat=(2.75, -1.4, 0.9)) +_REPLICATOR_ROOT = Path(__file__).resolve().parents[2] / "Replicator" + + +def _discover_replicator_kitchen_usda_paths() -> dict[str, Path]: + """Map ``replicator_`` registry names to flat ``Replicator/*.usda`` paths.""" + paths: dict[str, Path] = {} + if not _REPLICATOR_ROOT.is_dir(): + return paths + for usda_path in sorted(_REPLICATOR_ROOT.glob("*.usda")): + asset_name = f"replicator_{usda_path.stem}" + paths[asset_name] = usda_path.resolve() + return paths + + +class ReplicatorKitchenBackground(LibraryBackground): + """Lightwheel Replicator-generated kitchen floorplan from a flat ``Replicator/*.usda`` file.""" + + tags = ["background", "replicator"] + initial_pose = Pose.identity() + object_min_z = -0.2 + + def get_viewer_cfg(self) -> ViewerCfg: + return ViewerCfg(eye=(0.0, -1.0, 1.35), lookat=(0.0, 0.0, 1.35)) + + +def _register_replicator_kitchen_background(asset_name: str, usda_path: Path) -> None: + """Register one ``replicator_`` background asset class.""" + slug = asset_name.removeprefix("replicator_") + class_suffix = "".join(word.capitalize() for word in slug.split("_")) + + @register_asset + class _ReplicatorKitchenEntry(ReplicatorKitchenBackground): + name = asset_name + usd_path = str(usda_path) + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + _ReplicatorKitchenEntry.__name__ = f"Replicator{class_suffix}" + _ReplicatorKitchenEntry.__qualname__ = _ReplicatorKitchenEntry.__name__ + + +for _asset_name, _usda_path in _discover_replicator_kitchen_usda_paths().items(): + _register_replicator_kitchen_background(_asset_name, _usda_path) + + @register_asset class MapleTableRobolab(LibraryBackground): """ diff --git a/isaaclab_arena/tests/test_replicator_background_discovery.py b/isaaclab_arena/tests/test_replicator_background_discovery.py new file mode 100644 index 000000000..80ea6b3f5 --- /dev/null +++ b/isaaclab_arena/tests/test_replicator_background_discovery.py @@ -0,0 +1,25 @@ +# 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 + + +def test_discover_replicator_kitchen_usda_paths_finds_flat_usda_files(): + from isaaclab_arena.assets.background_library import _discover_replicator_kitchen_usda_paths + + paths = _discover_replicator_kitchen_usda_paths() + assert paths["replicator_kitchen_l_shape"].name == "kitchen_l_shape.usda" + assert all(path.parent.name == "Replicator" for path in paths.values()) + replicator_dir = paths["replicator_kitchen_l_shape"].parent + assert len(paths) == len(list(replicator_dir.glob("*.usda"))) + + +def test_replicator_kitchen_backgrounds_registered(): + from isaaclab_arena.assets.registries import AssetRegistry, ensure_assets_registered + + ensure_assets_registered() + registry = AssetRegistry() + assert registry.is_registered("replicator_kitchen_l_shape") + cls = registry.get_asset_by_name("replicator_kitchen_l_shape") + assert "replicator" in cls.tags + assert cls.usd_path.endswith("kitchen_l_shape.usda") diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_banana_bowl.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_banana_bowl.yaml new file mode 100644 index 000000000..4aff6eb7e --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_banana_bowl.yaml @@ -0,0 +1,74 @@ +# 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 + +env_name: droid_banana_to_bowl_kitchen_g_shape +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_g_shape + params: + collision_mode: mesh +objects: +- id: banana + registry_name: banana_ycb_robolab + params: {} +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: corner_counter + parent_id: kitchen + prim_path: CornerCounter_00_0 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: corner_counter + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: corner_counter + params: + side: negative_y + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 1.57 +- kind: 'on' + subject: banana + reference: corner_counter + params: {} +- kind: 'on' + subject: bowl + reference: corner_counter + params: {} +task: + composition: atomic + description: pick up the banana from the corner counter and place it in the bowl + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: banana + destination_location: bowl + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_bowl_sink.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_bowl_sink.yaml new file mode 100644 index 000000000..aaf6ce7b9 --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_bowl_sink.yaml @@ -0,0 +1,81 @@ +# 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 + +env_name: droid_bowl_to_sink_kitchen_g_shape +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_g_shape + params: + collision_mode: mesh +objects: +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: sink + parent_id: kitchen + prim_path: Sink/BasinBottom + object_type: base + params: {} +- id: sink_counter + parent_id: kitchen + prim_path: CapSurface_02 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: sink + params: {} +- kind: is_anchor + subject: sink_counter + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: sink + params: + side: negative_x + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 0.0 +- kind: 'on' + subject: bowl + reference: sink_counter + params: {} +- kind: next_to + subject: bowl + reference: sink + params: + side: positive_y + distance_m: 0.1 +task: + composition: atomic + description: pick up the bowl from the sink counter and place it in the sink + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: bowl + destination_location: sink + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_mustard_bowl.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_mustard_bowl.yaml new file mode 100644 index 000000000..8dc74e04c --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_g_shape_mustard_bowl.yaml @@ -0,0 +1,74 @@ +# 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 + +env_name: droid_mustard_to_bowl_kitchen_g_shape +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_g_shape + params: + collision_mode: mesh +objects: +- id: mustard_bottle + registry_name: mustard_bottle_hope_robolab + params: {} +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: island_top + parent_id: kitchen + prim_path: CapSurface_03 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: island_top + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: island_top + params: + side: positive_y + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: -1.57 +- kind: 'on' + subject: mustard_bottle + reference: island_top + params: {} +- kind: 'on' + subject: bowl + reference: island_top + params: {} +task: + composition: atomic + description: pick up the mustard bottle from the kitchen island and place it in the bowl + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: mustard_bottle + destination_location: bowl + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_banana_bowl.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_banana_bowl.yaml new file mode 100644 index 000000000..048576f88 --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_banana_bowl.yaml @@ -0,0 +1,74 @@ +# 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 + +env_name: droid_banana_to_bowl_kitchen_l_island +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_l_island + params: + collision_mode: mesh +objects: +- id: banana + registry_name: banana_ycb_robolab + params: {} +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: corner_counter + parent_id: kitchen + prim_path: CornerCounter_00_0 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: corner_counter + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: corner_counter + params: + side: negative_y + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 1.57 +- kind: 'on' + subject: banana + reference: corner_counter + params: {} +- kind: 'on' + subject: bowl + reference: corner_counter + params: {} +task: + composition: atomic + description: pick up the banana from the corner counter and place it in the bowl + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: banana + destination_location: bowl + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_bowl_sink.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_bowl_sink.yaml new file mode 100644 index 000000000..4db2cf517 --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_bowl_sink.yaml @@ -0,0 +1,81 @@ +# 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 + +env_name: droid_bowl_to_sink_kitchen_l_island +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_l_island + params: + collision_mode: mesh +objects: +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: sink + parent_id: kitchen + prim_path: Sink/BasinBottom + object_type: base + params: {} +- id: sink_counter + parent_id: kitchen + prim_path: CapSurface + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: sink + params: {} +- kind: is_anchor + subject: sink_counter + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: sink + params: + side: negative_y + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 1.57 +- kind: 'on' + subject: bowl + reference: sink_counter + params: {} +- kind: next_to + subject: bowl + reference: sink + params: + side: negative_x + distance_m: 0.1 +task: + composition: atomic + description: pick up the bowl from the sink counter and place it in the sink + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: bowl + destination_location: sink + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_mustard_bowl.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_mustard_bowl.yaml new file mode 100644 index 000000000..cee170fd5 --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_island_mustard_bowl.yaml @@ -0,0 +1,74 @@ +# 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 + +env_name: droid_mustard_to_bowl_kitchen_l_island +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_l_island + params: + collision_mode: mesh +objects: +- id: mustard_bottle + registry_name: mustard_bottle_hope_robolab + params: {} +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: island_top + parent_id: kitchen + prim_path: CapSurface_03 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: island_top + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: island_top + params: + side: negative_y + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 1.57 +- kind: 'on' + subject: mustard_bottle + reference: island_top + params: {} +- kind: 'on' + subject: bowl + reference: island_top + params: {} +task: + composition: atomic + description: pick up the mustard bottle from the kitchen island and place it in the bowl + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: mustard_bottle + destination_location: bowl + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_banana_bowl.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_banana_bowl.yaml new file mode 100644 index 000000000..0eb558e27 --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_banana_bowl.yaml @@ -0,0 +1,74 @@ +# 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 + +env_name: droid_banana_to_bowl_kitchen_l_shape +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_l_shape + params: + collision_mode: mesh +objects: +- id: banana + registry_name: banana_ycb_robolab + params: {} +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: corner_counter + parent_id: kitchen + prim_path: CornerCounter_00_0 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: corner_counter + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: corner_counter + params: + side: negative_y + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 1.57 +- kind: 'on' + subject: banana + reference: corner_counter + params: {} +- kind: 'on' + subject: bowl + reference: corner_counter + params: {} +task: + composition: atomic + description: pick up the banana from the corner counter and place it in the bowl + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: banana + destination_location: bowl + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_bowl_sink.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_bowl_sink.yaml new file mode 100644 index 000000000..9d0e888a6 --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_bowl_sink.yaml @@ -0,0 +1,81 @@ +# 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 + +env_name: droid_bowl_to_sink_kitchen_l_shape +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_l_shape + params: + collision_mode: mesh +objects: +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: sink + parent_id: kitchen + prim_path: Sink/BasinBottom + object_type: base + params: {} +- id: sink_counter + parent_id: kitchen + prim_path: CapSurface_02 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: sink + params: {} +- kind: is_anchor + subject: sink_counter + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: sink + params: + side: positive_x + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 3.14 +- kind: 'on' + subject: bowl + reference: sink_counter + params: {} +- kind: next_to + subject: bowl + reference: sink + params: + side: negative_y + distance_m: 0.1 +task: + composition: atomic + description: pick up the bowl from the counter next to the sink and place it in the sink + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: bowl + destination_location: sink + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_mustard_bowl.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_mustard_bowl.yaml new file mode 100644 index 000000000..51ffebf97 --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_l_shape_mustard_bowl.yaml @@ -0,0 +1,74 @@ +# 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 + +env_name: droid_mustard_to_bowl_kitchen_l_shape +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_l_shape + params: + collision_mode: mesh +objects: +- id: mustard_bottle + registry_name: mustard_bottle_hope_robolab + params: {} +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: counter_top + parent_id: kitchen + prim_path: CapSurface + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: counter_top + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: counter_top + params: + side: negative_y + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 1.57 +- kind: 'on' + subject: mustard_bottle + reference: counter_top + params: {} +- kind: 'on' + subject: bowl + reference: counter_top + params: {} +task: + composition: atomic + description: pick up the mustard bottle from the counter and place it in the bowl + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: mustard_bottle + destination_location: bowl + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_peninsula_bowl_sink.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_peninsula_bowl_sink.yaml new file mode 100644 index 000000000..068bff3ab --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_peninsula_bowl_sink.yaml @@ -0,0 +1,81 @@ +# 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 + +env_name: droid_bowl_to_sink_kitchen_peninsula +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_peninsula + params: + collision_mode: mesh +objects: +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: sink + parent_id: kitchen + prim_path: Sink/BasinBottom + object_type: base + params: {} +- id: sink_counter + parent_id: kitchen + prim_path: CapSurface_01 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: sink + params: {} +- kind: is_anchor + subject: sink_counter + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: sink + params: + side: negative_y + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 1.57 +- kind: 'on' + subject: bowl + reference: sink_counter + params: {} +- kind: next_to + subject: bowl + reference: sink + params: + side: negative_x + distance_m: 0.1 +task: + composition: atomic + description: pick up the bowl from the sink counter and place it in the sink + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: bowl + destination_location: sink + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_peninsula_mustard_bowl.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_peninsula_mustard_bowl.yaml new file mode 100644 index 000000000..8a84aebc6 --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_peninsula_mustard_bowl.yaml @@ -0,0 +1,74 @@ +# 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 + +env_name: droid_mustard_to_bowl_kitchen_peninsula +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_peninsula + params: + collision_mode: mesh +objects: +- id: mustard_bottle + registry_name: mustard_bottle_hope_robolab + params: {} +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: island_top + parent_id: kitchen + prim_path: CapSurface_02 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: island_top + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: island_top + params: + side: positive_y + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: -1.57 +- kind: 'on' + subject: mustard_bottle + reference: island_top + params: {} +- kind: 'on' + subject: bowl + reference: island_top + params: {} +task: + composition: atomic + description: pick up the mustard bottle from the island counter and place it in the bowl + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: mustard_bottle + destination_location: bowl + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_banana_bowl.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_banana_bowl.yaml new file mode 100644 index 000000000..d0bff47dd --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_banana_bowl.yaml @@ -0,0 +1,74 @@ +# 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 + +env_name: droid_banana_to_bowl_kitchen_u_shape +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_u_shape + params: + collision_mode: mesh +objects: +- id: banana + registry_name: banana_ycb_robolab + params: {} +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: corner_counter + parent_id: kitchen + prim_path: CornerCounter_00_0 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: corner_counter + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: corner_counter + params: + side: negative_y + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 1.57 +- kind: 'on' + subject: banana + reference: corner_counter + params: {} +- kind: 'on' + subject: bowl + reference: corner_counter + params: {} +task: + composition: atomic + description: pick up the banana from the corner counter and place it in the bowl + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: banana + destination_location: bowl + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_bowl_sink.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_bowl_sink.yaml new file mode 100644 index 000000000..58a1c55b2 --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_bowl_sink.yaml @@ -0,0 +1,81 @@ +# 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 + +env_name: droid_bowl_to_sink_kitchen_u_shape +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_u_shape + params: + collision_mode: mesh +objects: +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: sink + parent_id: kitchen + prim_path: Sink/BasinBottom + object_type: base + params: {} +- id: sink_counter + parent_id: kitchen + prim_path: CapSurface_01 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: sink + params: {} +- kind: is_anchor + subject: sink_counter + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: sink + params: + side: positive_x + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 3.14 +- kind: 'on' + subject: bowl + reference: sink_counter + params: {} +- kind: next_to + subject: bowl + reference: sink + params: + side: negative_y + distance_m: 0.1 +task: + composition: atomic + description: pick up the bowl from the sink counter and place it in the sink + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: bowl + destination_location: sink + background_scene: kitchen diff --git a/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_mustard_bowl.yaml b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_mustard_bowl.yaml new file mode 100644 index 000000000..4dcb96b74 --- /dev/null +++ b/isaaclab_arena_environments/kitchen_bench/replicator_kitchen_u_shape_mustard_bowl.yaml @@ -0,0 +1,74 @@ +# 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 + +env_name: droid_mustard_to_bowl_kitchen_u_shape +embodiment: + id: droid + registry_name: droid_abs_joint_pos + params: + stand_height_m: 0.8 + placement_bbox_stand_only: true +background: + id: kitchen + registry_name: replicator_kitchen_u_shape + params: + collision_mode: mesh +objects: +- id: mustard_bottle + registry_name: mustard_bottle_hope_robolab + params: {} +- id: bowl + registry_name: bowl_ycb_robolab + params: {} +object_references: +- id: floor + parent_id: kitchen + prim_path: KitchenRoom/Floor + object_type: base + params: {} +- id: counter_top + parent_id: kitchen + prim_path: CapSurface_03 + object_type: base + params: {} +relations: +- kind: is_anchor + subject: floor + params: {} +- kind: is_anchor + subject: counter_top + params: {} +- kind: 'on' + subject: droid + reference: floor + params: {} +- kind: next_to + subject: droid + reference: counter_top + params: + side: negative_x + distance_m: 0.15 + tolerance_m: 0.15 +- kind: rotate_around_solution + subject: droid + params: + yaw_rad: 0.0 +- kind: 'on' + subject: mustard_bottle + reference: counter_top + params: {} +- kind: 'on' + subject: bowl + reference: counter_top + params: {} +task: + composition: atomic + description: pick up the mustard bottle from the counter and place it in the bowl + subtasks: + - kind: PickAndPlaceTask + params: + pick_up_object: mustard_bottle + destination_location: bowl + background_scene: kitchen