Personal project · Viam module

Gripper Touch-Off

Finds where a gripper's fingertips really are by touching them to the table, then fixes the gripper's frame so motion planning stops driving them into it.

The problem

Motion planning keeps a gripper off the table using its collision model. If the real fingertips reach further than the model (different fingers, an adapter plate, or a frame offset that was only estimated), the planner will drive them into the table. On one xArm cell, the real fingertips reached 24 mm past the gripper's model.

How it works

  • It works the way machinists set up a tool: bring the fingertips down onto the work surface until they just pinch a sheet of paper. reach = gripper-frame height at contact − table height (− the paper's 0.1 mm)
  • Jog with paper: the closed gripper points straight down and jogs toward bare table in steps as small as 0.1 mm until the paper drags.
  • Manual mode: on arms that support it, such as UFactory xArms, you rest the fingertips on the table by hand while a status card shows the live tilt.
  • Table height comes from an RGB-D camera, which also picks bare spots to touch, or from a known height in the world frame.
  • Frame update: the module shifts the gripper's frame along its pointing axis so the collision model ends exactly at the real fingertips, then writes it back through Viam's API. For a gripper defined in a shared fragment, it adds a per-machine fragment_mods override instead of editing the fragment.
  • Everything runs from the machine's CONTROL tab in the Viam app: step buttons, a jog-step switch, and a live status card.

My role

Solo project: design, implementation, and documentation.

Gallery