Skip to content
Merged
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Added
^^^^^

* Added the dexterous-hand actuated-joint and fingertip body-name lists
(:obj:`~isaaclab_assets.robots.shadow_hand.SHADOW_ACTUATED_JOINT_NAMES`,
:obj:`~isaaclab_assets.robots.shadow_hand.SHADOW_FINGERTIP_BODY_NAMES`,
:obj:`~isaaclab_assets.robots.allegro.ALLEGRO_ACTUATED_JOINT_NAMES`,
:obj:`~isaaclab_assets.robots.allegro.ALLEGRO_FINGERTIP_BODY_NAMES`) to the
robot asset modules so tasks can reference them from a single source.
29 changes: 29 additions & 0 deletions source/isaaclab_assets/isaaclab_assets/robots/allegro.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,32 @@
soft_joint_pos_limit_factor=1.0,
)
"""Configuration of Allegro Hand robot."""


ALLEGRO_FINGERTIP_BODY_NAMES: list[str] = [
"index_link_3",
"middle_link_3",
"ring_link_3",
"thumb_link_3",
]
"""Allegro Hand fingertip body names."""

ALLEGRO_ACTUATED_JOINT_NAMES: list[str] = [
"index_joint_0",
"middle_joint_0",
"ring_joint_0",
"thumb_joint_0",
"index_joint_1",
"index_joint_2",
"index_joint_3",
"middle_joint_1",
"middle_joint_2",
"middle_joint_3",
"ring_joint_1",
"ring_joint_2",
"ring_joint_3",
"thumb_joint_1",
"thumb_joint_2",
"thumb_joint_3",
]
"""Allegro Hand actuated joint names, in the Direct task's actuation order."""
34 changes: 34 additions & 0 deletions source/isaaclab_assets/isaaclab_assets/robots/shadow_hand.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,37 @@
soft_joint_pos_limit_factor=1.0,
)
"""Configuration of Shadow Hand robot."""


SHADOW_FINGERTIP_BODY_NAMES: list[str] = [
"robot0_ffdistal",
"robot0_mfdistal",
"robot0_rfdistal",
"robot0_lfdistal",
"robot0_thdistal",
]
"""Shadow Hand fingertip body names (identical on every backend asset)."""

SHADOW_ACTUATED_JOINT_NAMES: list[str] = [
"robot0_WRJ1",
"robot0_WRJ0",
"robot0_FFJ3",
"robot0_FFJ2",
"robot0_FFJ1",
"robot0_MFJ3",
"robot0_MFJ2",
"robot0_MFJ1",
"robot0_RFJ3",
"robot0_RFJ2",
"robot0_RFJ1",
"robot0_LFJ4",
"robot0_LFJ3",
"robot0_LFJ2",
"robot0_LFJ1",
"robot0_THJ4",
"robot0_THJ3",
"robot0_THJ2",
"robot0_THJ1",
"robot0_THJ0",
]
"""Shadow Hand actuated joint names, in the Direct task's actuation order."""
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
Added
^^^^^

* Added behavioral-success metrics and threshold-independent episode-error
diagnostics to the dexterous reorientation environments.

Fixed
^^^^^

* Fixed dexterous hand resets that could initialize joints below their lower
position limits. Reset joint positions now sample uniformly across the full
joint range; previously the distribution was biased toward the lower half of
the range.
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
from isaaclab.sim.spawners.materials.physics_materials_cfg import RigidBodyMaterialCfg
from isaaclab.utils.configclass import configclass

from isaaclab_tasks.core.reorient.config.shadow_hand.shadow_hand_env_cfg import ShadowHandRobotCfg
from isaaclab_tasks.core.reorient.config.shadow_hand.shadow_hand_common import ShadowHandRobotCfg

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does the base env config need to import the robot config? This should be handled in the per-robot config, and probably just use MISSING until then

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

defer the fixes to next PR. CI has been slow

from isaaclab_tasks.utils import PresetCfg, preset

from isaaclab_assets.robots.shadow_hand import SHADOW_HAND_CFG
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
Comment thread
StafaH marked this conversation as resolved.
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause

"""Allegro Hand identity shared by the Direct and manager-based reorientation tasks.

Asset and marker configurations, joint/body name lists, backend physics
presets, and the sim mixin. No task tunables.
"""

from isaaclab_newton.physics import MJWarpSolverCfg, NewtonCfg
from isaaclab_ovphysx.physics import OvPhysxCfg
from isaaclab_physx.physics import PhysxCfg

