# Add contact grippers

> Learn how to use kinematic contact grippers in your NOVA simulation.

![Contact Gripper](/assets/nova/omniservice/contact_gripper/contact_gripper.webp)

Configure a contact gripper in a scene.
This guide demonstrates the workflow using a kinematic, sensor-based approach.
A contact gripper handles workpieces ideally without modeling friction or force limits.

The contact gripper relies on a sensor prim that defines a sensor volume (displayed in transparent green in the image above). When the gripper node triggers in an action graph, it checks for prims inside the volume. If a prim is detected, its pose is fixed relative to the sensor prim until released.

The contact gripper itself does not require any tool geometry to function. The following steps use a suction gripper as a visual reference.

### Step 1: Add sensor prim

1. Create the sensor prim that serves as the sensor volume.
2. Place it inside the TCP `Xform` to ensure correct location.\
   Any `Mesh` or `Shape` works.\
   The sensor prim is colored green in the image.

> **Info:** The sensor prim does not need a `ColliderAPI`.

![Helper Prim](/assets/nova/omniservice/contact_gripper/helper_prim.webp)

### Step 2: Create action graph

1. Create an action graph and insert the `Contact Gripper` node from the Wandelbots library.

In the example, an `On IO Change` node from the Wandelbots library triggers the grasp and release of
the workpiece.

![Action Graph](/assets/nova/omniservice/contact_gripper/action_graph.webp)

2. Configure the `Contact Gripper` node with the following properties:

- `Sensor Prim`: Reference path of the sensor volume defined above.
- `Candidate Prim Paths`: Wildcard prim path to constrain the choice of graspable workpieces.
- `Exclude Prim Paths`: Wildcard prim path to exclude prims from being grasped.

![OGN configuration](/assets/nova/omniservice/contact_gripper/ogn_configuration.webp)

The example node is configured with the values below.

**Inputs**

| Property | Example value |
| - | - |
| Helper Prim | /World/Yaskawa\_AR2010/suction\_gripper/tcp\_suctiongripper/Cube |
| Candidate Prim Paths | - |
| Exclude Prim Paths | /World/Yaskawa\_AR2010/\* |
| Fix | Input Variable (set via `On IO Change` node) |

**Outputs**

| Property | Example value |
| - | - |
| Attached Prim Path | /World/Workpiece/Cube |
| Is Attached | True |

### Step 3: Test contact gripper

Video: [/video/omniservice/contact\_gripper/example\_program.webm](/video/omniservice/contact_gripper/example_program.webm)

Test the gripper by triggering the IO signal defined in the action graph.

The workpiece is detected and listed in the `Attached Prim Path` property, grasped when `Fix` is set to `True`,
and released when `Fix` switches back to `False`.
