Skip to content

[Question] Gripper “tunnels” through deformable glove during pre-grasp, then latches closed (no contact-based gating) #3970

@TakumaTsukakoshi

Description

@TakumaTsukakoshi

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:

  1. Deformable–rigid contact resolution too weak (low contact budget / offsets / resolution),
  2. 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_aperturegrasp = 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

  1. Launch env with a deformable glove object as configured in object_cfg (hexahedral res=10).
  2. Start an episode (policy disabled initially).
  3. Observe pre-grasp: gripper closes toward glove mouth.
  4. Fingers penetrate the glove mesh; _grasp flips True from EE distance, without tactile.
  5. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions