Skip to content

OpenTac

An open ecosystem for customizable, scalable, and transferable 3D tactile sensing

Ariel SlepyanJ, M, Geeta Chandra Raju BethalaJ, Jiafeng GuJ, Anagha Rajendra DangleJ, Yinzhe ZhouJ, Hongyuan FuJ, Jade SimJ, Tuhin BasuJ, Xinyi YinJ, Md Faizal KarimJ, Gregory HagerJ†, Homanga BharadhwajJ†, Anand BhattadJ†, Krishna Murthy JatavallabhulaJ†, Nitish V. ThakorJ†

JJohns Hopkins University MMassachusetts Institute of Technology †Equal advising

Contact: Ariel Slepyan, Nitish V. Thakor,

Preprint; catch us at CoRL 2026 for a live demo

Open tools to design, fabricate, read and simulate flex-PCB tactile skins that sense normal and shear force, shaped to any robot surface.

OpenTac skins on robot parts: orange bump sheets over flex PCBs on gripper fingers, a fingertip, a foot and a curved pad, with bare flex PCBs in front.

Automatically sensorize any surface on a robot

As part of the OpenTac ecosystem, we develop OpenTac-CAD, a design tool to automatically sensorize any surface on a robot with OpenTac tactile sensors. In this visualization, we show examples for six different robots from the MuJoCo Menagerie (Unitree G1 and Go2, LEAP Hand, AgileX Piper, Robotiq 2F-85, UMI gripper). Contact responses in the animation are simulated.

Overview

OpenTac is an ecosystem for highly customizable, scalable, and transferable tactile sensing. We provide tools ranging across sensor design, simulation, cross-sensor transfer, data visualization, tactile policy learning, and more.

The OpenTac ecosystem: robot geometry given as text, a 2D outline or a 3D model goes into OpenTac-CAD, which produces the fabrication files (flex PCB Gerbers, shear-bump case, readout board) and a shared sensor manifest describing geometry, taxels, wiring, bumps and design; OpenTac-Sim, OpenTac-Transfer and OpenTac-Xampling read that manifest.
The OpenTac ecosystem. OpenTac-CAD turns a text description, a 2D outline or a 3D model into a fabrication-ready sensor: flex-PCB Gerbers and a 3D-printed shear-bump case, read out by a reusable USB readout board. Every design also has a sensor manifest, which OpenTac-Sim, OpenTac-Transfer and OpenTac-Xampling use to simulate the sensor, map data across designs and acquire it at high frame rates.

OpenTac tactile sensors in action

A finger presses and twists a sensor. Colour is normal force; arrows are shear.
Hammered, thrown, stomped on and run over with an office chair, then plugged back in: the sensor works just as well.
From about 0.1 N to about 10 N at 10 kΩ feedback (default gains; can be tweaked to change range).
A heat gun directed at the sensor produces no false contact response.
Some key results
Design and fabrication We designed over 30 sensors automatically, using our OpenTac-CAD tool. All these designs passed design-rule checks, and resulted in sensors that were fabricated and tested.
Normal and shear force accuracy Against an OptoForce reference, a bumped 4×4 patch achieves in-sample R² of 0.95, 0.93 and 0.96 for Fx, Fy and Fz.
Fast readout We use an adaptive readout mechanism for sparse and fast scanning. On a 1024-taxel skin, conventional (raster) scanning results in 67 frames/s; while our adaptive method (OpenTac-Xampling) results in 1286 partial frames/s (16 taxels per frame).
Policy learning We use the sensor in tactile policy learning experiments involving contact rich insertion tasks on the SO-101 robot arm and a bimanual YAM robot. We find that shear data is crucial in these tasks.
Grasp control We demonstrate, on a Dexmate Vega-1 Pro robot, that shear aids slip prevention when holding a cup under impulsive loading.

All results

The OpenTac sensor: normal and shear force from taxel-aligned bumps

Each skin is a flexible PCB with a grid of interdigitated electrodes (taxels), a piezoresistive film on top, and a 3D-printed lid with one soft bump over every 2×2 group of taxels.

Pressing a bump with a downward normal force results in an approximately uniform pressure distribution over the four underlying taxels. Tangential force tilts the bumps, creating a pressure (and consequently, resistance) differential over the underlying taxels, allowing us to estimate shear forces. The sum of the four readings gives the normal force, and their differences give the two shear components. Because each bump is generated with the board and is guaranteed to sit over a known 2×2 group of taxels, both components are computed directly from the four readings and can be calibrated to newtons against a reference sensor.

How it works

OpenTac-CAD: Design a sensor for any surface

We develop a design tool, OpenTac-CAD, to automatically sensorize new surfaces. Given a 2D outline drawn within our tool, a DXF file, or an STL file, OpenTac-CAD lays out a taxel grid, places and routes wires, designs the connector, and produces a set of Gerber files (for the flexible PCB), a 3D-printable TPU bump case (for shear sensing and alignment), and a manifest file (for sharing sensor metadata across the OpenTac ecosystem). Automatic designs cover more of the target surface than the largest rectangular array that fits, sensorizing 75–93% of the target area on five robot surfaces in 0.7–2.6 s.

Try it online Design guide

All 31 fabricated OpenTac flex PCBs laid out flat, from small fingertip pads to a 1024-taxel square.
The 31 sensors we show here were all designed using OpenTac-CAD and subsequently fabricated, and found to work reliably.

Order and assemble an OpenTac sensor

