Experimental Setup & Analysis

Experimental Setup

We used a CNC machine to ensure consistent touch-behavior in terms of pressure and location. We created modified Dremel bits that acted as ‘fingers’ that would press on the sensor. The ‘fingers’ were made of Sugru with a rubber disk (cut from a mouse-pad [39]) beneath them to approximate the softness of the human fingertip.

Each strip was sampled by an analog input of an Arduino Uno. We wrote a JavaScript controller that coordinates data logging and communicates between the CNC and Arduino. The controller is open source and can be downloaded from the projects GitHub page. We used this controller to perform an approximation of a swipe gesture by measuring pressure at 70 consecutive locations on the sensor with 1mm spacing. For each sensor we repeated this swipe gesture 11 times, with 2.5mm offset for a total of 770 points.

This was repeated for three touch sizes (50%, 100%, 150% of strip spacing) crossed with two pressure settings (strong/gentle), where ‘strong’ was set to take full advantage of the dynamic range of the sensor and ‘gentle’ was the lowest pressure level we could consistently detect. In total we collect 4620 touch events per sensor for a total of 78.540 touch events over all 17 sensors.


Using the collected pressure values, we (1) compute the touch position for each measured position and each method. The resulting positions are in units of strip-width. We (2) scale each sensor*method combination to match the expected range in mm. We then (3) calibrate the values by subtracting the y intercept of the regression line and multiplying each value by one minus the slope of the regression line. The resulting positions are in  he correct range, with a regression line of y = x (blue). We then subtract the known position from the estimated position to find the error. This resulted in 36,960 error measures per sensor (770 positions by 8 methods, 3 touch sizes, 2 pressure levels) for a total of 628 320 error measures.