Skip to content

Commit 7e68d1a

Browse files
committed
misc reset
1 parent ae7dcdc commit 7e68d1a

File tree

2 files changed

+14
-8
lines changed

2 files changed

+14
-8
lines changed

genesis/engine/scene.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from genesis.engine.force_fields import ForceField
1313
from genesis.engine.materials.base import Material
1414
from genesis.engine.entities import Emitter
15+
from genesis.engine.states.solvers import SimState
1516
from genesis.engine.simulator import Simulator
1617
from genesis.options import (
1718
AvatarOptions,
@@ -695,23 +696,26 @@ def _parallelize(
695696
self._para_level = gs.PARA_LEVEL.ALL
696697

697698
@gs.assert_built
698-
def reset(self, state: dict | None = None, envs_idx=None):
699+
def reset(self, state: SimState | None = None, envs_idx=None):
699700
"""
700701
Resets the scene to its initial state.
701702
702703
Parameters
703704
----------
704-
state : dict | None
705-
The state to reset the scene to. If None, the scene will be reset to its initial state. If this is given, the scene's registerered initial state will be updated to this state.
705+
state : SimState | None
706+
The state to reset the scene to. If None, the scene will be reset to its initial state.
707+
If this is given, the scene's registerered initial state will be updated to this state.
708+
envs_idx : None | array_like, optional
709+
The indices of the environments. If None, all environments will be considered. Defaults to None.
706710
"""
707-
gs.logger.info(f"Resetting Scene ~~~<{self._uid}>~~~.")
708-
self._reset(state, envs_idx)
711+
self._reset(state, envs_idx=envs_idx)
709712

710-
def _reset(self, state=None, envs_idx=None):
713+
def _reset(self, state: SimState | None = None, *, envs_idx=None):
711714
if self._is_built:
712715
if state is None:
713716
state = self._init_state
714717
else:
718+
assert isinstance(state, SimState), "state must be a SimState object"
715719
self._init_state = state
716720
self._sim.reset(state, envs_idx)
717721
else:

genesis/engine/simulator.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
from .coupler import Coupler, SAPCoupler
2424
from .entities import HybridEntity
25+
from .solvers.base_solver import Solver
2526
from .solvers import (
2627
AvatarSolver,
2728
FEMSolver,
@@ -205,9 +206,10 @@ def build(self):
205206
if isinstance(entity, HybridEntity):
206207
entity.build()
207208

208-
def reset(self, state, envs_idx=None):
209+
def reset(self, state: SimState, envs_idx=None):
209210
for solver, solver_state in zip(self._solvers, state):
210-
solver.set_state(0, solver_state, envs_idx)
211+
if solver.n_entities > 0:
212+
solver.set_state(0, solver_state, envs_idx)
211213

212214
# TODO: keeping as is for now, since coupler is currently for non-batched scenes
213215
self.coupler.reset()

0 commit comments

Comments
 (0)