Source code for isaaclab_experimental.envs.interactive_scene_warp
# Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
"""Warp-native interactive scene with env_mask support for reset."""
from __future__ import annotations
from collections.abc import Sequence
import warp as wp
from isaaclab.scene import InteractiveScene
[docs]
class InteractiveSceneWarp(InteractiveScene):
"""Interactive scene with warp-native env_mask support for reset.
Extends :class:`InteractiveScene` to accept a boolean warp mask for selective resets,
avoiding the need to convert between env_ids and masks.
"""
def reset(self, env_ids: Sequence[int] | None = None, env_mask: wp.array | None = None):
"""Reset scene entities using either env_ids or a boolean env_mask.
Args:
env_ids: The indices of the environments to reset. Defaults to None (all instances).
env_mask: Boolean warp mask of shape (num_envs,). Defaults to None.
"""
# -- assets (support env_mask)
for articulation in self._articulations.values():
articulation.reset(env_ids, env_mask=env_mask)
for deformable_object in self._deformable_objects.values():
deformable_object.reset(env_ids)
for rigid_object in self._rigid_objects.values():
rigid_object.reset(env_ids, env_mask=env_mask)
for surface_gripper in self._surface_grippers.values():
surface_gripper.reset(env_ids)
for rigid_object_collection in self._rigid_object_collections.values():
rigid_object_collection.reset(env_ids, env_mask=env_mask)
# -- sensors (no env_mask support)
for sensor in self._sensors.values():
sensor.reset(env_ids)