Tutorial 4: Collider Pairs#

We inspected the asset structure and collision meshes. Now we tackle a question that makes or breaks this dexterous hand simulation: which parts of the hand are allowed to collide with each other? In the real world, a finger can’t pass through the palm, but in simulation, overlapping collision geometry between links can create phantom contacts, jitter, and forces that blow the hand apart. Filtered Pairs in Isaac Sim let you turn off collision between specific rigid bodies so you keep the contacts that matter (finger on object, intentional finger-to-finger) and remove the ones that cause instability.

Learning Objectives#

In this tutorial, you will:

  • Explain how Filtered Pairs work and when to use them.

  • Identify problematic collision pairs using the Physics Debugger.

  • Add filtered pairs for the palm and pinky.

Prerequisites#

  • Complete Tutorial 3: Inspect Asset (Tutorial 3: Inspect Asset).

  • Have the Inspire Hand scene open in Isaac Sim with joint and collider visualization familiar from the previous tutorial.

Module 3.1: Understanding Filtered Pairs#

Filtered Pairs explicitly tell the physics engine: “Do not detect collision between these two rigid bodies.” In Isaac Sim, adjacent links (two links connected by a joint) in an articulation don’t self-collide by default, but non-adjacent links do. As you will see, many of those non-adjacent links can have overlapping or very close collision geometry. In these scenarios, you can get:

  • Unrealistic forces — The solver tries to resolve interpenetration between links that would never actually touch in the real mechanism.

  • Instability — The hand can jitter, jump, or blow apart as conflicting contacts fight each other.

  • Wasted compute — Simulating every anatomically possible self-contact is rarely necessary for grasping or manipulation.

So the goal is to filter the problematic pairs while keeping contacts that you care about (e.g. finger–object, or specific finger–finger contacts). Use filtered pairs judiciously: over-filtering can allow unrealistic interpenetration; under-filtering can cause instability. We’ll use the Physics Debugger to see exactly which pairs are causing trouble, then disable only those.

Module 3.2: Identifying Problematic Collision Pairs#

Which pairs should you filter? It’s not always obvious from simple inspection. The Physics Debugger is a helpful tool to see solid collision meshes while stepping through the simulation to understand which collision shapes are overlapping.

Here we’ll turn on self-collisions, watch the hand become unstable, then use the debugger to guide the filtering.

Note

For this tutorial we focus on the pinky (little finger) as a clear example; the same workflow applies to other fingers or links.

Step 1: Reproduce the problem#

  1. Press Play. With self-collisions disabled, the simulation is stable. Press Stop.

GIF showing simulation with self-collisions disabled (stable).
  1. Because enabling Articulation Root is a PhysX-specific API, we want to make sure we are authoring on the physx.usda layer. In the Layer tab, click the Insert Sublayer icon to add a new sublayer beneath the current layer stack.

The Layer panel with the Insert Sublayer icon highlighted.
  1. In the file dialog, navigate to your asset’s folder and select IsaacSim/Samples/Rigging/Inspire/module_1_start/payloads/Physics/physx.usda. Click Open to insert it as a sublayer.

File dialog with physx.usda selected as the sublayer to insert.
  1. Once physx.usda appears in the layer stack, Right-click on physx.usda and select Set Authoring Layer.

Context menu with Set Authoring Layer highlighted for physx.usda.

You should now see the physx.usda layer highlighted green, indicating it is the active authoring layer.

Layer panel with physx.usda highlighted green as the current authoring layer.
  1. In the Stage panel, select r_base_link. In the Property panel, scroll to Articulation Root and check Self Collisions Enabled.

Articulation Root with Self Collisions Enabled option.
  1. Press Play again. Links move erratically as overlapping collision geometry between non-adjacent links is now colliding, and the solver can’t resolve it cleanly.

GIF showing simulation instability with self-collisions enabled.

Step 2: Visualize solid collision meshes and find overlapping pairs#

We use the pinky as the example: visualize its collision meshes, find the overlaps, then filter those pairs in the next section.

  1. Open Utilities > Physics Debugger to show the Physics Debug panel.

Open the Physics Debug panel.
  1. Have the root prim inspire_hand selected. In Collision Mesh Debug Visualization, enable Solid Collision Mesh Visualization.

Enable Solid Collision Mesh Visualization.

Tip

Solid Collision Mesh Visualization shows only the collision meshes for the currently selected prim. Ensure the inspire_hand prim is selected in the Stage panel so all collision meshes are visible.

  1. Open Eye > Show by Type > Meshes and turn Meshes off so the solid collision meshes are easier to see.

Solid collision mesh visualization viewport with meshes hidden.
  1. In the Stage panel, deactivate the right_little_1 link (lower pinky) to expose the overlapping collision shapes underneath—the rubber pad and surrounding links.

Deactivate link to see rubber pad collision shapes overlap.
  1. Identify where right_little_rubber_1 (lower pinky rubber pad) overlaps with r_base_link (palm)—that is where a problematic self-collision is likely to occur.

Viewport showing solid collision meshes; pinky rubber pad and second link overlapping.

In the image above, with the lower pinky link hidden, the lower pinky rubber pad (tan/sand color) overlaps and collides with the palm (yellow). This is an example of a pair we will filter out to ensure stable simulation.

The schematic below shows which rigid body pairs of the pinky we will filter in this tutorial:

Schematic of rigid bodies and which collision pairs to filter.
  1. Open Eye > Show by Type > Meshes and toggle Meshes on to re-enable mesh visualization.

Solid collision mesh visualization viewport with meshes visible.

Module 3.3: Adding Filtered Pairs#

Next, we’ll filter out two specific collision pairs to prevent problematic self-collisions in the pinky. The pairs to filter are: (1) the palm and the pinky’s lower rubber pad, and (2) the lower pinky link and the pinky’s upper rubber pad.

Note

It doesn’t matter whether the filtered pair is a parent or child link; USD’s Physics Filtered Pairs will block collisions between the specified pairs in both directions.

Summary#

This tutorial covered:

  • How Filtered Pairs work and when to use them to prevent invalid self-collisions.

  • Using the Physics Debugger to visualize collision meshes and identify which pairs were causing instability.

  • Adding filtered pairs for the palm and pinky so the problematic pairs no longer produce invalid self-collisions.

Continue to Tutorial 5: Joint Drive Tuning (Tutorial 5: Joint Drive Tuning) to set drive limits (max force, max velocity) from the Inspire Hand specs, then to Tutorial 6 for stiffness and damping with the Gain Tuner.