rSkin is a pressure sensitive grid made of conductive, non-conductive and piezoresistive fabrics. While the grid described in this Instructable is 28 rows x 28 columns large, ideally it can be scaled up to cover much larger areas.
rSkin is made of stretchy materials so that it can fit tightly over the robot arm. The conductive rows and columns are sewn using a conductive thread to adjacent pieces of non-conductive stretch materials (base substrates). Stretchy piezoresistive fabric is sandwiched between the conductive rows and columns, and acts as a pressure sensitive layer. Piezoresistive
materials have the property that their electrical resistance decreases under under mechanical stress, such as pressure.
The photo included in this step shows the conductive rows and columns made from strips of conductive fabric sewn to their base substrates with a regular (non-conductive) thread. This photo was taken during the prototyping stage and while it nicely shows the layering of the skin (the white layer is flipped to face the pink layer), in the final version we sewed the conductive rows and columns using conductive thread, rather than using strips of conductive fabric. Our choice to use the thread instead of the fabric, came because by minimizing the conductive surface (a strand of thread is thinner than a strip of fabric), we increased the range of pressure sensitivity through the piezoresistive fabric.
Once the fabric part of the matrix is constructed, the rows and columns are individually connected to in/outputs of a microcontroller that acts as an analog to digital converter. Because there are more rows and columns than most microcontrollers have pins for, we use multiplexers
to increase the number of in/out connections. But essentially what we we are doing is powering the rows one by one, while reading analog values (pressure information) from the columns one by one. Because we know which row is powered and which column we are reading from, we know where (location information) the incoming analog value is located. This all happens really fast, so that we can parse through the whole grid in multiple times in less than one second - giving us the impression that it is all happening instantaneously.
The mircrocontroller (in our case a Teensy) is programmed to parse the rows and columns and collect the pressure and position data, sending it over the USB connection to the computer where another application (written in Processing), reads the string of data and translates it into a visualization by mapping the incoming values to their corresponding position on the robot skin, and shading, colouring or drawing shapes according to the pressure information.
The row and column solution is not the only possibility we explored when approaching this project. The Piezoresistive Touchpad was among our first trials, but it does not support multi-touch.
Terminology (for clarity):
* Base substrates: non conductive materials.
* Flesh: lower base substrate made of neoprene with conductive columns machine sewn with conductive thread.
* Skin: upper level base substrate made of durable double knit stretch fabric with conductive rows machine sewn with conductive thread.
* Base: end of robot arm opposite the hand. This is where all the row and column connections terminate/accumulate and make the connection to their hard circuitry.
* Far end: opposite base end of robot arm. This is where the robot hand is with its two fingers.
* Hand: robot hand that has two fingers.
* Fingers: individual parts of the robot hand.
* Traces: i refer to the rows and columns as traces, they are conductors analogous to wires.