"They gave me four thousand tiny pressure sensors and one wire to read them all. The physics was the easy part."
A Freshly Skinned Robot
Why this section matters
The camera-based tactile sensors of Section 56.2 buy exquisite spatial detail by pointing a camera at a soft gel, which is wonderful for a fingertip and hopeless for wrapping a whole forearm. The other lineage of touch skips the camera entirely: it turns pressure directly into an electrical quantity at thousands of tiny sites, then reads them out over shared wires. This is the family that scales to full-body coverage. This section explains the two dominant transduction physics, capacitive and piezoresistive, shows how individual sensing sites (taxels) are ganged into an array and why that sharing of wires creates its own signature failure, and lays out what has to happen before a raw frame is fit for a network to learn from. The prize is a modality that covers area cheaply; the price is calibration, crosstalk, and drift that you inherit whether you asked for them or not.
This section assumes the measurement-model view from Chapter 2, namely that a reading is \(x = h(s) + \eta\) for some sensor response \(h\) you must characterize, and the frame-as-tensor habits of Chapter 13. We keep to arrays whose transduction is capacitive or piezoresistive; the learned representations built on top of these frames are the subject of Section 56.4.
Two ways to turn a press into a number
A capacitive taxel is a parallel-plate capacitor with a compressible dielectric between the plates. Its capacitance is
$$C = \varepsilon_0 \varepsilon_r \frac{A}{d},$$where \(A\) is plate overlap area, \(d\) is plate separation, and \(\varepsilon_r\) is the dielectric constant of the soft layer. Press on it and \(d\) shrinks, so \(C\) rises; the readout chip measures that capacitance change, typically as a shift in the charge or the oscillation frequency of a small circuit. Capacitive sensing is what the iCub humanoid wears as its full-body skin (triangular modules of twelve taxels each, several thousand across the body), and it is the same principle behind capacitive seat-occupancy sensors in cars. Its virtues are low static power, good sensitivity to light touch, and no moving contact to wear out. Its vices are susceptibility to stray capacitance from a nearby hand or a wet surface, and a response that is only weakly linear in force because it actually measures geometry.
A piezoresistive taxel instead changes its electrical resistance under load. The common cheap form is a force-sensing resistor (FSR), a conductive-polymer composite whose particle-to-particle contact area grows under pressure, so resistance falls. A good working model over the useful range is a power law between applied force \(F\) and conductance \(G = 1/R\):
$$G(F) \approx a\,F^{\,n}, \qquad n \in [1, 2],$$with per-part constants \(a\) and \(n\). Piezoresistive pads (Tekscan, Interlink FSR grids) are thin, robust, and trivially read as a voltage divider, which is why they dominate pressure-mapping mats and prosthetic-grip prototypes. The catch is severe hysteresis and creep: unload an FSR and it does not spring back to its old reading for seconds. Note the contrast with a piezoelectric element, which generates charge only while the load is changing and so senses vibration and slip beautifully but cannot report a static hold at all. Piezoresistive senses the steady press; piezoelectric senses the event.
Capacitive measures geometry, piezoresistive measures contact
The choice is not cosmetic. A capacitive taxel reports a deformation (a change in \(d\)) and is easily fooled by anything that changes the electric field, including a hand hovering nearby without touching. A piezoresistive taxel reports a change in internal contact area and is immune to that proximity effect but pays with hysteresis and drift. If your application must reject non-contact interference, lean capacitive with guarding; if it must survive years of hard presses cheaply, lean piezoresistive and budget for recalibration. Neither is "the tactile sensor"; each is a different \(h\).
From one taxel to an array: addressing and crosstalk
A single taxel is uninteresting; skin needs hundreds to thousands. Wiring one line per taxel does not scale, so arrays share wires in a row-column grid: taxel \((i,j)\) sits at the crossing of row line \(i\) and column line \(j\), and you read it by driving row \(i\) and sensing column \(j\). An \(M\times N\) array then needs only \(M+N\) wires instead of \(MN\). This passive-matrix trick is what makes full-body skin affordable, and it introduces the defining artifact of the modality: crosstalk, also called ghosting. Current meant for the addressed taxel finds sneak paths through neighboring taxels in parallel, so a hard press at one site raises phantom readings at unpressed sites that share its row or column. The fix is either an active-matrix design (a transistor at every taxel that isolates it, as in thin-film-transistor e-skin) or a readout that holds every non-selected line at the same potential so no voltage drives a sneak path. Figure 56.3.1 shows the sneak-path geometry.
The code below makes the readout side concrete: it takes a raw frame of analog-to-digital counts and turns it into calibrated force per taxel, the step every array driver performs before a model ever sees the data.
import numpy as np
# One raw 8x8 frame from a piezoresistive tactile pad, in ADC counts (0..1023).
raw = np.random.default_rng(0).integers(40, 900, size=(8, 8))
# Per-taxel calibration, measured once at manufacture and stored per device:
# force = gain * (counts - offset) ** exponent (the G ~ a F^n law, inverted)
offset = np.full((8, 8), 35.0) # zero-load baseline count, unique per taxel
gain = np.full((8, 8), 2.3e-3) # newtons per calibrated unit
exponent = 1.4 # viscoelastic power-law shape
net = np.clip(raw - offset, 0, None) # subtract each taxel's own baseline
force = gain * net ** exponent # calibrate the whole frame at once
print(force.shape, round(float(force.sum()), 2), "N total")
Let the array carry the loop
Written taxel by taxel, calibrating a frame is a nested Python loop over rows and columns with per-element offset lookup, clamping, and the power law: roughly 12 to 15 lines for one 8×8 pad, and painfully slow once you reach a 4000-taxel body suit read at 100 Hz. Expressed as whole-array NumPy operations it is the two lines above, and it runs the full frame in one vectorized pass instead of 64 (or 4000) interpreted iterations. The library handles the broadcasting, the bounds clamp, and the elementwise power internally. The same denoising you would reach for next, a small median or exponential filter over the frame stream to fight FSR creep, is a one-liner from Chapter 6's toolbox rather than a hand-rolled buffer.
Calibration, hysteresis, and drift: the non-ideal skin
A tactile array is a large collection of imperfect, non-identical sensors, and the imperfections do not average out. Three of them dominate. First, per-taxel gain spread: no two FSR dots share a resistance curve, so a spatially uniform press produces a visibly lumpy frame unless each taxel is individually calibrated, which is why the offset and gain in the code are full arrays, not scalars. Second, hysteresis and creep: press an FSR to a level and its reading keeps drifting for seconds, and on release it does not return to baseline promptly, so the same true force maps to different counts depending on recent history. Third, long-horizon drift: the polymer ages, the elastomer takes a set, temperature shifts the baseline, so a calibration valid in spring is wrong by autumn. This last one is the non-stationarity thread of the book made physical, and it is handled by the recalibration and test-time-adaptation machinery of Chapter 66. The practical consequence for a learning system is blunt: train on raw uncalibrated frames from one skin and you will learn that skin's blemishes, not touch, and the model will not transfer to the next unit off the line.
Research Frontier
The frontier is pushing e-skin toward large-area, event-driven, and self-healing designs. The Asynchronous Coded Electronic Skin (ACES, Lee et al., Science Robotics 2019, from the National University of Singapore) abandons the scanned matrix entirely: each of its receptors fires an asynchronous spike over a shared electrical bus, so the readout latency stays near constant as the sensor count grows and a single cut does not blind a whole row. This is neuromorphic touch, and it dovetails with the event-based sensing of Chapter 46. Parallel threads include active-matrix thin-film-transistor skins that place an isolating transistor at every taxel to kill crosstalk outright, self-healing polymer dielectrics that recover conductivity after a puncture, and magnetically transduced flexible skins such as ReSkin (Bhirangi et al., 2021) that trade a replaceable magnetized surface against a fixed sensor board. The open problem across all of them is the same one this section keeps naming: keeping a dense, flexible, aging array calibrated well enough that a model trained on one skin still works on the next.
A prosthetic hand that learns each fingertip's quirks
A rehabilitation team fits a myoelectric prosthetic hand with piezoresistive FSR pads on the thumb, index, and middle fingertips to give it grip-force feedback, so it can hold a paper cup without crushing it. In the lab the grip controller works. On the first user it over-grips with the index finger and under-grips with the thumb, dropping bottles. The cause is not the controller: the three FSR pads have different gain curves and different creep, and a scalar calibration treated them as identical. The fix lives in the measurement layer. Each pad gets its own offset-and-gain calibration captured with reference weights, a short trailing-window filter suppresses creep-induced drift during a sustained hold, and only then does the calibrated force vector go to the grip policy. Same policy, three honest sensors, no more dropped bottles. This is the tactile echo of the "calibrate before you learn" rule from Chapter 2.
The array as a tensor: what a model actually receives
Once calibrated, a row-column frame is naturally an \(H\times W\) grid of scalars, one pressure per taxel, and a short stream of frames is an \(H\times W\times T\) tensor. That invites treating touch like a tiny, slow, low-resolution video and reaching for a convolutional or spatiotemporal model, and for dense skins that is roughly right. But three properties make tactile arrays unlike a camera and are worth respecting before you copy a vision architecture wholesale. The resolution is tiny (tens to low hundreds of taxels, not millions of pixels), so every taxel is precious and aggressive pooling throws away most of your signal. The geometry is often non-planar: body skin wraps a curved limb, so the neat grid is a chart on a surface, and neighboring taxels in the wiring may not be neighbors in space. And the frame is sparse and mostly zero, because contact touches a few taxels at a time, which rewards models and features that exploit sparsity rather than dense-image assumptions. These representational choices, and the handcrafted contact features that often beat raw frames at low taxel counts, are exactly what Section 56.4 takes up next; the general feature-versus-learned-representation tradeoff is the subject of Chapter 8.
Exercise: diagnose the phantom
You are handed 100 Hz frames from a passive 16×16 piezoresistive skin. When a single fingertip presses one taxel hard, you see a bright true reading plus a faint cross-shaped halo of nonzero values along that taxel's entire row and column, and the halo brightness tracks the press force. (1) Name the artifact and the circuit mechanism that produces it. (2) Propose one hardware change and one readout-firmware change that would each suppress it, and state the wiring or timing cost of each. (3) If you cannot touch the hardware, sketch a purely software correction and explain precisely why it can only ever be approximate.
Self-check
- Using \(C = \varepsilon_0 \varepsilon_r A/d\), explain why a capacitive taxel can register a change from a hand that never touches it, and say why a piezoresistive taxel does not share that failure.
- An FSR reports 12 N on the way up to a press and 9 N at the same true force on the way down. Name the effect, and give one filtering or calibration step that reduces its impact on a sustained grip estimate.
- Why does a passive row-column matrix save wires, and what is the artifact you accept in exchange? Give one design that removes the artifact and what it costs.
What's Next
In Section 56.4, we take these calibrated frames and ask what to compute from them: the contact features (total force, contact centroid, pressure spread, temporal derivatives for incipient slip) and learned embeddings that turn a lumpy grid of taxels into a representation a policy or a classifier can act on, setting up the tactile foundation models that follow.