-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Closed
Description
Question
Gripper “tunnels” through deformable glove during pre-grasp, then latches closed (no contact-based gating)
Component(s): Isaac Lab env / deformable contact | Nextage gripper drives | grasp-latch logic
left_wireframe.webm
left_color.webm
Videos (evidence)
Summary
During the scripted pre-grasp phase the Robotiq fingers approach the glove mouth, but instead of squeezing the fabric they interpenetrate (“tunnel”) through the deformable mesh.
This looks like a combination of:
- Deformable–rigid contact resolution too weak (low contact budget / offsets / resolution),
- Very stiff/damped gripper drives pushing through the cloth
Environment details (from code)
- Physics:
dt=1/120,decimation=2→ control at 60 Hz - Solver iters (articulation root):
NEXTAGE_CFG = ArticulationCfg(
spawn=sim_utils.UsdFileCfg(
usd_path=os.path.join(PARENT_DIR, "assets/nextage_description/urdf/nextage_edit.usd"),
activate_contact_sensors=True,
copy_from_source=True,
rigid_props=sim_utils.RigidBodyPropertiesCfg(
disable_gravity=False,
max_depenetration_velocity=5.0,
),
articulation_props=sim_utils.ArticulationRootPropertiesCfg(
enabled_self_collisions=True,
fix_root_link=True,
solver_position_iteration_count=8,
solver_velocity_iteration_count=0,
),-
PhysX GPU budgets reduced:
bounce_threshold_velocity=0.2 gpu_temp_buffer_capacity=2**19 gpu_max_soft_body_contacts=2**17 gpu_collision_stack_size=2**19
-
Deformable glove:
object_cfg: DeformableObjectCfg = DeformableObjectCfg(
prim_path="/World/envs/env_.*/Object",
init_state=DeformableObjectCfg.InitialStateCfg(pos=default_object_pos, rot=[0.7071, 0.0, 0.7071, 0.0]),
spawn=UsdFileCfg(
usd_path=object_usd,
copy_from_source=True,
visible=True,
scale=(1.0, 1.0, 1.0),
deformable_props=DeformableBodyPropertiesCfg(
deformable_enabled=True,
kinematic_enabled=False,
self_collision=True,
simulation_hexahedral_resolution=10,
collision_simplification=True,
collision_simplification_remeshing=True,
collision_simplification_remeshing_resolution=30,
collision_simplification_target_triangle_count=0,
collision_simplification_force_conforming=True,
contact_offset=0.005,
rest_offset=0.003,
),
visual_material=sim_utils.PreviewSurfaceCfg(
diffuse_color=(0.8, 0.2, 0.2),
opacity=1.0,
),
),
debug_vis=False,
)- Material:
physics_material=DeformableBodyMaterialCfg(
youngs_modulus=8.0e7,
poissons_ratio=0.48,
density=1000.0,
damping_scale=1.0,
elasticity_damping=0.012,
dynamic_friction=0.6,
),-
Gripper drives (both hands):
velocity_limit=0.2 effort_limit=200.0 stiffness=2000.0 damping=2000.0
_grasp_min_aperture = 0.018 left/right_ee_euclidean_distance < _grasp_min_aperture ⇒ grasp = True
-
After
_grasp == True, the code latches the current gripper joints and enters policy phase with the latched pose held:self._grip_latched_q = latched.clone() self._policy_enabled = True ... self._set_grip_q(q_cmd, self._grip_latched_q) # keeps grip fixed
Steps to reproduce
- Launch env with a deformable glove object as configured in
object_cfg(hexahedral res=10). - Start an episode (policy disabled initially).
- Observe pre-grasp: gripper closes toward glove mouth.
- Fingers penetrate the glove mesh;
_graspflipsTruefrom EE distance, without tactile. - Policy phase begins; gripper stays closed, holding nothing.
Expected vs Actual
- Expected: Fingers contact cloth, compress it, do not pass through.
- Actual: Cloth interpenetration occurs; grasp latches from EE distance alone
If there is anything that needs further discussion, please let me know.
I would really appreciate your support, and I look forward to your reply.
elle-miller
Metadata
Metadata
Assignees
Labels
No labels