A tactile sensor project designed to provide robotic grippers with the ability to detect contact, grip, and texture.
Arduino, Python, Physical Computing, Electronics
Hardware, sensor interfacting, data acquisition
Hrichitaa Kuchaina, Amey Joshi
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.
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.
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.
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.
Copyright © 2021 Dana Sy-Ching