Fabricating an OpenTac sensor involves 3 phases. First, we use the OpenTac-CAD tool to design a sensor for the surface we want to mount it on. Second, we fabricate the flexible PCB from the generated Gerber files, which can be ordered from manufacturers such as JLCPCB or PCBWay, and the readout board from its released fabrication files. Third, we 3D-print a TPU bump sheet (also generated by OpenTac-CAD) using a commodity 3D printer. Assembly is straightforward: the designed case makes it extremely convenient to stack the flex PCB, a piezoresistive film, and the TPU bump grid.

Assembly guide Build steps

USB readout boards can be re-used across designs

We provide two default readout board designs, based on the number of taxels / wires a sensor has. The 60-pin readout board reads up to 30×30 taxels in 37 × 34.3 mm and plugs straight into USB; a stacked 30-pin pair reads up to 15×15 in a 16 × 22.8 mm footprint. Each board carries an IMU, and 30-pin boards can be daisy-chained over I2C to read a whole hand from one USB port.

The board stores the sensor's layout in its own flash, so after a one-time setup the live view knows where every taxel is. It is possible to customize and design larger readout boards if needed -- we make our gerbers freely available for customization.

Readout boards Read a sensor

Adaptive, kilohertz-rate sampling

OpenTac-Xampling is an adaptive acquisition method that results in fast readouts. Instead of scanning every single taxel when reading out every frame, we leverage the idea that most contact events tend to be sparse. Each frame reads a small search sample of taxels and then grows around any contact until it is fully measured. This enables skipping through large swaths of empty taxels, works on any sensor layout, and, in grow mode, is guaranteed to be no worse than raster scanning.

This helps capture contacts that happen in a few milliseconds (and are missed by raster scanning). E.g., on a 1024-taxel skin, full raster scanning gives 67 frames/s; reading 16 taxels per frame gives 1286 frames/s. Raster scanning caught two of six ~3 ms tennis-ball impacts; budgets of 16 to 256 taxels per frame caught all three impacts tested at each budget.

Xampling

Two 30 cm drops at 128× slow motion: raster scanning misses the impact; Xampling at 32 taxels per frame catches it. The 996 updates/s on the clip is the rate of that recording.

Simulating OpenTac sensors and cross-sensor transfer

The shared sensor manifest produced by OpenTac-CAD is used to specify mechanical and electronic properties of the sensor. This manifest can be used to create simulation models of the sensor. We build a simulation tool, OpenTac-Sim, which models each bump as a rigid body on a five-degree-of-freedom compliant joint in MuJoCo. We also have a foam-contact model for plain skins (i.e., variants of OpenTac that do not require shear sensing and forgo the TPU bump grid).

OpenTac-Transfer maps calibrated contact between skins of different shape and taxel pitch, in physical coordinates and without paired data. Across four skins it reached a median shape F1 of 0.750, against 0.714 and 0.634 for two array-resizing baselines. For now, OpenTac-Transfer works on flat skins. We welcome contributors extending this module further.

Simulate Transfer

Peg insertion in the simulator of the paper's policy experiments, with deformable pads: the normal-and-shear policy inserts the peg, the normal-only policy does not.
OpenTac-Transfer: one block pressed into three skins of different shape and pitch, placed on one millimetre grid.

Robot control and manipulation policy learning

We deployed the skins on four robots and a handheld UMI gripper. On an SO-101 arm, we evaluated two contact-rich tasks (peg-in-hole insertion, plug-in-socket insertion). On both tasks, shear sensors had the highest success rates. Particularly on the plug insertion task, shear was crucial -- merely adding normal force did not yield any improvements over proprioception alone. On a bimanual YAM robot, we designed a custom fixture for a lock-key insertion task, and only policies with shear information could achieve substantial success rates.

Note: All our robot learning experiments solely use tactile information and proprioception. No visual information was used.

All results

SO-101 arm, plug-in-socket insertion: OpenTac-3D inserts the plug; while OpenTac-1D and proprioception-only fail.
Lock-key insertion with bimanual YAM arms (sensors used only on the left gripper): OpenTac-3D inserts the key; OpenTac-1D and proprioception-only fail while attempting insertion.
UR5 moving a ball along the plate's edge: the normal-force controller (top) is quicker but cuts across the sensor; the shear-force controller (bottom) is slower and does not.
Dexmate forearm skin: pushed with a stick, the arm yields in the direction of the push and holds its pose when the push stops.
Dexmate Vega-1 Pro, bimanual cup holding: normal-only feedback (left) and normal-and-shear feedback (right).
UMI gripper: a hand turns the held ball; normal and shear on both finger skins.
UMI gripper, external contact: a hand pushes the held screwdriver, and the force shows in both finger skins.

How to get started

Clone the repository and double-click Start_OpenTac.command (macOS) or Start_OpenTac.bat (Windows); the CAD tool opens in your browser. Or try the hosted version first, no install needed.

git clone --depth 1 https://github.com/opentac/opentac opentac
cd opentac
uv run opentac cad

To build a sensor from a design, follow the assembly guide: it goes from a paper fit check to the sensor showing live readings.

Working with an AI coding agent? The repository ships a skill for designing sensors: Claude Code loads it automatically, and other agents read AGENTS.md.

OpenTac-CAD's start screen: the robot gallery, with cards for the ALOHA ViperX 300 gripper finger, the AgileX Piper jaw, an Allegro Hand fingertip and the Allegro Hand palm, each with its sensor surface in orange and a Use this shape button.
OpenTac-CAD's start screen, first row of the robot gallery.