Skip to content

Commit 64effaa

Browse files
authored
refactor(tasks): collapse 62 libero_90 leaf reset() overrides into a base flag (#793)
Every libero_90 leaf carried a byte-identical reset() override whose only purpose was to skip the per-reset checker reset (it called super(Libero90BaseTask, self).reset to jump past the base's checker reset). Those 62 overrides dropped the seed parameter, breaking env.reset(seed=). Replace them with a single class attribute: Libero90BaseTask gains skip_checker_reset (default False) and its reset() skips the checker reset when the flag is set. Leaves that previously overrode reset now just set skip_checker_reset = True and inherit the seed-aware base reset() — behaviour is identical (skip-leaves still skip; the few non-overriding leaves keep the default checker reset). Net -237 lines, 62 fewer reset overrides. Shrinks the reset(seed) conformance allowlist from 90 to 28 (P1).
1 parent 6eed4db commit 64effaa

64 files changed

Lines changed: 75 additions & 312 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

roboverse_pack/tasks/libero_90/libero_90_base.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,11 @@ class Libero90BaseTask(BaseTaskEnv):
2424
checker = None
2525
traj_filepath = None
2626
decimation = 30
27+
# Most libero_90 leaves intentionally skip the per-reset checker reset. Setting
28+
# this True on a leaf reproduces the old ``reset`` override (which jumped to
29+
# ``BaseTaskEnv.reset`` to bypass the checker reset) without overriding ``reset``
30+
# — so the seed-aware base ``reset`` signature is inherited unchanged.
31+
skip_checker_reset = False
2732

2833
def __init__(self, scenario: ScenarioCfg, device: str | torch.device | None = None) -> None:
2934
check_and_download_single(self.traj_filepath)
@@ -35,9 +40,15 @@ def _terminated(self, states: TensorState) -> torch.Tensor:
3540
return self.checker.check(self.handler, states)
3641

3742
def reset(self, states=None, env_ids=None, seed=None):
38-
"""Reset the checker. ``seed`` is forwarded to ``super().reset``."""
43+
"""Reset the env; reset the checker unless ``skip_checker_reset`` is set.
44+
45+
``seed`` is forwarded to ``super().reset``. Leaves that set
46+
``skip_checker_reset = True`` get the old "skip checker reset" behaviour
47+
without overriding ``reset`` (so the seed contract is preserved).
48+
"""
3949
states = super().reset(states, env_ids, seed)
40-
self.checker.reset(self.handler, env_ids=env_ids)
50+
if self.checker is not None and not self.skip_checker_reset:
51+
self.checker.reset(self.handler, env_ids=env_ids)
4152
return states
4253

4354
def _get_initial_states(self) -> list[dict] | None:

roboverse_pack/tasks/libero_90/libero_kitchen_scene10_close_the_top_drawer_of_the_cabinet.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,4 @@ def _terminated(self, states: TensorState) -> torch.Tensor:
9494
drawer_closed = cabinet_joint_pos > -0.01 # (N,) - closed when joint_pos is near 0
9595
return drawer_closed
9696

97-
def reset(self, states=None, env_ids=None):
98-
"""Skip checker reset."""
99-
states = super(Libero90BaseTask, self).reset(states, env_ids)
100-
return states
97+
skip_checker_reset = True # inherit BaseTaskEnv.reset(seed=); skip per-reset checker reset

roboverse_pack/tasks/libero_90/libero_kitchen_scene10_close_the_top_drawer_of_the_cabinet_and_put_the_black_bowl_on_top_of_it.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,4 @@ def _terminated(self, states: TensorState) -> torch.Tensor:
123123
is_success = drawer_closed & bowl_on_cabinet # (N,)
124124
return is_success
125125

126-
def reset(self, states=None, env_ids=None):
127-
"""Skip checker reset."""
128-
states = super(Libero90BaseTask, self).reset(states, env_ids)
129-
return states
126+
skip_checker_reset = True # inherit BaseTaskEnv.reset(seed=); skip per-reset checker reset

roboverse_pack/tasks/libero_90/libero_kitchen_scene10_put_the_black_bowl_in_the_top_drawer_of_the_cabinet.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,4 @@ def _terminated(self, states: TensorState) -> torch.Tensor:
118118

119119
return bowl_in_drawer
120120

121-
def reset(self, states=None, env_ids=None):
122-
"""Skip checker reset."""
123-
states = super(Libero90BaseTask, self).reset(states, env_ids)
124-
return states
121+
skip_checker_reset = True # inherit BaseTaskEnv.reset(seed=); skip per-reset checker reset

roboverse_pack/tasks/libero_90/libero_kitchen_scene10_put_the_butter_at_the_back_in_the_top_drawer_of_the_cabinet_and_close_it.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,4 @@ def _terminated(self, states: TensorState) -> torch.Tensor:
124124
is_success = butter_in_drawer & drawer_closed # (N,)
125125
return is_success
126126

127-
def reset(self, states=None, env_ids=None):
128-
"""Skip checker reset."""
129-
states = super(Libero90BaseTask, self).reset(states, env_ids)
130-
return states
127+
skip_checker_reset = True # inherit BaseTaskEnv.reset(seed=); skip per-reset checker reset

roboverse_pack/tasks/libero_90/libero_kitchen_scene10_put_the_butter_at_the_front_in_the_top_drawer_of_the_cabinet_and_close_it.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,4 @@ def _terminated(self, states: TensorState) -> torch.Tensor:
124124
is_success = butter_in_drawer & drawer_closed # (N,)
125125
return is_success
126126

127-
def reset(self, states=None, env_ids=None):
128-
"""Skip checker reset."""
129-
states = super(Libero90BaseTask, self).reset(states, env_ids)
130-
return states
127+
skip_checker_reset = True # inherit BaseTaskEnv.reset(seed=); skip per-reset checker reset

roboverse_pack/tasks/libero_90/libero_kitchen_scene10_put_the_chocolate_pudding_in_the_top_drawer_of_the_cabinet_and_close_it.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,4 @@ def _terminated(self, states: TensorState) -> torch.Tensor:
126126
is_success = pudding_in_drawer & drawer_closed # (N,)
127127
return is_success
128128

129-
def reset(self, states=None, env_ids=None):
130-
"""Skip checker reset."""
131-
states = super(Libero90BaseTask, self).reset(states, env_ids)
132-
return states
129+
skip_checker_reset = True # inherit BaseTaskEnv.reset(seed=); skip per-reset checker reset

roboverse_pack/tasks/libero_90/libero_kitchen_scene1_open_drawer_put_bowl.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,4 @@ def _terminated(self, states: TensorState) -> torch.Tensor: # 需要仔细检
130130
return inside
131131

132132
# rewrite checker
133-
def reset(self, states=None, env_ids=None):
134-
"""Skip checker reset."""
135-
states = super(Libero90BaseTask, self).reset(states, env_ids)
136-
return states
133+
skip_checker_reset = True # inherit BaseTaskEnv.reset(seed=); skip per-reset checker reset

roboverse_pack/tasks/libero_90/libero_kitchen_scene1_put_the_black_bowl_on_the_plate.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,4 @@ def _terminated(self, states: TensorState) -> torch.Tensor:
117117
return is_on_plate
118118

119119
# rewrite checker
120-
def reset(self, states=None, env_ids=None):
121-
"""Skip checker reset."""
122-
states = super(Libero90BaseTask, self).reset(states, env_ids)
123-
return states
120+
skip_checker_reset = True # inherit BaseTaskEnv.reset(seed=); skip per-reset checker reset

roboverse_pack/tasks/libero_90/libero_kitchen_scene1_put_the_black_bowl_on_top_of_the_cabinet.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,4 @@ def _terminated(self, states: TensorState) -> torch.Tensor:
120120
# print('Bowl on top of the cabinet:', inside)
121121
return inside
122122

123-
def reset(self, states=None, env_ids=None):
124-
"""Skip checker reset."""
125-
states = super(Libero90BaseTask, self).reset(states, env_ids)
126-
return states
123+
skip_checker_reset = True # inherit BaseTaskEnv.reset(seed=); skip per-reset checker reset

0 commit comments

Comments
 (0)