From 0cf11d6bdf10c52677407a27aca5ee2165ecb38c Mon Sep 17 00:00:00 2001 From: Peter Du Date: Tue, 21 Oct 2025 15:25:04 -0700 Subject: [PATCH 01/21] test additional rendering steps in reset --- source/isaaclab/isaaclab/envs/manager_based_env.py | 3 ++- .../stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/manager_based_env.py b/source/isaaclab/isaaclab/envs/manager_based_env.py index 9ddc538aa41..b7e83ba0a60 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env.py @@ -354,7 +354,8 @@ def reset( self.sim.forward() # if sensors are added to the scene, make sure we render to reflect changes in reset if self.sim.has_rtx_sensors() and self.cfg.rerender_on_reset: - self.sim.render() + for i in range(30): + self.sim.render() # trigger recorder terms for post-reset calls self.recorder_manager.record_post_reset(env_ids) diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py index 7f990c5fd3a..272a7009d26 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py @@ -232,7 +232,7 @@ def __post_init__(self): # Set settings for camera rendering self.rerender_on_reset = True - self.sim.render.antialiasing_mode = "OFF" # disable dlss + self.sim.render.antialiasing_mode = "DLAA" # disable dlss # List of image observations in policy observations self.image_obs_list = ["table_cam", "wrist_cam"] From ae0b64a99c10e265c4279d6ce9ef74043bb3513c Mon Sep 17 00:00:00 2001 From: Peter Du Date: Wed, 22 Oct 2025 13:56:04 -0700 Subject: [PATCH 02/21] add num_rerenders_on_reset parameter --- .../isaaclab/isaaclab/envs/direct_rl_env.py | 29 +++++++++++++++--- .../isaaclab/envs/direct_rl_env_cfg.py | 13 +++++++- .../isaaclab/envs/manager_based_env.py | 30 ++++++++++++++++--- .../isaaclab/envs/manager_based_env_cfg.py | 13 +++++++- .../isaaclab/envs/manager_based_rl_env.py | 13 ++++++-- .../exhaustpipe_gr1t2_base_env_cfg.py | 6 ++-- .../pick_place/nutpour_gr1t2_base_env_cfg.py | 4 +-- .../stack_ik_rel_visuomotor_cosmos_env_cfg.py | 4 +-- .../franka/stack_ik_rel_visuomotor_env_cfg.py | 4 +-- .../config/galbot/stack_rmp_rel_env_cfg.py | 4 +-- 10 files changed, 97 insertions(+), 23 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index e43c4db7a28..744f8e3961b 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -219,6 +219,12 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # video matches the simulation self.metadata["render_fps"] = 1 / self.step_dt + # show deprecation message for rerender_on_reset + if self.cfg.rerender_on_reset: + omni.log.warn( + "DirectRLEnvCfg.rerender_on_reset is deprecated. Use DirectRLEnvCfg.num_rerenders_on_reset instead." + ) + # print the environment information print("[INFO]: Completed setting up the environment...") @@ -300,8 +306,15 @@ def reset(self, seed: int | None = None, options: dict[str, Any] | None = None) self.sim.forward() # if sensors are added to the scene, make sure we render to reflect changes in reset - if self.sim.has_rtx_sensors() and self.cfg.rerender_on_reset: - self.sim.render() + if self.sim.has_rtx_sensors(): + if self.cfg.num_rerenders_on_reset > 0: + for i in range(self.cfg.num_rerenders_on_reset): + self.sim.render() + elif self.cfg.rerender_on_reset: + omni.log.warn( + "DirectRLEnvCfg.rerender_on_reset is deprecated. Use DirectRLEnvCfg.num_rerenders_on_reset instead." + ) + self.sim.render() if self.cfg.wait_for_textures and self.sim.has_rtx_sensors(): while SimulationManager.assets_loading(): @@ -377,8 +390,16 @@ def step(self, action: torch.Tensor) -> VecEnvStepReturn: if len(reset_env_ids) > 0: self._reset_idx(reset_env_ids) # if sensors are added to the scene, make sure we render to reflect changes in reset - if self.sim.has_rtx_sensors() and self.cfg.rerender_on_reset: - self.sim.render() + if self.sim.has_rtx_sensors(): + if self.cfg.num_rerenders_on_reset > 0: + for i in range(self.cfg.num_rerenders_on_reset): + self.sim.render() + elif self.cfg.rerender_on_reset: + omni.log.warn( + "DirectRLEnvCfg.rerender_on_reset is deprecated. Use DirectRLEnvCfg.num_rerenders_on_reset" + " instead." + ) + self.sim.render() # post-step: step interval event if self.cfg.events: diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py b/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py index 33297a228af..748062f4980 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py @@ -213,7 +213,9 @@ class DirectRLEnvCfg: """ rerender_on_reset: bool = False - """Whether a render step is performed again after at least one environment has been reset. + """[DEPRECATED] Use num_rerenders_on_reset instead. + + Whether a render step is performed again after at least one environment has been reset. Defaults to False, which means no render step will be performed after reset. * When this is False, data collected from sensors after performing reset will be stale and will not reflect the @@ -221,7 +223,16 @@ class DirectRLEnvCfg: * When this is True, an extra render step will be performed to update the sensor data to reflect the latest states from the reset. This comes at a cost of performance as an additional render step will be performed after each time an environment is reset. + """ + num_rerenders_on_reset: int = 0 + """Number of render steps to perform after reset. Defaults to 0, which means no render step will be performed after reset. + + * When this is 0, no render step will be performed after reset. Data collected from sensors after performing reset will be stale and will not reflect the + latest states in simulation caused by the reset. + * When this is greater than 0, the specified number of extra render steps will be performed to update the sensor data + to reflect the latest states from the reset. This comes at a cost of performance as additional render + steps will be performed after each time an environment is reset. """ wait_for_textures: bool = True diff --git a/source/isaaclab/isaaclab/envs/manager_based_env.py b/source/isaaclab/isaaclab/envs/manager_based_env.py index b7e83ba0a60..d5c3ed54280 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env.py @@ -190,6 +190,13 @@ def __init__(self, cfg: ManagerBasedEnvCfg): if self.cfg.export_io_descriptors: self.export_IO_descriptors() + # show deprecation message for rerender_on_reset + if self.cfg.rerender_on_reset: + omni.log.warn( + "ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use ManagerBasedEnvCfg.num_rerenders_on_reset" + " instead." + ) + def __del__(self): """Cleanup for the environment.""" self.close() @@ -353,8 +360,15 @@ def reset( self.scene.write_data_to_sim() self.sim.forward() # if sensors are added to the scene, make sure we render to reflect changes in reset - if self.sim.has_rtx_sensors() and self.cfg.rerender_on_reset: - for i in range(30): + if self.sim.has_rtx_sensors(): + if self.cfg.num_rerenders_on_reset > 0: + for i in range(self.cfg.num_rerenders_on_reset): + self.sim.render() + elif self.cfg.rerender_on_reset: + omni.log.warn( + "ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use ManagerBasedEnvCfg.num_rerenders_on_reset" + " instead." + ) self.sim.render() # trigger recorder terms for post-reset calls @@ -414,8 +428,16 @@ def reset_to( self.sim.forward() # if sensors are added to the scene, make sure we render to reflect changes in reset - if self.sim.has_rtx_sensors() and self.cfg.rerender_on_reset: - self.sim.render() + if self.sim.has_rtx_sensors(): + if self.cfg.num_rerenders_on_reset > 0: + for i in range(self.cfg.num_rerenders_on_reset): + self.sim.render() + elif self.cfg.rerender_on_reset: + omni.log.warn( + "ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use ManagerBasedEnvCfg.num_rerenders_on_reset" + " instead." + ) + self.sim.render() # trigger recorder terms for post-reset calls self.recorder_manager.record_post_reset(env_ids) diff --git a/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py b/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py index a7200a3d1d2..52628a316b3 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py @@ -106,7 +106,9 @@ class ManagerBasedEnvCfg: """ rerender_on_reset: bool = False - """Whether a render step is performed again after at least one environment has been reset. + """[DEPRECATED] Use num_rerenders_on_reset instead. + + Whether a render step is performed again after at least one environment has been reset. Defaults to False, which means no render step will be performed after reset. * When this is False, data collected from sensors after performing reset will be stale and will not reflect the @@ -114,7 +116,16 @@ class ManagerBasedEnvCfg: * When this is True, an extra render step will be performed to update the sensor data to reflect the latest states from the reset. This comes at a cost of performance as an additional render step will be performed after each time an environment is reset. + """ + num_rerenders_on_reset: int = 0 + """Number of render steps to perform after reset. Defaults to 0, which means no render step will be performed after reset. + + * When this is 0, no render step will be performed after reset. Data collected from sensors after performing reset will be stale and will not reflect the + latest states in simulation caused by the reset. + * When this is greater than 0, the specified number of extra render steps will be performed to update the sensor data + to reflect the latest states from the reset. This comes at a cost of performance as additional render + steps will be performed after each time an environment is reset. """ wait_for_textures: bool = True diff --git a/source/isaaclab/isaaclab/envs/manager_based_rl_env.py b/source/isaaclab/isaaclab/envs/manager_based_rl_env.py index 634bec4cae9..bac1cd19929 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_rl_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_rl_env.py @@ -13,6 +13,7 @@ from collections.abc import Sequence from typing import Any, ClassVar +import omni.log from isaacsim.core.version import get_version from isaaclab.managers import CommandManager, CurriculumManager, RewardManager, TerminationManager @@ -222,8 +223,16 @@ def step(self, action: torch.Tensor) -> VecEnvStepReturn: self._reset_idx(reset_env_ids) # if sensors are added to the scene, make sure we render to reflect changes in reset - if self.sim.has_rtx_sensors() and self.cfg.rerender_on_reset: - self.sim.render() + if self.sim.has_rtx_sensors(): + if self.cfg.num_rerenders_on_reset > 0: + for i in range(self.cfg.num_rerenders_on_reset): + self.sim.render() + elif self.cfg.rerender_on_reset: + omni.log.warn( + "ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + " ManagerBasedEnvCfg.num_rerenders_on_reset instead." + ) + self.sim.render() # trigger recorder terms for post-reset calls self.recorder_manager.record_post_reset(reset_env_ids) diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/pick_place/exhaustpipe_gr1t2_base_env_cfg.py b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/pick_place/exhaustpipe_gr1t2_base_env_cfg.py index ed1f0f06130..cebff8baf2d 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/pick_place/exhaustpipe_gr1t2_base_env_cfg.py +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/pick_place/exhaustpipe_gr1t2_base_env_cfg.py @@ -320,9 +320,9 @@ def __post_init__(self): self.sim.dt = 1 / 100 self.sim.render_interval = 2 - # # Set settings for camera rendering - self.rerender_on_reset = True - self.sim.render.antialiasing_mode = "OFF" # disable dlss + # Set settings for camera rendering + self.num_rerenders_on_reset = 3 + self.sim.render.antialiasing_mode = "DLAA" # Use DLAA for higher quality rendering # List of image observations in policy observations self.image_obs_list = ["robot_pov_cam"] diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/pick_place/nutpour_gr1t2_base_env_cfg.py b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/pick_place/nutpour_gr1t2_base_env_cfg.py index ffa7929c953..4df465ce78b 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/pick_place/nutpour_gr1t2_base_env_cfg.py +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/pick_place/nutpour_gr1t2_base_env_cfg.py @@ -356,8 +356,8 @@ def __post_init__(self): self.sim.render_interval = 2 # Set settings for camera rendering - self.rerender_on_reset = True - self.sim.render.antialiasing_mode = "OFF" # disable dlss + self.num_rerenders_on_reset = 3 + self.sim.render.antialiasing_mode = "DLAA" # Use DLAA for higher quality rendering # List of image observations in policy observations self.image_obs_list = ["robot_pov_cam"] diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_cosmos_env_cfg.py b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_cosmos_env_cfg.py index 6dda2c8b427..461af521ba4 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_cosmos_env_cfg.py +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_cosmos_env_cfg.py @@ -156,8 +156,8 @@ def __post_init__(self): ) # Set settings for camera rendering - self.rerender_on_reset = True - self.sim.render.antialiasing_mode = "OFF" # disable dlss + self.num_rerenders_on_reset = 3 + self.sim.render.antialiasing_mode = "DLAA" # Use DLAA for higher quality rendering # List of image observations in policy observations self.image_obs_list = ["table_cam", "wrist_cam"] diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py index 272a7009d26..12a8b8c6df3 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py @@ -231,8 +231,8 @@ def __post_init__(self): ) # Set settings for camera rendering - self.rerender_on_reset = True - self.sim.render.antialiasing_mode = "DLAA" # disable dlss + self.num_rerenders_on_reset = 3 + self.sim.render.antialiasing_mode = "DLAA" # Use DLAA for higher quality rendering # List of image observations in policy observations self.image_obs_list = ["table_cam", "wrist_cam"] diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/galbot/stack_rmp_rel_env_cfg.py b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/galbot/stack_rmp_rel_env_cfg.py index 7aafc6990f3..b76b96b2b40 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/galbot/stack_rmp_rel_env_cfg.py +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/galbot/stack_rmp_rel_env_cfg.py @@ -230,8 +230,8 @@ def __post_init__(self): ) # Set settings for camera rendering - self.rerender_on_reset = True - self.sim.render.antialiasing_mode = "OFF" # disable dlss + self.num_rerenders_on_reset = 3 + self.sim.render.antialiasing_mode = "DLAA" # Use DLAA for higher quality rendering # List of image observations in policy observations self.image_obs_list = ["ego_cam", "left_wrist_cam", "right_wrist_cam"] From 0b098005b45f95b58b5638572fc12c208871952d Mon Sep 17 00:00:00 2001 From: Peter Du Date: Wed, 22 Oct 2025 14:02:34 -0700 Subject: [PATCH 03/21] update deprecation msg --- source/isaaclab/isaaclab/envs/direct_rl_env.py | 10 ++++++---- source/isaaclab/isaaclab/envs/manager_based_env.py | 12 ++++++------ .../isaaclab/isaaclab/envs/manager_based_rl_env.py | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index 744f8e3961b..8765e6a5f99 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -222,7 +222,8 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: omni.log.warn( - "DirectRLEnvCfg.rerender_on_reset is deprecated. Use DirectRLEnvCfg.num_rerenders_on_reset instead." + "[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" + " DirectRLEnvCfg.num_rerenders_on_reset instead." ) # print the environment information @@ -312,7 +313,8 @@ def reset(self, seed: int | None = None, options: dict[str, Any] | None = None) self.sim.render() elif self.cfg.rerender_on_reset: omni.log.warn( - "DirectRLEnvCfg.rerender_on_reset is deprecated. Use DirectRLEnvCfg.num_rerenders_on_reset instead." + "[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" + " DirectRLEnvCfg.num_rerenders_on_reset instead." ) self.sim.render() @@ -396,8 +398,8 @@ def step(self, action: torch.Tensor) -> VecEnvStepReturn: self.sim.render() elif self.cfg.rerender_on_reset: omni.log.warn( - "DirectRLEnvCfg.rerender_on_reset is deprecated. Use DirectRLEnvCfg.num_rerenders_on_reset" - " instead." + "[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" + " DirectRLEnvCfg.num_rerenders_on_reset instead." ) self.sim.render() diff --git a/source/isaaclab/isaaclab/envs/manager_based_env.py b/source/isaaclab/isaaclab/envs/manager_based_env.py index d5c3ed54280..35c1d9dcfa6 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env.py @@ -193,8 +193,8 @@ def __init__(self, cfg: ManagerBasedEnvCfg): # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: omni.log.warn( - "ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use ManagerBasedEnvCfg.num_rerenders_on_reset" - " instead." + "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + " ManagerBasedEnvCfg.num_rerenders_on_reset instead." ) def __del__(self): @@ -366,8 +366,8 @@ def reset( self.sim.render() elif self.cfg.rerender_on_reset: omni.log.warn( - "ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use ManagerBasedEnvCfg.num_rerenders_on_reset" - " instead." + "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + " ManagerBasedEnvCfg.num_rerenders_on_reset instead." ) self.sim.render() @@ -434,8 +434,8 @@ def reset_to( self.sim.render() elif self.cfg.rerender_on_reset: omni.log.warn( - "ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use ManagerBasedEnvCfg.num_rerenders_on_reset" - " instead." + "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + " ManagerBasedEnvCfg.num_rerenders_on_reset instead." ) self.sim.render() diff --git a/source/isaaclab/isaaclab/envs/manager_based_rl_env.py b/source/isaaclab/isaaclab/envs/manager_based_rl_env.py index bac1cd19929..293d4024300 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_rl_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_rl_env.py @@ -229,7 +229,7 @@ def step(self, action: torch.Tensor) -> VecEnvStepReturn: self.sim.render() elif self.cfg.rerender_on_reset: omni.log.warn( - "ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" " ManagerBasedEnvCfg.num_rerenders_on_reset instead." ) self.sim.render() From 90f521e2a84152fd94650f4e69e525d64447c573 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Thu, 23 Oct 2025 10:49:09 -0700 Subject: [PATCH 04/21] update change logs --- source/isaaclab/config/extension.toml | 2 +- source/isaaclab/docs/CHANGELOG.rst | 15 +++++++++++++++ source/isaaclab_tasks/config/extension.toml | 2 +- source/isaaclab_tasks/docs/CHANGELOG.rst | 9 +++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/source/isaaclab/config/extension.toml b/source/isaaclab/config/extension.toml index d2c0e84fecd..cbc2de67560 100644 --- a/source/isaaclab/config/extension.toml +++ b/source/isaaclab/config/extension.toml @@ -1,7 +1,7 @@ [package] # Note: Semantic Versioning is used: https://semver.org/ -version = "0.47.1" +version = "0.47.2" # Description title = "Isaac Lab framework for Robot Learning" diff --git a/source/isaaclab/docs/CHANGELOG.rst b/source/isaaclab/docs/CHANGELOG.rst index eb33e88773f..e8acfbf5468 100644 --- a/source/isaaclab/docs/CHANGELOG.rst +++ b/source/isaaclab/docs/CHANGELOG.rst @@ -1,6 +1,21 @@ Changelog --------- +0.47.2 (2025-10-23) +~~~~~~~~~~~~~~~~~~~ + +Added +^^^^^ + +* Added ``num_rerenders_on_reset`` parameter to ManagerBasedEnvCfg and DirectRLEnvCfg to configure the number + of render steps to perform after reset. This enables more control over DLSS rendering behavior after reset. + +Changed +^^^^^^^ + +* Added deprecation warning for ``rerender_on_reset`` parameter in ManagerBasedEnv and DirectRLEnv. + + 0.47.1 (2025-10-17) ~~~~~~~~~~~~~~~~~~~ diff --git a/source/isaaclab_tasks/config/extension.toml b/source/isaaclab_tasks/config/extension.toml index c1fd2d9226f..4d13088bfe0 100644 --- a/source/isaaclab_tasks/config/extension.toml +++ b/source/isaaclab_tasks/config/extension.toml @@ -1,7 +1,7 @@ [package] # Note: Semantic Versioning is used: https://semver.org/ -version = "0.11.1" +version = "0.11.2" # Description title = "Isaac Lab Environments" diff --git a/source/isaaclab_tasks/docs/CHANGELOG.rst b/source/isaaclab_tasks/docs/CHANGELOG.rst index 97170ffb6d7..c1201b77f76 100644 --- a/source/isaaclab_tasks/docs/CHANGELOG.rst +++ b/source/isaaclab_tasks/docs/CHANGELOG.rst @@ -1,6 +1,15 @@ Changelog --------- +0.11.2 (2025-10-23) +~~~~~~~~~~~~~~~~~~~~ + +Changed +^^^^^^^ + +* Changed to use of ``num_rerenders_on_reset`` and ``DLAA`` in visuomotor imitation learning environments. + + 0.11.1 (2025-09-24) ~~~~~~~~~~~~~~~~~~~~ From 1a0e725b5db686211b2760e21d0b960a76103999 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Mon, 27 Oct 2025 10:51:17 -0700 Subject: [PATCH 05/21] restore cosmos env --- .../config/franka/stack_ik_rel_visuomotor_cosmos_env_cfg.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_cosmos_env_cfg.py b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_cosmos_env_cfg.py index 461af521ba4..d8243e53388 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_cosmos_env_cfg.py +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_cosmos_env_cfg.py @@ -156,8 +156,8 @@ def __post_init__(self): ) # Set settings for camera rendering - self.num_rerenders_on_reset = 3 - self.sim.render.antialiasing_mode = "DLAA" # Use DLAA for higher quality rendering + self.num_rerenders_on_reset = 1 + self.sim.render.antialiasing_mode = "OFF" # List of image observations in policy observations self.image_obs_list = ["table_cam", "wrist_cam"] From 4de32568eeff630c255e615921ad49a4be9ecdfa Mon Sep 17 00:00:00 2001 From: Peter Du Date: Mon, 27 Oct 2025 11:02:00 -0700 Subject: [PATCH 06/21] use sphinx deprecation tag and simplify rerender_on_reset check --- .../isaaclab/isaaclab/envs/direct_rl_env.py | 23 ++++--------------- .../isaaclab/envs/direct_rl_env_cfg.py | 12 +++++++--- .../isaaclab/envs/manager_based_env.py | 23 ++++--------------- .../isaaclab/envs/manager_based_env_cfg.py | 12 +++++++--- .../isaaclab/envs/manager_based_rl_env.py | 11 ++------- 5 files changed, 30 insertions(+), 51 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index 8765e6a5f99..a81257b8096 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -225,6 +225,7 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs "[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" " DirectRLEnvCfg.num_rerenders_on_reset instead." ) + self.cfg.num_rerenders_on_reset = 1 # print the environment information print("[INFO]: Completed setting up the environment...") @@ -307,15 +308,8 @@ def reset(self, seed: int | None = None, options: dict[str, Any] | None = None) self.sim.forward() # if sensors are added to the scene, make sure we render to reflect changes in reset - if self.sim.has_rtx_sensors(): - if self.cfg.num_rerenders_on_reset > 0: - for i in range(self.cfg.num_rerenders_on_reset): - self.sim.render() - elif self.cfg.rerender_on_reset: - omni.log.warn( - "[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" - " DirectRLEnvCfg.num_rerenders_on_reset instead." - ) + if self.sim.has_rtx_sensors() and self.cfg.num_rerenders_on_reset > 0: + for _ in range(self.cfg.num_rerenders_on_reset): self.sim.render() if self.cfg.wait_for_textures and self.sim.has_rtx_sensors(): @@ -392,15 +386,8 @@ def step(self, action: torch.Tensor) -> VecEnvStepReturn: if len(reset_env_ids) > 0: self._reset_idx(reset_env_ids) # if sensors are added to the scene, make sure we render to reflect changes in reset - if self.sim.has_rtx_sensors(): - if self.cfg.num_rerenders_on_reset > 0: - for i in range(self.cfg.num_rerenders_on_reset): - self.sim.render() - elif self.cfg.rerender_on_reset: - omni.log.warn( - "[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" - " DirectRLEnvCfg.num_rerenders_on_reset instead." - ) + if self.sim.has_rtx_sensors() and self.cfg.num_rerenders_on_reset > 0: + for _ in range(self.cfg.num_rerenders_on_reset): self.sim.render() # post-step: step interval event diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py b/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py index 748062f4980..17c6d0153c5 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py @@ -213,9 +213,7 @@ class DirectRLEnvCfg: """ rerender_on_reset: bool = False - """[DEPRECATED] Use num_rerenders_on_reset instead. - - Whether a render step is performed again after at least one environment has been reset. + """Whether a render step is performed again after at least one environment has been reset. Defaults to False, which means no render step will be performed after reset. * When this is False, data collected from sensors after performing reset will be stale and will not reflect the @@ -223,6 +221,14 @@ class DirectRLEnvCfg: * When this is True, an extra render step will be performed to update the sensor data to reflect the latest states from the reset. This comes at a cost of performance as an additional render step will be performed after each time an environment is reset. + + .. deprecated:: 0.47.2 + + This attribute is deprecated and will be removed in the future. Please use + :attr:`num_rerenders_on_reset` instead. + + To get the same behaviour as setting this parameter to ``True`` or ``False``, set + :attr:`num_rerenders_on_reset` to 1 or 0, respectively. """ num_rerenders_on_reset: int = 0 diff --git a/source/isaaclab/isaaclab/envs/manager_based_env.py b/source/isaaclab/isaaclab/envs/manager_based_env.py index 35c1d9dcfa6..6e00c1e4a8d 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env.py @@ -196,6 +196,7 @@ def __init__(self, cfg: ManagerBasedEnvCfg): "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" " ManagerBasedEnvCfg.num_rerenders_on_reset instead." ) + self.cfg.num_rerenders_on_reset = 1 def __del__(self): """Cleanup for the environment.""" @@ -360,15 +361,8 @@ def reset( self.scene.write_data_to_sim() self.sim.forward() # if sensors are added to the scene, make sure we render to reflect changes in reset - if self.sim.has_rtx_sensors(): - if self.cfg.num_rerenders_on_reset > 0: - for i in range(self.cfg.num_rerenders_on_reset): - self.sim.render() - elif self.cfg.rerender_on_reset: - omni.log.warn( - "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" - " ManagerBasedEnvCfg.num_rerenders_on_reset instead." - ) + if self.sim.has_rtx_sensors() and self.cfg.num_rerenders_on_reset > 0: + for _ in range(self.cfg.num_rerenders_on_reset): self.sim.render() # trigger recorder terms for post-reset calls @@ -428,15 +422,8 @@ def reset_to( self.sim.forward() # if sensors are added to the scene, make sure we render to reflect changes in reset - if self.sim.has_rtx_sensors(): - if self.cfg.num_rerenders_on_reset > 0: - for i in range(self.cfg.num_rerenders_on_reset): - self.sim.render() - elif self.cfg.rerender_on_reset: - omni.log.warn( - "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" - " ManagerBasedEnvCfg.num_rerenders_on_reset instead." - ) + if self.sim.has_rtx_sensors() and self.cfg.num_rerenders_on_reset > 0: + for _ in range(self.cfg.num_rerenders_on_reset): self.sim.render() # trigger recorder terms for post-reset calls diff --git a/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py b/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py index 52628a316b3..1cda8e96b19 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py @@ -106,9 +106,7 @@ class ManagerBasedEnvCfg: """ rerender_on_reset: bool = False - """[DEPRECATED] Use num_rerenders_on_reset instead. - - Whether a render step is performed again after at least one environment has been reset. + """Whether a render step is performed again after at least one environment has been reset. Defaults to False, which means no render step will be performed after reset. * When this is False, data collected from sensors after performing reset will be stale and will not reflect the @@ -116,6 +114,14 @@ class ManagerBasedEnvCfg: * When this is True, an extra render step will be performed to update the sensor data to reflect the latest states from the reset. This comes at a cost of performance as an additional render step will be performed after each time an environment is reset. + + .. deprecated:: 0.47.2 + + This attribute is deprecated and will be removed in the future. Please use + :attr:`num_rerenders_on_reset` instead. + + To get the same behaviour as setting this parameter to ``True`` or ``False``, set + :attr:`num_rerenders_on_reset` to 1 or 0, respectively. """ num_rerenders_on_reset: int = 0 diff --git a/source/isaaclab/isaaclab/envs/manager_based_rl_env.py b/source/isaaclab/isaaclab/envs/manager_based_rl_env.py index 293d4024300..839c2be2f8f 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_rl_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_rl_env.py @@ -223,15 +223,8 @@ def step(self, action: torch.Tensor) -> VecEnvStepReturn: self._reset_idx(reset_env_ids) # if sensors are added to the scene, make sure we render to reflect changes in reset - if self.sim.has_rtx_sensors(): - if self.cfg.num_rerenders_on_reset > 0: - for i in range(self.cfg.num_rerenders_on_reset): - self.sim.render() - elif self.cfg.rerender_on_reset: - omni.log.warn( - "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" - " ManagerBasedEnvCfg.num_rerenders_on_reset instead." - ) + if self.sim.has_rtx_sensors() and self.cfg.num_rerenders_on_reset > 0: + for _ in range(self.cfg.num_rerenders_on_reset): self.sim.render() # trigger recorder terms for post-reset calls From e865f81fe019ce65c43ab5311a279d5272ca0d90 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Mon, 27 Oct 2025 11:25:30 -0700 Subject: [PATCH 07/21] use python warning --- source/isaaclab/isaaclab/envs/direct_rl_env.py | 8 +++++--- source/isaaclab/isaaclab/envs/manager_based_env.py | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index a81257b8096..74153e20b62 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -11,6 +11,7 @@ import math import numpy as np import torch +import warnings import weakref from abc import abstractmethod from collections.abc import Sequence @@ -221,9 +222,10 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: - omni.log.warn( - "[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" - " DirectRLEnvCfg.num_rerenders_on_reset instead." + warnings.warn( + f"\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m", + FutureWarning, + stacklevel=2, ) self.cfg.num_rerenders_on_reset = 1 diff --git a/source/isaaclab/isaaclab/envs/manager_based_env.py b/source/isaaclab/isaaclab/envs/manager_based_env.py index 6e00c1e4a8d..19fd7bbc2fc 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env.py @@ -5,6 +5,7 @@ import builtins import torch +import warnings from collections.abc import Sequence from typing import Any @@ -192,9 +193,10 @@ def __init__(self, cfg: ManagerBasedEnvCfg): # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: - omni.log.warn( - "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" - " ManagerBasedEnvCfg.num_rerenders_on_reset instead." + warnings.warn( + "\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m", + FutureWarning, + stacklevel=2, ) self.cfg.num_rerenders_on_reset = 1 From fe5d986d8b185943b83c8ca28c33460feffeb78d Mon Sep 17 00:00:00 2001 From: Peter Du Date: Mon, 27 Oct 2025 11:27:52 -0700 Subject: [PATCH 08/21] lint --- source/isaaclab/isaaclab/envs/direct_rl_env.py | 3 ++- source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py | 2 +- source/isaaclab/isaaclab/envs/manager_based_env.py | 3 ++- source/isaaclab/isaaclab/envs/manager_based_env_cfg.py | 2 +- source/isaaclab/isaaclab/envs/manager_based_rl_env.py | 1 - 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index 74153e20b62..c61294f6f9b 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -223,7 +223,8 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: warnings.warn( - f"\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m", + "\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + " ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m", FutureWarning, stacklevel=2, ) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py b/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py index 17c6d0153c5..e41bf9ed8fb 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py @@ -223,7 +223,7 @@ class DirectRLEnvCfg: step will be performed after each time an environment is reset. .. deprecated:: 0.47.2 - + This attribute is deprecated and will be removed in the future. Please use :attr:`num_rerenders_on_reset` instead. diff --git a/source/isaaclab/isaaclab/envs/manager_based_env.py b/source/isaaclab/isaaclab/envs/manager_based_env.py index 19fd7bbc2fc..ff45e02755a 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env.py @@ -194,7 +194,8 @@ def __init__(self, cfg: ManagerBasedEnvCfg): # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: warnings.warn( - "\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m", + "\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + " ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m", FutureWarning, stacklevel=2, ) diff --git a/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py b/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py index 1cda8e96b19..42bee61da50 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py @@ -116,7 +116,7 @@ class ManagerBasedEnvCfg: step will be performed after each time an environment is reset. .. deprecated:: 0.47.2 - + This attribute is deprecated and will be removed in the future. Please use :attr:`num_rerenders_on_reset` instead. diff --git a/source/isaaclab/isaaclab/envs/manager_based_rl_env.py b/source/isaaclab/isaaclab/envs/manager_based_rl_env.py index 839c2be2f8f..861072dec0a 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_rl_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_rl_env.py @@ -13,7 +13,6 @@ from collections.abc import Sequence from typing import Any, ClassVar -import omni.log from isaacsim.core.version import get_version from isaaclab.managers import CommandManager, CurriculumManager, RewardManager, TerminationManager From cb80cc12541a72b2e18470c6c9321c5228c34a22 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Mon, 27 Oct 2025 11:31:38 -0700 Subject: [PATCH 09/21] fix deprecation warning msg for DirectRLEnv --- source/isaaclab/isaaclab/envs/direct_rl_env.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index c61294f6f9b..b249b8aed56 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -223,8 +223,8 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: warnings.warn( - "\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" - " ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m", + "\033[93m\033[1m[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" + " DirectRLEnvCfg.num_rerenders_on_reset instead.\033[0m", FutureWarning, stacklevel=2, ) From 01506bcdcd07b6409cc0aa5ca689c0bd1c4592eb Mon Sep 17 00:00:00 2001 From: Peter Du Date: Mon, 27 Oct 2025 11:33:25 -0700 Subject: [PATCH 10/21] sphinx formatting --- source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py | 1 - source/isaaclab/isaaclab/envs/manager_based_env_cfg.py | 1 - 2 files changed, 2 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py b/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py index e41bf9ed8fb..0859153cf39 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py @@ -223,7 +223,6 @@ class DirectRLEnvCfg: step will be performed after each time an environment is reset. .. deprecated:: 0.47.2 - This attribute is deprecated and will be removed in the future. Please use :attr:`num_rerenders_on_reset` instead. diff --git a/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py b/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py index 42bee61da50..d813babd02f 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py @@ -116,7 +116,6 @@ class ManagerBasedEnvCfg: step will be performed after each time an environment is reset. .. deprecated:: 0.47.2 - This attribute is deprecated and will be removed in the future. Please use :attr:`num_rerenders_on_reset` instead. From 7a683aff57d5b843f492df42c9e649ba8ad21d55 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Wed, 29 Oct 2025 11:55:28 -0700 Subject: [PATCH 11/21] update changelogs --- source/isaaclab/config/extension.toml | 2 +- source/isaaclab/docs/CHANGELOG.rst | 2 +- source/isaaclab_tasks/config/extension.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source/isaaclab/config/extension.toml b/source/isaaclab/config/extension.toml index 818bd291aaf..aa294f1dbf8 100644 --- a/source/isaaclab/config/extension.toml +++ b/source/isaaclab/config/extension.toml @@ -1,7 +1,7 @@ [package] # Note: Semantic Versioning is used: https://semver.org/ -version = "0.47.3" +version = "0.47.4" # Description title = "Isaac Lab framework for Robot Learning" diff --git a/source/isaaclab/docs/CHANGELOG.rst b/source/isaaclab/docs/CHANGELOG.rst index bd561f63671..b743e947c9b 100644 --- a/source/isaaclab/docs/CHANGELOG.rst +++ b/source/isaaclab/docs/CHANGELOG.rst @@ -1,7 +1,7 @@ Changelog --------- -0.47.4 (2025-10-23) +0.47.4 (2025-10-29) ~~~~~~~~~~~~~~~~~~~ Added diff --git a/source/isaaclab_tasks/config/extension.toml b/source/isaaclab_tasks/config/extension.toml index 89b8c2c0e0e..48067e77af3 100644 --- a/source/isaaclab_tasks/config/extension.toml +++ b/source/isaaclab_tasks/config/extension.toml @@ -1,7 +1,7 @@ [package] # Note: Semantic Versioning is used: https://semver.org/ -version = "0.11.6" +version = "0.11.7" # Description title = "Isaac Lab Environments" From 21683e23ea8d0404c3aaf57ca328807d8acb3483 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Wed, 29 Oct 2025 11:56:49 -0700 Subject: [PATCH 12/21] update franka visuomotor env to 200x200 resolution --- .../stack/config/franka/__init__.py | 2 +- .../agents/robomimic/bc_rnn_image_84.json | 219 ------------------ .../franka/stack_ik_rel_visuomotor_env_cfg.py | 8 +- 3 files changed, 5 insertions(+), 224 deletions(-) delete mode 100644 source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/agents/robomimic/bc_rnn_image_84.json diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/__init__.py b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/__init__.py index 0e3db6206b7..974b1ecae2b 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/__init__.py +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/__init__.py @@ -65,7 +65,7 @@ entry_point="isaaclab.envs:ManagerBasedRLEnv", kwargs={ "env_cfg_entry_point": stack_ik_rel_visuomotor_env_cfg.FrankaCubeStackVisuomotorEnvCfg, - "robomimic_bc_cfg_entry_point": os.path.join(agents.__path__[0], "robomimic/bc_rnn_image_84.json"), + "robomimic_bc_cfg_entry_point": os.path.join(agents.__path__[0], "robomimic/bc_rnn_image_200.json"), }, disable_env_checker=True, ) diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/agents/robomimic/bc_rnn_image_84.json b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/agents/robomimic/bc_rnn_image_84.json deleted file mode 100644 index 94e722fd0b1..00000000000 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/agents/robomimic/bc_rnn_image_84.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "algo_name": "bc", - "experiment": { - "name": "bc_rnn_image_franka_stack", - "validate": false, - "logging": { - "terminal_output_to_txt": true, - "log_tb": true - }, - "save": { - "enabled": true, - "every_n_seconds": null, - "every_n_epochs": 20, - "epochs": [], - "on_best_validation": false, - "on_best_rollout_return": false, - "on_best_rollout_success_rate": true - }, - "epoch_every_n_steps": 500, - "env": null, - "additional_envs": null, - "render": false, - "render_video": false, - "rollout": { - "enabled": false - } - }, - "train": { - "data": null, - "num_data_workers": 4, - "hdf5_cache_mode": "low_dim", - "hdf5_use_swmr": true, - "hdf5_load_next_obs": false, - "hdf5_normalize_obs": false, - "hdf5_filter_key": null, - "hdf5_validation_filter_key": null, - "seq_length": 10, - "pad_seq_length": true, - "frame_stack": 1, - "pad_frame_stack": true, - "dataset_keys": [ - "actions", - "rewards", - "dones" - ], - "goal_mode": null, - "cuda": true, - "batch_size": 16, - "num_epochs": 600, - "seed": 101 - }, - "algo": { - "optim_params": { - "policy": { - "optimizer_type": "adam", - "learning_rate": { - "initial": 0.0001, - "decay_factor": 0.1, - "epoch_schedule": [], - "scheduler_type": "multistep" - }, - "regularization": { - "L2": 0.0 - } - } - }, - "loss": { - "l2_weight": 1.0, - "l1_weight": 0.0, - "cos_weight": 0.0 - }, - "actor_layer_dims": [], - "gaussian": { - "enabled": false, - "fixed_std": false, - "init_std": 0.1, - "min_std": 0.01, - "std_activation": "softplus", - "low_noise_eval": true - }, - "gmm": { - "enabled": true, - "num_modes": 5, - "min_std": 0.0001, - "std_activation": "softplus", - "low_noise_eval": true - }, - "vae": { - "enabled": false, - "latent_dim": 14, - "latent_clip": null, - "kl_weight": 1.0, - "decoder": { - "is_conditioned": true, - "reconstruction_sum_across_elements": false - }, - "prior": { - "learn": false, - "is_conditioned": false, - "use_gmm": false, - "gmm_num_modes": 10, - "gmm_learn_weights": false, - "use_categorical": false, - "categorical_dim": 10, - "categorical_gumbel_softmax_hard": false, - "categorical_init_temp": 1.0, - "categorical_temp_anneal_step": 0.001, - "categorical_min_temp": 0.3 - }, - "encoder_layer_dims": [ - 300, - 400 - ], - "decoder_layer_dims": [ - 300, - 400 - ], - "prior_layer_dims": [ - 300, - 400 - ] - }, - "rnn": { - "enabled": true, - "horizon": 10, - "hidden_dim": 1000, - "rnn_type": "LSTM", - "num_layers": 2, - "open_loop": false, - "kwargs": { - "bidirectional": false - } - }, - "transformer": { - "enabled": false, - "context_length": 10, - "embed_dim": 512, - "num_layers": 6, - "num_heads": 8, - "emb_dropout": 0.1, - "attn_dropout": 0.1, - "block_output_dropout": 0.1, - "sinusoidal_embedding": false, - "activation": "gelu", - "supervise_all_steps": false, - "nn_parameter_for_timesteps": true - } - }, - "observation": { - "modalities": { - "obs": { - "low_dim": [ - "eef_pos", - "eef_quat", - "gripper_pos" - ], - "rgb": [ - "table_cam", - "wrist_cam" - ], - "depth": [], - "scan": [] - }, - "goal": { - "low_dim": [], - "rgb": [], - "depth": [], - "scan": [] - } - }, - "encoder": { - "low_dim": { - "core_class": null, - "core_kwargs": {}, - "obs_randomizer_class": null, - "obs_randomizer_kwargs": {} - }, - "rgb": { - "core_class": "VisualCore", - "core_kwargs": { - "feature_dimension": 64, - "flatten": true, - "backbone_class": "ResNet18Conv", - "backbone_kwargs": { - "pretrained": false, - "input_coord_conv": false - }, - "pool_class": "SpatialSoftmax", - "pool_kwargs": { - "num_kp": 32, - "learnable_temperature": false, - "temperature": 1.0, - "noise_std": 0.0, - "output_variance": false - } - }, - "obs_randomizer_class": "CropRandomizer", - "obs_randomizer_kwargs": { - "crop_height": 76, - "crop_width": 76, - "num_crops": 1, - "pos_enc": false - } - }, - "depth": { - "core_class": "VisualCore", - "core_kwargs": {}, - "obs_randomizer_class": null, - "obs_randomizer_kwargs": {} - }, - "scan": { - "core_class": "ScanCore", - "core_kwargs": {}, - "obs_randomizer_class": null, - "obs_randomizer_kwargs": {} - } - } - } -} diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py index 12a8b8c6df3..bcebaa93aef 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/stack_ik_rel_visuomotor_env_cfg.py @@ -204,8 +204,8 @@ def __post_init__(self): self.scene.wrist_cam = CameraCfg( prim_path="{ENV_REGEX_NS}/Robot/panda_hand/wrist_cam", update_period=0.0, - height=84, - width=84, + height=200, + width=200, data_types=["rgb", "distance_to_image_plane"], spawn=sim_utils.PinholeCameraCfg( focal_length=24.0, focus_distance=400.0, horizontal_aperture=20.955, clipping_range=(0.1, 2) @@ -219,8 +219,8 @@ def __post_init__(self): self.scene.table_cam = CameraCfg( prim_path="{ENV_REGEX_NS}/table_cam", update_period=0.0, - height=84, - width=84, + height=200, + width=200, data_types=["rgb", "distance_to_image_plane"], spawn=sim_utils.PinholeCameraCfg( focal_length=24.0, focus_distance=400.0, horizontal_aperture=20.955, clipping_range=(0.1, 2) From 1cc1e9f3ada314ba102b46d4318f7cb48326fd66 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Wed, 29 Oct 2025 11:59:08 -0700 Subject: [PATCH 13/21] add 200x200 bcrnn config --- .../agents/robomimic/bc_rnn_image_200.json | 219 ++++++++++++++++++ 1 file changed, 219 insertions(+) create mode 100644 source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/agents/robomimic/bc_rnn_image_200.json diff --git a/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/agents/robomimic/bc_rnn_image_200.json b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/agents/robomimic/bc_rnn_image_200.json new file mode 100644 index 00000000000..33117b90e3f --- /dev/null +++ b/source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/stack/config/franka/agents/robomimic/bc_rnn_image_200.json @@ -0,0 +1,219 @@ +{ + "algo_name": "bc", + "experiment": { + "name": "bc_rnn_image_franka_stack", + "validate": false, + "logging": { + "terminal_output_to_txt": true, + "log_tb": true + }, + "save": { + "enabled": true, + "every_n_seconds": null, + "every_n_epochs": 20, + "epochs": [], + "on_best_validation": false, + "on_best_rollout_return": false, + "on_best_rollout_success_rate": true + }, + "epoch_every_n_steps": 500, + "env": null, + "additional_envs": null, + "render": false, + "render_video": false, + "rollout": { + "enabled": false + } + }, + "train": { + "data": null, + "num_data_workers": 4, + "hdf5_cache_mode": "low_dim", + "hdf5_use_swmr": true, + "hdf5_load_next_obs": false, + "hdf5_normalize_obs": false, + "hdf5_filter_key": null, + "hdf5_validation_filter_key": null, + "seq_length": 10, + "pad_seq_length": true, + "frame_stack": 1, + "pad_frame_stack": true, + "dataset_keys": [ + "actions", + "rewards", + "dones" + ], + "goal_mode": null, + "cuda": true, + "batch_size": 16, + "num_epochs": 600, + "seed": 101 + }, + "algo": { + "optim_params": { + "policy": { + "optimizer_type": "adam", + "learning_rate": { + "initial": 0.0001, + "decay_factor": 0.1, + "epoch_schedule": [], + "scheduler_type": "multistep" + }, + "regularization": { + "L2": 0.0 + } + } + }, + "loss": { + "l2_weight": 1.0, + "l1_weight": 0.0, + "cos_weight": 0.0 + }, + "actor_layer_dims": [], + "gaussian": { + "enabled": false, + "fixed_std": false, + "init_std": 0.1, + "min_std": 0.01, + "std_activation": "softplus", + "low_noise_eval": true + }, + "gmm": { + "enabled": true, + "num_modes": 5, + "min_std": 0.0001, + "std_activation": "softplus", + "low_noise_eval": true + }, + "vae": { + "enabled": false, + "latent_dim": 14, + "latent_clip": null, + "kl_weight": 1.0, + "decoder": { + "is_conditioned": true, + "reconstruction_sum_across_elements": false + }, + "prior": { + "learn": false, + "is_conditioned": false, + "use_gmm": false, + "gmm_num_modes": 10, + "gmm_learn_weights": false, + "use_categorical": false, + "categorical_dim": 10, + "categorical_gumbel_softmax_hard": false, + "categorical_init_temp": 1.0, + "categorical_temp_anneal_step": 0.001, + "categorical_min_temp": 0.3 + }, + "encoder_layer_dims": [ + 300, + 400 + ], + "decoder_layer_dims": [ + 300, + 400 + ], + "prior_layer_dims": [ + 300, + 400 + ] + }, + "rnn": { + "enabled": true, + "horizon": 10, + "hidden_dim": 1000, + "rnn_type": "LSTM", + "num_layers": 2, + "open_loop": false, + "kwargs": { + "bidirectional": false + } + }, + "transformer": { + "enabled": false, + "context_length": 10, + "embed_dim": 512, + "num_layers": 6, + "num_heads": 8, + "emb_dropout": 0.1, + "attn_dropout": 0.1, + "block_output_dropout": 0.1, + "sinusoidal_embedding": false, + "activation": "gelu", + "supervise_all_steps": false, + "nn_parameter_for_timesteps": true + } + }, + "observation": { + "modalities": { + "obs": { + "low_dim": [ + "eef_pos", + "eef_quat", + "gripper_pos" + ], + "rgb": [ + "table_cam", + "wrist_cam" + ], + "depth": [], + "scan": [] + }, + "goal": { + "low_dim": [], + "rgb": [], + "depth": [], + "scan": [] + } + }, + "encoder": { + "low_dim": { + "core_class": null, + "core_kwargs": {}, + "obs_randomizer_class": null, + "obs_randomizer_kwargs": {} + }, + "rgb": { + "core_class": "VisualCore", + "core_kwargs": { + "feature_dimension": 64, + "flatten": true, + "backbone_class": "ResNet18Conv", + "backbone_kwargs": { + "pretrained": false, + "input_coord_conv": false + }, + "pool_class": "SpatialSoftmax", + "pool_kwargs": { + "num_kp": 32, + "learnable_temperature": false, + "temperature": 1.0, + "noise_std": 0.0, + "output_variance": false + } + }, + "obs_randomizer_class": "CropRandomizer", + "obs_randomizer_kwargs": { + "crop_height": 181, + "crop_width": 181, + "num_crops": 1, + "pos_enc": false + } + }, + "depth": { + "core_class": "VisualCore", + "core_kwargs": {}, + "obs_randomizer_class": null, + "obs_randomizer_kwargs": {} + }, + "scan": { + "core_class": "ScanCore", + "core_kwargs": {}, + "obs_randomizer_class": null, + "obs_randomizer_kwargs": {} + } + } + } +} From edfd95f725ac14f654d7b11b29f35bdb09ca5f39 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Fri, 31 Oct 2025 10:52:16 -0700 Subject: [PATCH 14/21] update version number in deprecation comment to Isaac lab release version for easier understanding --- source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py | 2 +- source/isaaclab/isaaclab/envs/manager_based_env_cfg.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py b/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py index 0859153cf39..b378beaa86f 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env_cfg.py @@ -222,7 +222,7 @@ class DirectRLEnvCfg: to reflect the latest states from the reset. This comes at a cost of performance as an additional render step will be performed after each time an environment is reset. - .. deprecated:: 0.47.2 + .. deprecated:: 2.3.1 This attribute is deprecated and will be removed in the future. Please use :attr:`num_rerenders_on_reset` instead. diff --git a/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py b/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py index d813babd02f..03353baf34d 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env_cfg.py @@ -115,7 +115,7 @@ class ManagerBasedEnvCfg: to reflect the latest states from the reset. This comes at a cost of performance as an additional render step will be performed after each time an environment is reset. - .. deprecated:: 0.47.2 + .. deprecated:: 2.3.1 This attribute is deprecated and will be removed in the future. Please use :attr:`num_rerenders_on_reset` instead. From d965318082922acb0567b9ce07436dbf99106258 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Mon, 3 Nov 2025 09:57:01 -0800 Subject: [PATCH 15/21] add omni log to deprecation mesg --- source/isaaclab/isaaclab/envs/direct_rl_env.py | 8 ++++++-- source/isaaclab/isaaclab/envs/manager_based_env.py | 10 +++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index b249b8aed56..bf0ff314d0d 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -222,9 +222,13 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: + msg = ( + "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + " ManagerBasedEnvCfg.num_rerenders_on_reset instead." + ) + omni.log.warn(msg) warnings.warn( - "\033[93m\033[1m[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" - " DirectRLEnvCfg.num_rerenders_on_reset instead.\033[0m", + msg, FutureWarning, stacklevel=2, ) diff --git a/source/isaaclab/isaaclab/envs/manager_based_env.py b/source/isaaclab/isaaclab/envs/manager_based_env.py index ff45e02755a..b54ce23d382 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env.py @@ -193,10 +193,14 @@ def __init__(self, cfg: ManagerBasedEnvCfg): # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: + msg = ( + "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + " ManagerBasedEnvCfg.num_rerenders_on_reset instead." + ) + omni.log.warn(msg) warnings.warn( - "\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" - " ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m", - FutureWarning, + msg, + DeprecationWarning, stacklevel=2, ) self.cfg.num_rerenders_on_reset = 1 From bf226cc844ec9bfa579766d2dcb159befcdff4aa Mon Sep 17 00:00:00 2001 From: Peter Du Date: Mon, 3 Nov 2025 09:57:58 -0800 Subject: [PATCH 16/21] update to use deprecation warning --- source/isaaclab/isaaclab/envs/direct_rl_env.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index bf0ff314d0d..ab9bd9441f0 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -229,7 +229,7 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs omni.log.warn(msg) warnings.warn( msg, - FutureWarning, + DeprecationWarning, stacklevel=2, ) self.cfg.num_rerenders_on_reset = 1 From d3569d97b63c5ee1410d736df4a65af76b4c7edd Mon Sep 17 00:00:00 2001 From: Peter Du Date: Tue, 4 Nov 2025 15:37:45 -0800 Subject: [PATCH 17/21] fix changelog --- source/isaaclab/config/extension.toml | 2 +- source/isaaclab/docs/CHANGELOG.rst | 21 +++++++++++---------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/source/isaaclab/config/extension.toml b/source/isaaclab/config/extension.toml index 007872f1b52..836a168702b 100644 --- a/source/isaaclab/config/extension.toml +++ b/source/isaaclab/config/extension.toml @@ -1,7 +1,7 @@ [package] # Note: Semantic Versioning is used: https://semver.org/ -version = "0.47.7" +version = "0.47.8" # Description title = "Isaac Lab framework for Robot Learning" diff --git a/source/isaaclab/docs/CHANGELOG.rst b/source/isaaclab/docs/CHANGELOG.rst index 84f5a91941a..96b271b2ffb 100644 --- a/source/isaaclab/docs/CHANGELOG.rst +++ b/source/isaaclab/docs/CHANGELOG.rst @@ -1,17 +1,8 @@ Changelog --------- -0.47.7 (2025-10-31) -~~~~~~~~~~~~~~~~~~~ - -Changed -^^^^^^^ -* Changed Pink IK controller qpsolver from osqp to daqp. -* Changed Null Space matrix computation in Pink IK's Null Space Posture Task to a faster matrix pseudo inverse computation. - - -0.47.7 (2025-11-03) +0.47.8 (2025-11-04) ~~~~~~~~~~~~~~~~~~~ Added @@ -26,6 +17,16 @@ Changed * Added deprecation warning for ``rerender_on_reset`` parameter in ManagerBasedEnv and DirectRLEnv. +0.47.7 (2025-10-31) +~~~~~~~~~~~~~~~~~~~ + +Changed +^^^^^^^ + +* Changed Pink IK controller qpsolver from osqp to daqp. +* Changed Null Space matrix computation in Pink IK's Null Space Posture Task to a faster matrix pseudo inverse computation. + + 0.47.6 (2025-11-01) ~~~~~~~~~~~~~~~~~~~~ From 5c82f895b6a3a309018f4910df0e81b4ba245527 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Wed, 5 Nov 2025 18:23:07 -0800 Subject: [PATCH 18/21] remove spark visuomotor limitation and omni log --- docs/source/setup/installation/index.rst | 2 -- source/isaaclab/isaaclab/envs/direct_rl_env.py | 7 +++---- source/isaaclab/isaaclab/envs/manager_based_env.py | 7 +++---- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/docs/source/setup/installation/index.rst b/docs/source/setup/installation/index.rst index f2aed3ef048..ef360847a6d 100644 --- a/docs/source/setup/installation/index.rst +++ b/docs/source/setup/installation/index.rst @@ -91,8 +91,6 @@ Other notable limitations with respect to Isaac Lab include... #. Multi-node training may require direct connections between Spark machines or additional network configurations. -#. :ref:`Isaac Lab Mimic ` data generation and policy inference for visuomotor environments are not supported on DGX Spark due to a lack of non-DLSS image denoiser on aarch64. - #. :ref:`Running Cosmos Transfer1 ` is not currently supported on the DGX Spark. Troubleshooting diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index ab9bd9441f0..46f5e0a72a6 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -223,13 +223,12 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: msg = ( - "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" - " ManagerBasedEnvCfg.num_rerenders_on_reset instead." + f"\033[93m\033[1m[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" + f" DirectRLEnvCfg.num_rerenders_on_reset instead.\033[0m" ) - omni.log.warn(msg) warnings.warn( msg, - DeprecationWarning, + FutureWarning, stacklevel=2, ) self.cfg.num_rerenders_on_reset = 1 diff --git a/source/isaaclab/isaaclab/envs/manager_based_env.py b/source/isaaclab/isaaclab/envs/manager_based_env.py index b54ce23d382..ddec2f1565b 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env.py @@ -194,13 +194,12 @@ def __init__(self, cfg: ManagerBasedEnvCfg): # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: msg = ( - "[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" - " ManagerBasedEnvCfg.num_rerenders_on_reset instead." + f"\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + f" ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m" ) - omni.log.warn(msg) warnings.warn( msg, - DeprecationWarning, + FutureWarning, stacklevel=2, ) self.cfg.num_rerenders_on_reset = 1 From 88325a6f04f1c1c74d74a14a7692b3c2567fc44d Mon Sep 17 00:00:00 2001 From: Peter Du Date: Thu, 6 Nov 2025 08:53:43 -0800 Subject: [PATCH 19/21] don't override num-rerenders if rerender flag is set --- source/isaaclab/isaaclab/envs/direct_rl_env.py | 7 ++++--- source/isaaclab/isaaclab/envs/manager_based_env.py | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/source/isaaclab/isaaclab/envs/direct_rl_env.py b/source/isaaclab/isaaclab/envs/direct_rl_env.py index 46f5e0a72a6..a4452b707d7 100644 --- a/source/isaaclab/isaaclab/envs/direct_rl_env.py +++ b/source/isaaclab/isaaclab/envs/direct_rl_env.py @@ -223,15 +223,16 @@ def __init__(self, cfg: DirectRLEnvCfg, render_mode: str | None = None, **kwargs # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: msg = ( - f"\033[93m\033[1m[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" - f" DirectRLEnvCfg.num_rerenders_on_reset instead.\033[0m" + "\033[93m\033[1m[DEPRECATION WARNING] DirectRLEnvCfg.rerender_on_reset is deprecated. Use" + " DirectRLEnvCfg.num_rerenders_on_reset instead.\033[0m" ) warnings.warn( msg, FutureWarning, stacklevel=2, ) - self.cfg.num_rerenders_on_reset = 1 + if self.cfg.num_rerenders_on_reset == 0: + self.cfg.num_rerenders_on_reset = 1 # print the environment information print("[INFO]: Completed setting up the environment...") diff --git a/source/isaaclab/isaaclab/envs/manager_based_env.py b/source/isaaclab/isaaclab/envs/manager_based_env.py index ddec2f1565b..455af1e2c6b 100644 --- a/source/isaaclab/isaaclab/envs/manager_based_env.py +++ b/source/isaaclab/isaaclab/envs/manager_based_env.py @@ -194,15 +194,16 @@ def __init__(self, cfg: ManagerBasedEnvCfg): # show deprecation message for rerender_on_reset if self.cfg.rerender_on_reset: msg = ( - f"\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" - f" ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m" + "\033[93m\033[1m[DEPRECATION WARNING] ManagerBasedEnvCfg.rerender_on_reset is deprecated. Use" + " ManagerBasedEnvCfg.num_rerenders_on_reset instead.\033[0m" ) warnings.warn( msg, FutureWarning, stacklevel=2, ) - self.cfg.num_rerenders_on_reset = 1 + if self.cfg.num_rerenders_on_reset == 0: + self.cfg.num_rerenders_on_reset = 1 def __del__(self): """Cleanup for the environment.""" From 81f00ea4a17608a2366e4ad73106bd30a04924cc Mon Sep 17 00:00:00 2001 From: Peter Du Date: Thu, 6 Nov 2025 09:06:30 -0800 Subject: [PATCH 20/21] fix robomimic config parser --- scripts/imitation_learning/robomimic/train.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/scripts/imitation_learning/robomimic/train.py b/scripts/imitation_learning/robomimic/train.py index 718a18bcbca..c97df13260f 100644 --- a/scripts/imitation_learning/robomimic/train.py +++ b/scripts/imitation_learning/robomimic/train.py @@ -59,6 +59,7 @@ # Third-party imports import gymnasium as gym import h5py +import importlib import json import numpy as np import os @@ -369,7 +370,18 @@ def main(args: argparse.Namespace): f" Please check that the gym registry has the entry point: '{cfg_entry_point_key}'." ) - with open(cfg_entry_point_file) as f: + # resolve module path if needed + if ":" in cfg_entry_point_file: + mod_name, file_name = cfg_entry_point_file.split(":") + mod = importlib.import_module(mod_name) + if mod.__file__ is None: + raise ValueError(f"Could not find module file for: '{mod_name}'") + mod_path = os.path.dirname(mod.__file__) + config_file = os.path.join(mod_path, file_name) + else: + config_file = cfg_entry_point_file + + with open(config_file) as f: ext_cfg = json.load(f) config = config_factory(ext_cfg["algo_name"]) # update config with external json - this will throw errors if From f8b2004cac2c0d54768008b69cb6ada188081699 Mon Sep 17 00:00:00 2001 From: Peter Du Date: Fri, 7 Nov 2025 07:21:36 -0800 Subject: [PATCH 21/21] bump version number after merge from main --- source/isaaclab_tasks/config/extension.toml | 2 +- source/isaaclab_tasks/docs/CHANGELOG.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source/isaaclab_tasks/config/extension.toml b/source/isaaclab_tasks/config/extension.toml index 48067e77af3..bc01e841fdb 100644 --- a/source/isaaclab_tasks/config/extension.toml +++ b/source/isaaclab_tasks/config/extension.toml @@ -1,7 +1,7 @@ [package] # Note: Semantic Versioning is used: https://semver.org/ -version = "0.11.7" +version = "0.11.8" # Description title = "Isaac Lab Environments" diff --git a/source/isaaclab_tasks/docs/CHANGELOG.rst b/source/isaaclab_tasks/docs/CHANGELOG.rst index 415392353c1..30f8c52d218 100644 --- a/source/isaaclab_tasks/docs/CHANGELOG.rst +++ b/source/isaaclab_tasks/docs/CHANGELOG.rst @@ -2,7 +2,7 @@ Changelog --------- -0.11.7 (2025-11-06) +0.11.8 (2025-11-06) ~~~~~~~~~~~~~~~~~~~~ Changed