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#
Press Play. With self-collisions disabled, the simulation is stable. Press Stop.
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.
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.
Once physx.usda appears in the layer stack, Right-click on physx.usda and select Set Authoring Layer.
You should now see the physx.usda layer highlighted green, indicating it is the active authoring layer.
In the Stage panel, select
r_base_link. In the Property panel, scroll to Articulation Root and check Self Collisions Enabled.
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.
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.
Open Utilities > Physics Debugger to show the Physics Debug panel.
Have the root prim
inspire_handselected. In Collision Mesh Debug 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.
Open Eye > Show by Type > Meshes and turn Meshes off so the solid collision meshes are easier to see.
In the Stage panel, deactivate the
right_little_1link (lower pinky) to expose the overlapping collision shapes underneath—the rubber pad and surrounding links.
Identify where
right_little_rubber_1(lower pinky rubber pad) overlaps withr_base_link(palm)—that is where a problematic self-collision is likely to occur.
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:
Open Eye > Show by Type > Meshes and toggle Meshes on to re-enable mesh visualization.
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.
Palm and Pinky Link 1 Rubber Pad#
First, let’s prevent the palm and the pinky’s lower rubber pad from colliding. To follow Asset Structure 3.0 best practices, Filtered Pairs use the neutral Physics API, so we should apply these changes to the appropriate layer—physics.usda.
In the Layer tab, expand physx.usda. You should see physics.usda listed in the hierarchy.
Right-click on physics.usda and select Set Authoring Layer.
You should now see the physics.usda layer highlighted green, indicating it is the active authoring layer.
In the Stage tab, select the
r_base_linkprim. In the Property panel, click Add > Physics > Filtered Pairs.
With
r_base_linkstill selected, go to the Property panel. Find the Filtered Pairs section and click Add Target to add a new filtered collision pair.
In the pop-up that appears, browse or type to select
right_little_rubber_1.
After completing these steps, collisions between the palm (r_base_link) and the pinky’s lower rubber pad (right_little_rubber_1) are filtered out. This means the overlapping contact points between them are disabled, helping stabilize the simulation and preventing unwanted self-collisions.
Pinky Link 1 and Pinky Link 2 Rubber Pad#
Now, let’s filter collisions between the lower pinky link (right_little_1) and the pinky’s upper rubber pad (right_little_rubber_2).
In the Stage panel, select the
right_little_1prim (lower link of the pinky). In the Property panel, click Add > Physics > Filtered Pairs.
With
right_little_1still selected, go to the Property panel. Find the Filtered Pairs section and click Add Target to add a new filtered collision pair.In the pop-up window, browse or type to select
right_little_rubber_2(the upper pinky rubber pad), and confirm the selection.
Press Play. The pinky (little finger) should now move more stably; the other fingers will still be unstable until their collision pairs are filtered the same way.
Click on the blue files icon next to physx.usda (Authoring Layer) to save the changes to physx.usda.
Note
Open the checkpoint at IsaacSim/Samples/Rigging/Inspire/module_3_end-checkpoint_1/inspire_hand.usda before starting Tutorial 5. It includes all collision filters for stability, plus additional filtered pairs (e.g. finger tips and pads) for computational performance.
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.