Skip to content

Get started

We house the CAD tool, the readout firmware and Python package, and the readout-board hardware files at https://github.com/opentac/opentac. It is easy to clone and run locally. We provide a hosted version if one wants to try the CAD tool without installing anything on their machine, but it uses a much slower compute node (i.e., running locally will be much faster).

Try it online

Open OpenTac-CAD in your browser. You can draw an outline, import a DXF or STL, generate a board and download the files.

The online tool runs its design engine on a free server that sleeps when idle, so the first call to Generate of the day can take up to a minute while it wakes. Locally, a design generates in a second or two. We recommend you use the local option if you prefer that files never leave your computer.

OpenTac-CAD after Generate on its Yubi finger pad example: the result panel lists 122 taxels, the 60-pin readout board, the board grown to fit the wiring, 2 copper layers, a 14.5 mm tail chosen automatically so the printed case clears the connector, and 0 design-check violations; below it the PCB preview of the routed board, and the download bar with the design name and buttons for the printable PDF, the piezo layer DXF and piezo layer fold PDF (cut files for the piezoresistive layer), and the ZIP.
OpenTac-CAD after Generate on one of its examples, the Yubi finger pad: the design check, the routed board, and the downloadable files.

Run it on your computer

You only need git (or download the repository as a ZIP from GitHub): the start script installs uv if you don't have it already.

  1. Get the code:

    git clone --depth 1 https://github.com/opentac/opentac opentac
    
  2. Open the opentac folder and double-click the start script:

    System File
    macOS Start_OpenTac.command
    Windows Start_OpenTac.bat
    Linux run bash Start_OpenTac.command in a terminal
  3. The first run downloads what the tool needs into the folder's own environment (a few minutes, once). After that it starts in seconds and opens OpenTac-CAD in your browser.

If macOS blocks the double-click

Open Terminal, type bash (with a trailing space), drag Start_OpenTac.command onto the window and press Enter.

From a terminal the same thing is one command, run in the repository folder:

uv run opentac cad

Design with an AI agent

The repository includes a skill that teaches a coding agent to design sensors with the same compiler the CAD tool uses. Claude Code loads it automatically from .claude/skills/opentac/ when you start it in the repository folder; other agents read AGENTS.md, which points them to the same instructions. Describe the sensor in your own words, with its size, shape and where the cable should leave. See Design with an AI agent.

How to make an OpenTac sensor: A quick overview

For more details, we have the assembly guide that covers steps 2, 5 and 6.

The AgileX Piper jaw in OpenTac-CAD's 3D view, its curved contact surface selected in orange.
1. Design.
The paper cutout of the 1:1 PDF held against the gripper jaw.
2. Check the fit on paper.
The flex PCB as delivered: yellow polyimide with a gold taxel grid and a stiffened connector end.
3. Order the flex PCB.
The piezoresistive fabric cut to the shape of the sensing area.
4. Gather materials and cut the piezoresistive layer.
The assembled sensor in its printed TPU case, bump sheet on top.
5. Print the case and assemble.
The live view drawing a press on the AgileX jaw skin: bright taxels where a square block presses, dark elsewhere.
6. Flash, set up and view.
  1. Design the sensor in OpenTac-CAD and download the ZIP: the board files and the printed case, generated from the same design so they line up.
  2. Print the 1:1 PDF from the ZIP and hold it against the part to check the fit (see Check the fit on paper).
  3. Order the flex PCB and, if you don't have one, a readout board.
  4. Gather the materials: a piezoresistive film or fabric, TPU filament, a USB cable.
  5. Print the case from the ZIP's case/ folder, cut the film, and assemble.
  6. Flash the readout board, set it up once with your design, and view the live map:

    uv run opentac flash                  # put firmware on the readout board
    uv run opentac setup my_design.zip    # tell the board which sensor is plugged in (once)
    uv run opentac view                   # live heatmap
    

    The end of the assembly guide says what you should see and what to check if something looks wrong. Flash the firmware and Read a sensor have the details.

What you need on the bench

The parts of one sensor laid out on a desk: the printed TPU tray, the flex PCB with its tail, the black piezoresistive textile cut to shape, and the printed bump sheet.
The parts of one sensor, from left: printed tray, flex PCB, piezoresistive textile, bump sheet. A readout board and a USB cable complete it.
  • the flex PCB from your design, as ordered;
  • a readout board: the 60-pin board for sensors up to 30×30 taxels, or the 30-pin pair for up to 15×15 (see Readout boards);
  • a piezoresistive layer, such as LINQSTAT film or a piezoresistive textile (see Materials);
  • a 3D printer and TPU filament (85–95A) for the case and bump sheet;
  • double-sided tape, scissors, printer paper;
  • a micro-USB data cable for the readout board;
  • dfu-util or STM32CubeProgrammer, to flash the readout board (see Flash the firmware).

What it costs

Example quotes from JLCPCB, October 2026, shipping extra:

  • $16 for 5 flex PCBs of an example two-layer sensor, 89 × 60 mm, at a special-offer price (Order the sensor);
  • $378 for 5 assembled 60-pin readout boards (~$75 per board), reusable across sensors (Order the readout board);
  • about $372 for 5 assembled 30-pin pairs ($205.85 for the top boards and $165.98 for the bottom boards).

Getting help

Ask questions and share designs in GitHub Discussions, and report bugs on the repository's issue tracker. For a problem with a board or a sensor, include the output of uv run opentac info, run with the board plugged in, and attach the design ZIP if a design is involved. For other questions, contact Ariel Slepyan at aslepyan@mit.edu.