Project: Fin-Ray Tactile Sensor

A tactile sensor project designed to provide robotic grippers with the ability to detect contact, grip, and texture.

Tools used:

Arduino, Python, Physical Computing, Electronics

Process Outline:

Roles:

Hardware, sensor interfacting, data acquisition

Team members:

Hrichitaa Kuchaina, Amey Joshi

Project Brief

Robotic manipulation has become more dextrous but one important piece of context remians missing: contact. The sense of touch provides a lot of context for us humans on a day-to-day basis. For robotic grippers, it can provide information on placement, grip, and texture. This allows for the detection of slippage, identifying material, and how hard the grip is on a potentially fragile object -- all of which we do naturally and instinctively.

This is what our three-person team set out to achieve: to create a tactile sensor that can provide this crucial information to robotic grippers.

My work across all three focused on the hardware and the signal creation. This covers sensor fabrication, circuit design, and getting clean signals from the hardware onto the microcontroller in order to be processed in Python.

Fabrication and Iteration

We started out with two iterations of a 16x16 pressure-sensing surface. One iteration utilized copper thread and copper tape. Copper thread reduced bulk but also did not carry signals as effectively as copper tape.

The sensor was created with 16 rows and 16 columns of copper tape crossed in a grid on a flexible substrate, in our case, polyimide tape. Velostat was placed between this 16x16 array to create the foundation of our sensor.

Velostat is a piezoresistive material — its resistance drops under pressure. Each of the 256 row–column intersections becomes a pressure-sensitive cell.

We 3d printed a fin-ray gripper — a biomimetic structure derived from fish fin physiology that passively wraps around the object it grips. To improve mechanical compliance, we printed this in TPU and actuated it through a mechanical parallelogram driven by a high-torque servo.

Due to the size and shape, we used an 8×4 iteration of our initial pressure-sensing pad. A Parallax Propeller was used to run sensing and actuating in parallel, with one cog dedicated to scanning the sensor and a second cog for servo control. This allowed for closed loop control.

Circuit

Addressing 256 cells without 256 wires meant building the circuit around two components: a CD74HC4067 multiplexer reading the 16 rows, and a pair of SN74HC595 shift registers chained in series to drive the 16 columns. The scan walks a single high bit across the columns while the mux steps through rows. An Arduino Uno with one analog input can read the whole matrix, then stream it over serial to Python for a live heatmap.

Python was used to track the center of pressure across the 8×4 grid in order to classify the contact state: no contact, initial contact, stable, motion, and slip. The Propeller was used to initiate the appropriate response: hold pressure when stable, close fast when slipping. There was also a finite-element layer estimating contact forces from the pressure map, using different stiffness matrices for soft versus rigid objects.

Lessons

  1. The copper tape kept ripping. The gripper moves, and stiff lead wires tore the tape at the joints. The fix was soldering flexible wire between short stiff segments so the harness could move with the finger instead of fighting it.
  2. Layering the Velostat made it worse. Taping it down and doubling it up both made the stack too resistive to read. Leaving it loose between the copper layers gave far better signal variation.
  3. The analog readings were arbitrary until the circuit changed. Moving from high-signal rows to an active-low configuration made the readings more consistent.
  4. The gripper's shape mattered in the distribution of force. More diagonal crossbeams flexed better than fewer perpendicular ones. The curved outer edges distributed force better than triangular profiles.

Outcome

The end result was a functional gripper that adjusted its grip in response to the state of the object relative to its newfound sense of touch. It grips harder when it senses slippage, maintains grip when it is steady, and increases the grip when contact is sparse.