Skip to content

Commit 5dae83e

Browse files
rwiltzkellyguo11
andauthored
Fixes the reach task regression with teleop devices returning the gripper (isaac-sim#3327)
Fixes the reach task regression with teleop devices returning the gripper term # Description Fixes the reach task regression with teleop devices returning the gripper. The reach task expects just the se3 term and not the gripper term. We add a configuration parameter to the teleop devices which do not use retargeters to conditional return the gripper term, and update the reach env cfg to properly configure the teleop devices. <!-- Thank you for your interest in sending a pull request. Please make sure to check the contribution guidelines. Link: https://isaac-sim.github.io/IsaacLab/main/source/refs/contributing.html --> Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. Fixes isaac-sim#3264 <!-- As a practice, it is recommended to open an issue to have discussions on the proposed pull request. This makes it easier for the community to keep track of what is being developed or added, and if a given feature is demanded by more than one party. --> ## Type of change <!-- As you go through the list, delete the ones that are not applicable. --> - Bug fix (non-breaking change which fixes an issue) - New feature (non-breaking change which adds functionality) - Breaking change (fix or feature that would cause existing functionality to not work as expected) - This change requires a documentation update ## Screenshots Please attach before and after screenshots of the change if applicable. <!-- Example: | Before | After | | ------ | ----- | | _gif/png before_ | _gif/png after_ | To upload images to a PR -- simply drag and drop an image while in edit mode and it should upload the image directly. You can then paste that source into the above before/after sections. --> ## Checklist - [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with `./isaaclab.sh --format` - [x] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [x] I have added tests that prove my fix is effective or that my feature works - [x] I have updated the changelog and the corresponding version in the extension's `config/extension.toml` file - [x] I have added my name to the `CONTRIBUTORS.md` or my name already exists there <!-- As you go through the checklist above, you can mark something as done by putting an x character in it For example, - [x] I have done this task - [ ] I have not done this task --> --------- Signed-off-by: rwiltz <165190220+rwiltz@users.noreply.github.com> Co-authored-by: Kelly Guo <kellyg@nvidia.com>
1 parent 2f9298d commit 5dae83e

7 files changed

Lines changed: 63 additions & 10 deletions

File tree

.github/workflows/license-exceptions.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,5 +395,10 @@
395395
"package": "zipp",
396396
"license" : "UNKNOWN",
397397
"comment": "MIT"
398+
},
399+
{
400+
"package": "fsspec",
401+
"license" : "UNKNOWN",
402+
"comment": "BSD"
398403
}
399404
]

source/isaaclab/config/extension.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22

33
# Note: Semantic Versioning is used: https://semver.org/
4-
version = "0.45.9"
4+
version = "0.45.10"
55

66
# Description
77
title = "Isaac Lab framework for Robot Learning"

source/isaaclab/docs/CHANGELOG.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,21 @@
11
Changelog
22
---------
33

4+
0.45.10 (2025-09-02)
5+
~~~~~~~~~~~~~~~~~~~~
6+
7+
Fixed
8+
^^^^^
9+
10+
* Fixed regression in reach task configuration where the gripper command was being returned.
11+
* Added :attr:`~isaaclab.devices.Se3GamepadCfg.gripper_term` to :class:`~isaaclab.devices.Se3GamepadCfg`
12+
to control whether the gamepad device should return a gripper command.
13+
* Added :attr:`~isaaclab.devices.Se3SpaceMouseCfg.gripper_term` to :class:`~isaaclab.devices.Se3SpaceMouseCfg`
14+
to control whether the spacemouse device should return a gripper command.
15+
* Added :attr:`~isaaclab.devices.Se3KeyboardCfg.gripper_term` to :class:`~isaaclab.devices.Se3KeyboardCfg`
16+
to control whether the keyboard device should return a gripper command.
17+
18+
419
0.45.9 (2025-08-27)
520
~~~~~~~~~~~~~~~~~~~
621

source/isaaclab/isaaclab/devices/gamepad/se3_gamepad.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
class Se3GamepadCfg(DeviceCfg):
2323
"""Configuration for SE3 gamepad devices."""
2424

