-
Notifications
You must be signed in to change notification settings - Fork 3.8k
[Task Clean-up] Dexterous Part 3/9: Add success-rate metrics to the reorientation Direct tasks #6413
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Task Clean-up] Dexterous Part 3/9: Add success-rate metrics to the reorientation Direct tasks #6413
Changes from all commits
6e8a63e
21dbb17
79f8750
a3e8045
2d61229
2c38c32
0618f81
d29afc7
2d4594a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| 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. |
| 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 |
|---|---|---|
| @@ -0,0 +1,114 @@ | ||
| # Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md). | ||
|
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): | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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( | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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, | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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)?
Collaborator
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe 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), | ||
| ) | ||
| }, | ||
| ) | ||
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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