From e28c4b793fddc41c89b600522695726686861bbd Mon Sep 17 00:00:00 2001 From: Simon Fetzel Date: Thu, 30 Oct 2025 11:20:19 +0100 Subject: [PATCH 1/2] fix SurfaceGripper.update (GripperView.get_surface_gripper_status() returns list[str], not list[int]) --- .../assets/surface_gripper/surface_gripper.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/source/isaaclab/isaaclab/assets/surface_gripper/surface_gripper.py b/source/isaaclab/isaaclab/assets/surface_gripper/surface_gripper.py index 50a17d85efe..fbdb8783be0 100644 --- a/source/isaaclab/isaaclab/assets/surface_gripper/surface_gripper.py +++ b/source/isaaclab/isaaclab/assets/surface_gripper/surface_gripper.py @@ -162,9 +162,9 @@ def update(self, dt: float) -> None: This function is called every simulation step. The data fetched from the gripper view is a list of strings containing 3 possible states: - - "Open" --> 0 - - "Closing" --> 1 - - "Closed" --> 2 + - "Open" + - "Closing" + - "Closed" To make this more neural network friendly, we convert the list of strings to a list of floats: - "Open" --> -1.0 @@ -175,8 +175,10 @@ def update(self, dt: float) -> None: We need to do this conversion for every single step of the simulation because the gripper can lose contact with the object if some conditions are met: such as if a large force is applied to the gripped object. """ - state_list: list[int] = self._gripper_view.get_surface_gripper_status() - self._gripper_state = torch.tensor(state_list, dtype=torch.float32, device=self._device) - 1.0 + state_list: list[str] = self._gripper_view.get_surface_gripper_status() + mapping = {"Open": -1.0, "Closing": 0.0, "Closed": 1.0} + state_values: list[float] = list(map(lambda s: mapping[s], state_list)) + self._gripper_state = torch.tensor(state_values, dtype=torch.float32, device=self._device) def write_data_to_sim(self) -> None: """Write the gripper command to the SurfaceGripperView. From 5d07a57f7b28a184562d0944114b8e6c55722f3e Mon Sep 17 00:00:00 2001 From: Simon Fetzel Date: Fri, 31 Oct 2025 08:54:18 +0100 Subject: [PATCH 2/2] Update source/isaaclab/isaaclab/assets/surface_gripper/surface_gripper.py Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> Signed-off-by: Simon Fetzel --- .../isaaclab/isaaclab/assets/surface_gripper/surface_gripper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/isaaclab/isaaclab/assets/surface_gripper/surface_gripper.py b/source/isaaclab/isaaclab/assets/surface_gripper/surface_gripper.py index fbdb8783be0..d90a8e2915b 100644 --- a/source/isaaclab/isaaclab/assets/surface_gripper/surface_gripper.py +++ b/source/isaaclab/isaaclab/assets/surface_gripper/surface_gripper.py @@ -177,7 +177,7 @@ def update(self, dt: float) -> None: """ state_list: list[str] = self._gripper_view.get_surface_gripper_status() mapping = {"Open": -1.0, "Closing": 0.0, "Closed": 1.0} - state_values: list[float] = list(map(lambda s: mapping[s], state_list)) + state_values: list[float] = list(map(lambda s: mapping.get(s, 0.0), state_list)) self._gripper_state = torch.tensor(state_values, dtype=torch.float32, device=self._device) def write_data_to_sim(self) -> None: