Skip to content
Closed
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
107 changes: 107 additions & 0 deletions python/bricksim/cli/assemble_brick_expert.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,26 @@ def build_argument_parser() -> argparse.ArgumentParser:
action="store_true",
help="Show assembly goal marker visualizer.",
)
parser.add_argument(
"--randomize-dome-light",
action="store_true",
help="Randomize dome-light HDR texture, intensity, and yaw on reset.",
)
parser.add_argument(
"--randomize-table-material",
action="store_true",
help="Randomize table MDL material on reset.",
)
parser.add_argument(
"--randomize-background-material",
action="store_true",
help="Randomize ground/background MDL material on reset.",
)
parser.add_argument(
"--randomize-scene-background",
action="store_true",
help="Randomize visual-only factory/kitchen/outdoor background presets.",
)
return parser


Expand Down Expand Up @@ -177,6 +197,7 @@ def main() -> int:
simulation_app = app_launcher.app

from isaaclab.envs import ManagerBasedRLEnv
from isaaclab.managers import EventTermCfg

from bricksim.envs.assemble_brick.env import (
AssembleBrickBaseEnvCfg,
Expand All @@ -185,6 +206,12 @@ def main() -> int:
AssembleBrickRGBEnvCfg,
)
from bricksim.envs.assemble_brick.expert import AssembleBrickExpert
from bricksim.mdp.events import (
randomize_dome_light_viral,
randomize_global_material_viral,
randomize_scene_background_viral,
randomize_table_material_viral,
)

env_cfg: AssembleBrickBaseEnvCfg
if args_cli.obs_mode == "state":
Expand All @@ -201,6 +228,86 @@ def main() -> int:
env_cfg.commands.assembly_goal.goals = args_cli.goals
if args_cli.show_goals:
env_cfg.commands.assembly_goal.debug_vis = True
if args_cli.randomize_dome_light:
env_cfg.events.randomize_dome_light_viral = EventTermCfg(
func=randomize_dome_light_viral,
mode="reset",
params={
"prim_path": "/World/light",
"texture_folder_paths": (
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Assets/Skies/Indoor/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Assets/Skies/Clear/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Assets/Skies/Cloudy/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Assets/Skies/Night/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Assets/Skies/Studio/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Environments/2024_1/DomeLights/Clear/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Environments/2024_1/DomeLights/Cloudy/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Environments/2024_1/DomeLights/Indoor/",
),
"intensity_range": (800.0, 2000.0),
"yaw_range": (-3.142, 3.142),
},
)
print("[INFO]: VIRAL-style dome-light randomization enabled")
if args_cli.randomize_table_material:
env_cfg.events.randomize_table_material_viral = EventTermCfg(
func=randomize_table_material_viral,
mode="reset",
params={
"env_relative_prim_paths": ("Table",),
"material_root_path": "/World/Looks/TableVisualRandomization",
"material_folder_paths": (
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Materials/Base/Wood/",
),
"material_name_prefix": "TableMaterial",
},
)
print("[INFO]: VIRAL-style table material randomization enabled")
if args_cli.randomize_background_material:
env_cfg.events.randomize_background_material_viral = EventTermCfg(
func=randomize_global_material_viral,
mode="reset",
params={
"prim_paths": ("/World/GroundPlane",),
"material_root_path": "/World/Looks/BackgroundVisualRandomization",
"material_folder_paths": (
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Materials/Base/Carpet/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Materials/Base/Masonry/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Materials/Base/Natural/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Materials/Base/Stone/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Materials/Base/Wall_Board/",
"https://omniverse-content-production.s3-us-west-2.amazonaws.com/"
"Assets/Isaac/4.5/NVIDIA/Materials/Base/Wood/",
),
"material_name_prefix": "BackgroundMaterial",
"label": "background",
},
)
print("[INFO]: VIRAL-style background material randomization enabled")
if args_cli.randomize_scene_background:
env_cfg.events.randomize_scene_background_viral = EventTermCfg(
func=randomize_scene_background_viral,
mode="reset",
params={
"root_path": "/World/VisualSceneBackground",
"preset_names": ("factory", "kitchen", "outdoor"),
},
)
print("[INFO]: VIRAL-style scene background randomization enabled")
env = ManagerBasedRLEnv(cfg=env_cfg)
expert = AssembleBrickExpert()

Expand Down
Loading