25+
gripper_term: bool = True
2526
dead_zone: float = 0.01 # For gamepad devices
2627
pos_sensitivity: float = 1.0
2728
rot_sensitivity: float = 1.6
@@ -75,6 +76,7 @@ def __init__(
7576
self.pos_sensitivity = cfg.pos_sensitivity
7677
self.rot_sensitivity = cfg.rot_sensitivity
7778
self.dead_zone = cfg.dead_zone
79+
self.gripper_term = cfg.gripper_term
7880
self._sim_device = cfg.sim_device
7981
# acquire omniverse interfaces
8082
self._appwindow = omni.appwindow.get_default_app_window()
@@ -155,9 +157,11 @@ def advance(self) -> torch.Tensor:
155157
# -- convert to rotation vector
156158
rot_vec = Rotation.from_euler("XYZ", delta_rot).as_rotvec()
157159
# return the command and gripper state
158-
gripper_value = -1.0 if self._close_gripper else 1.0
159-
delta_pose = np.concatenate([delta_pos, rot_vec])
160-
command = np.append(delta_pose, gripper_value)
160+
command = np.concatenate([delta_pos, rot_vec])
161+
if self.gripper_term:
162+
gripper_value = -1.0 if self._close_gripper else 1.0
163+
command = np.append(command, gripper_value)
164+
161165
return torch.tensor(command, dtype=torch.float32, device=self._sim_device)
162166

163167
"""

source/isaaclab/isaaclab/devices/keyboard/se3_keyboard.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
class Se3KeyboardCfg(DeviceCfg):
2323
"""Configuration for SE3 keyboard devices."""
2424

25+
gripper_term: bool = True
2526
pos_sensitivity: float = 0.4
2627
rot_sensitivity: float = 0.8
2728
retargeters: None = None
@@ -67,6 +68,7 @@ def __init__(self, cfg: Se3KeyboardCfg):
6768
# store inputs
6869
self.pos_sensitivity = cfg.pos_sensitivity
6970
self.rot_sensitivity = cfg.rot_sensitivity
71+
self.gripper_term = cfg.gripper_term
7072
self._sim_device = cfg.sim_device
7173
# acquire omniverse interfaces
7274
self._appwindow = omni.appwindow.get_default_app_window()
@@ -139,9 +141,11 @@ def advance(self) -> torch.Tensor:
139141
# convert to rotation vector
140142
rot_vec = Rotation.from_euler("XYZ", self._delta_rot).as_rotvec()
141143
# return the command and gripper state
142-
gripper_value = -1.0 if self._close_gripper else 1.0
143-
delta_pose = np.concatenate([self._delta_pos, rot_vec])
144-
command = np.append(delta_pose, gripper_value)
144+
command = np.concatenate([self._delta_pos, rot_vec])
145+
if self.gripper_term:
146+
gripper_value = -1.0 if self._close_gripper else 1.0
147+
command = np.append(command, gripper_value)
148+
145149
return torch.tensor(command, dtype=torch.float32, device=self._sim_device)
146150

147151
"""

source/isaaclab/isaaclab/devices/spacemouse/se3_spacemouse.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
class Se3SpaceMouseCfg(DeviceCfg):
2323
"""Configuration for SE3 space mouse devices."""
2424

25+
gripper_term: bool = True
2526
pos_sensitivity: float = 0.4
2627
rot_sensitivity: float = 0.8
2728
retargeters: None = None
@@ -58,6 +59,7 @@ def __init__(self, cfg: Se3SpaceMouseCfg):
5859
# store inputs
5960
self.pos_sensitivity = cfg.pos_sensitivity
6061
self.rot_sensitivity = cfg.rot_sensitivity
62+
self.gripper_term = cfg.gripper_term
6163
self._sim_device = cfg.sim_device
6264
# acquire device interface
6365
self._device = hid.device()
@@ -122,9 +124,11 @@ def advance(self) -> torch.Tensor:
122124
- gripper command: Last element as a binary value (+1.0 for open, -1.0 for close).
123125
"""
124126
rot_vec = Rotation.from_euler("XYZ", self._delta_rot).as_rotvec()
125-
delta_pose = np.concatenate([self._delta_pos, rot_vec])
126-
gripper_value = -1.0 if self._close_gripper else 1.0
127-
command = np.append(delta_pose, gripper_value)
127+
command = np.concatenate([self._delta_pos, rot_vec])
128+
if self.gripper_term:
129+
gripper_value = -1.0 if self._close_gripper else 1.0
130+
command = np.append(command, gripper_value)
131+
128132
return torch.tensor(command, dtype=torch.float32, device=self._sim_device)
129133

130134
"""

source/isaaclab_tasks/isaaclab_tasks/manager_based/manipulation/reach/reach_env_cfg.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77

88
import isaaclab.sim as sim_utils
99
from isaaclab.assets import ArticulationCfg, AssetBaseCfg
10+
from isaaclab.devices import DevicesCfg
11+
from isaaclab.devices.gamepad import Se3GamepadCfg
12+
from isaaclab.devices.keyboard import Se3KeyboardCfg
13+
from isaaclab.devices.spacemouse import Se3SpaceMouseCfg
1014
from isaaclab.envs import ManagerBasedRLEnvCfg
1115
from isaaclab.managers import ActionTermCfg as ActionTerm
1216
from isaaclab.managers import CurriculumTermCfg as CurrTerm
@@ -206,3 +210,20 @@ def __post_init__(self):
206210
self.viewer.eye = (3.5, 3.5, 3.5)
207211
# simulation settings
208212
self.sim.dt = 1.0 / 60.0
213+
214+
self.teleop_devices = DevicesCfg(
215+
devices={
216+
"keyboard": Se3KeyboardCfg(
217+
gripper_term=False,
218+
sim_device=self.sim.device,
219+
),
220+
"gamepad": Se3GamepadCfg(
221+
gripper_term=False,
222+
sim_device=self.sim.device,
223+
),
224+
"spacemouse": Se3SpaceMouseCfg(
225+
gripper_term=False,
226+
sim_device=self.sim.device,
227+
),
228+
},
229+
)

0 commit comments

Comments
 (0)