While this Instructable documents the process of building a fully functioning 28 x 28 pressure sensitive matrix, there is much room for improvement, and so in each step we discuss issues with the current solution and also include suggests for improvements. At this stage in the project we are really looking fwd to receiving your feedback and suggestions! Ian is also looking to hire individuals interested in (re-)building the skin based on this Instructable (changes, alterations, improvements encouraged!), so if you are interested in taking on this challenge, please contact us through Instructables. Please note that the skills required to replicate the current version of rSkin include: hand and machine sewing, soldering and a basic understanding of the electrical properties of materials.
The next step this Instructable explains in more detail the basic principal of how rSkin works without going into the full amount of detail required to build it yourself. Before attempting to remake this Instructable, i would recommend reading through all the steps to get a good impression of how it all comes together. Building rSkin is not necessarily a linear process where everything needs to happen in a particular order, though in this Instructable i make an attempt at doing just that.
rSkin project progress blog >> http://www.plusea.at/?page_id=2259
Here are some videos of the results of the current version of rSkin:
Flickr Photo Set
GitHub Code Repository
Step 1: Pressure Sensor Matrix (an overview)
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.