import isaaclab.sim as sim_utils
from isaaclab.assets import ArticulationCfg, RigidObjectCfg
from isaaclab.markers import VisualizationMarkersCfg
from isaaclab.utils.assets import ISAAC_NUCLEUS_DIR
from isaaclab.utils.configclass import configclass

from isaaclab_tasks.utils import PresetCfg

from isaaclab_assets.robots.allegro import ALLEGRO_HAND_CFG


@configclass
class ObjectCfg(PresetCfg):

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: CubeObjectCfg or CubeCfg?

physx = RigidObjectCfg(
prim_path="/World/envs/env_.*/object",
spawn=sim_utils.UsdFileCfg(
usd_path=f"{ISAAC_NUCLEUS_DIR}/Props/Blocks/DexCube/dex_cube_instanceable.usd",
rigid_props=sim_utils.RigidBodyPropertiesCfg(
kinematic_enabled=False,
disable_gravity=False,
enable_gyroscopic_forces=True,
solver_position_iteration_count=8,
solver_velocity_iteration_count=0,
sleep_threshold=0.005,
stabilization_threshold=0.0025,
max_depenetration_velocity=1000.0,
),
mass_props=sim_utils.MassPropertiesCfg(density=400.0),
scale=(1.2, 1.2, 1.2),
),
init_state=RigidObjectCfg.InitialStateCfg(pos=(0.0, -0.17, 0.56), rot=(0.0, 0.0, 0.0, 1.0)),
)
newton_mjwarp = ArticulationCfg(
prim_path="/World/envs/env_.*/object",
spawn=sim_utils.UsdFileCfg(
usd_path=f"{ISAAC_NUCLEUS_DIR}/Props/Blocks/DexCube/dex_cube_instanceable.usd",
mass_props=sim_utils.MassPropertiesCfg(density=400.0),
scale=(1.2, 1.2, 1.2),
),
init_state=ArticulationCfg.InitialStateCfg(
pos=(0.0, -0.17, 0.565), rot=(0.0, 0.0, 0.0, 1.0), joint_pos={}, joint_vel={}
),
actuators={},
articulation_root_prim_path="",
)
ovphysx = RigidObjectCfg(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks identical to physx, ovphysx = physx?

prim_path="/World/envs/env_.*/object",
spawn=sim_utils.UsdFileCfg(
usd_path=f"{ISAAC_NUCLEUS_DIR}/Props/Blocks/DexCube/dex_cube_instanceable.usd",
rigid_props=sim_utils.RigidBodyPropertiesCfg(
kinematic_enabled=False,
disable_gravity=False,
enable_gyroscopic_forces=True,
solver_position_iteration_count=8,
solver_velocity_iteration_count=0,
sleep_threshold=0.005,
stabilization_threshold=0.0025,
max_depenetration_velocity=1000.0,
),
mass_props=sim_utils.MassPropertiesCfg(density=400.0),
scale=(1.2, 1.2, 1.2),
),
init_state=RigidObjectCfg.InitialStateCfg(pos=(0.0, -0.17, 0.56), rot=(0.0, 0.0, 0.0, 1.0)),
)
default = newton_mjwarp


@configclass
class PhysicsCfg(PresetCfg):
physx = PhysxCfg(
bounce_threshold_velocity=0.2,
)
newton_mjwarp = NewtonCfg(
solver_cfg=MJWarpSolverCfg(
integrator="implicitfast",
njmax=80,
nconmax=70,
impratio=10.0,
cone="elliptic",
update_data_interval=2,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is 2 deliberate here? It's an interesting choice, what does 2 do vs 1 (updating state every step)?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is common for mywarp config in the repo. seems to improve stability.

),
num_substeps=2,
)
ovphysx = OvPhysxCfg()
default = newton_mjwarp


# Scene pieces shared verbatim by the manager-based variant.
ROBOT_CFG = ALLEGRO_HAND_CFG.replace(prim_path="/World/envs/env_.*/Robot")
OBJECT_CFG = ObjectCfg()
GOAL_OBJECT_CFG = VisualizationMarkersCfg(
prim_path="/Visuals/goal_marker",
markers={
"goal": sim_utils.UsdFileCfg(
usd_path=f"{ISAAC_NUCLEUS_DIR}/Props/Blocks/DexCube/dex_cube_instanceable.usd",
scale=(1.2, 1.2, 1.2),
)
},
)
Loading
Loading