diff --git a/source/isaaclab/isaaclab/envs/mdp/actions/binary_joint_actions.py b/source/isaaclab/isaaclab/envs/mdp/actions/binary_joint_actions.py index 289045bd37ba..0ad8489b8170 100644 --- a/source/isaaclab/isaaclab/envs/mdp/actions/binary_joint_actions.py +++ b/source/isaaclab/isaaclab/envs/mdp/actions/binary_joint_actions.py @@ -34,7 +34,7 @@ class BinaryJointAction(ActionTerm): Based on above, we follow the following convention for the binary action: - 1. Open action: 1 (bool) or positive values (float). + 1. Open action: 1 (bool) or non-negative values (float). 2. Close action: 0 (bool) or negative values (float). The action term can mostly be used for gripper actions, where the gripper is either open or closed. This @@ -133,10 +133,10 @@ def process_actions(self, actions: torch.Tensor): self._raw_actions[:] = actions # compute the binary mask if actions.dtype == torch.bool: - # true: close, false: open + # action=True (1) -> open, action=False (0) -> close binary_mask = actions == 0 else: - # true: close, false: open + # action >= 0 -> open, action < 0 -> close binary_mask = actions < 0 # compute the command self._processed_actions = torch.where(binary_mask, self._close_command, self._open_command) diff --git a/source/isaaclab/isaaclab/utils/string.py b/source/isaaclab/isaaclab/utils/string.py index dc1cdaf53477..f78c8de31366 100644 --- a/source/isaaclab/isaaclab/utils/string.py +++ b/source/isaaclab/isaaclab/utils/string.py @@ -183,17 +183,18 @@ def resolve_matching_names( When a list of query regular expressions is provided, the function checks each target string against each query regular expression and returns the indices of the matched strings and the matched strings. - If the :attr:`preserve_order` is True, the ordering of the matched indices and names is the same as the order - of the provided list of strings. This means that the ordering is dictated by the order of the target strings - and not the order of the query regular expressions. + If the :attr:`preserve_order` is False (default), the ordering of the matched indices and names follows + the order of the provided list of strings. This means that the ordering is dictated by the order of the + target strings and not the order of the query regular expressions. - If the :attr:`preserve_order` is False, the ordering of the matched indices and names is the same as the order - of the provided list of query regular expressions. + If the :attr:`preserve_order` is True, the ordering of the matched indices and names follows the order + of the query regular expressions. For example, consider the list of strings is ['a', 'b', 'c', 'd', 'e'] and the regular expressions are ['a|c', 'b']. - If :attr:`preserve_order` is False, then the function will return the indices of the matched strings and the - strings as: ([0, 1, 2], ['a', 'b', 'c']). When :attr:`preserve_order` is True, it will return them as: - ([0, 2, 1], ['a', 'c', 'b']). + If :attr:`preserve_order` is False (default), then the function will return the indices of the matched strings and + the strings as: ([0, 1, 2], ['a', 'b', 'c']) - following the order of list_of_strings. When + :attr:`preserve_order` is True, it will return them as: + ([0, 2, 1], ['a', 'c', 'b']) - following the order of the regex keys. Note: The function does not sort the indices. It returns the indices in the order they are found. diff --git a/source/isaaclab_tasks/isaaclab_tasks/direct/inhand_manipulation/inhand_manipulation_env.py b/source/isaaclab_tasks/isaaclab_tasks/direct/inhand_manipulation/inhand_manipulation_env.py index c8d4fbf9e2d0..37584fddca3d 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/direct/inhand_manipulation/inhand_manipulation_env.py +++ b/source/isaaclab_tasks/isaaclab_tasks/direct/inhand_manipulation/inhand_manipulation_env.py @@ -229,8 +229,8 @@ def _reset_idx(self, env_ids: Sequence[int] | None): delta_max = self.hand_dof_upper_limits[env_ids] - self.hand.data.default_joint_pos[env_ids] delta_min = self.hand_dof_lower_limits[env_ids] - self.hand.data.default_joint_pos[env_ids] - dof_pos_noise = sample_uniform(-1.0, 1.0, (len(env_ids), self.num_hand_dofs), device=self.device) - rand_delta = delta_min + (delta_max - delta_min) * 0.5 * dof_pos_noise + dof_pos_noise = sample_uniform(0.0, 1.0, (len(env_ids), self.num_hand_dofs), device=self.device) + rand_delta = delta_min + (delta_max - delta_min) * dof_pos_noise dof_pos = self.hand.data.default_joint_pos[env_ids] + self.cfg.reset_dof_pos_noise * rand_delta dof_vel_noise = sample_uniform(-1.0, 1.0, (len(env_ids), self.num_hand_dofs), device=self.device) diff --git a/source/isaaclab_tasks/isaaclab_tasks/direct/shadow_hand_over/shadow_hand_over_env.py b/source/isaaclab_tasks/isaaclab_tasks/direct/shadow_hand_over/shadow_hand_over_env.py index 09bbff6e97c0..54334eb8d5fb 100644 --- a/source/isaaclab_tasks/isaaclab_tasks/direct/shadow_hand_over/shadow_hand_over_env.py +++ b/source/isaaclab_tasks/isaaclab_tasks/direct/shadow_hand_over/shadow_hand_over_env.py @@ -330,8 +330,8 @@ def _reset_idx(self, env_ids: Sequence[int] | torch.Tensor | None): delta_max = self.hand_dof_upper_limits[env_ids] - self.right_hand.data.default_joint_pos[env_ids] delta_min = self.hand_dof_lower_limits[env_ids] - self.right_hand.data.default_joint_pos[env_ids] - dof_pos_noise = sample_uniform(-1.0, 1.0, (len(env_ids), self.num_hand_dofs), device=self.device) - rand_delta = delta_min + (delta_max - delta_min) * 0.5 * dof_pos_noise + dof_pos_noise = sample_uniform(0.0, 1.0, (len(env_ids), self.num_hand_dofs), device=self.device) + rand_delta = delta_min + (delta_max - delta_min) * dof_pos_noise dof_pos = self.right_hand.data.default_joint_pos[env_ids] + self.cfg.reset_dof_pos_noise * rand_delta dof_vel_noise = sample_uniform(-1.0, 1.0, (len(env_ids), self.num_hand_dofs), device=self.device) @@ -348,8 +348,8 @@ def _reset_idx(self, env_ids: Sequence[int] | torch.Tensor | None): delta_max = self.hand_dof_upper_limits[env_ids] - self.left_hand.data.default_joint_pos[env_ids] delta_min = self.hand_dof_lower_limits[env_ids] - self.left_hand.data.default_joint_pos[env_ids] - dof_pos_noise = sample_uniform(-1.0, 1.0, (len(env_ids), self.num_hand_dofs), device=self.device) - rand_delta = delta_min + (delta_max - delta_min) * 0.5 * dof_pos_noise + dof_pos_noise = sample_uniform(0.0, 1.0, (len(env_ids), self.num_hand_dofs), device=self.device) + rand_delta = delta_min + (delta_max - delta_min) * dof_pos_noise dof_pos = self.left_hand.data.default_joint_pos[env_ids] + self.cfg.reset_dof_pos_noise * rand_delta dof_vel_noise = sample_uniform(-1.0, 1.0, (len(env_ids), self.num_hand_dofs), device=self.device)