3D Printed tactile dataset
The work within this page is archived under arxiv, under review currently and can also be found in detail in my thesis. The dataset can be downloaded hereVarious designs were discussed for making textures for this dataset. Initially, we investigated 3D scanning real-life textures to make the dataset reflective of the real world. However, this presented issues such as non-uniformity of the texture. If the sensor strokes one part of the texture, it may classify it differently from another. Our previous dataset had uniform patterns, so this was not an issue. Therefore, mathematically generated patterns were chosen.
It is easy to parameterize a 2D surface when dealing with sinusoidal waves. We have five parameters: amplitudes along the two directions, frequencies along the two directions, and a phase shift between the directions. This also simplifies scalability for different sensors.
Other repetitive shapes (squares, pyramids, etc.) can be obtained from a sum of sine functions. Detecting the minimum sine pattern that the sensor can detect may help benchmark the sensor for more advanced shapes.
Texture One
In this equation, \( A_1 \) and \( A_2 \) represent the amplitudes of the sine waves in the \( x \)- and \( y \)-directions, respectively. The parameters \( f_1 \) and \( f_2 \) denote the frequencies of the sine components along the \( x \)- and \( y \)-axes. The variable \( \phi \) is a phase offset applied to the sine term involving \( y \). The variables \( x \) and \( y \) are spatial inputs, and the output \( z_1 \) is the sum of two sine functions modulated by their respective amplitudes, frequencies, and phase.
We use \( A_1 = 1 \), \( A_2 = 2 \), \( f_1 = 1 \), \( f_2 = 1 \), \( \phi = \pi / 2 \).
\[ z_1 = A_1 \sin(f_1 x) + A_2 \sin(f_2 y + \phi) \]
Texture Two
Texture Two also uses the same equation as Texture One, with the same parameters for \( A_1 \), \( f_1 \), and \( f_2 \), however the variable \( A_2 \) is set to 1.
Texture Three
We define the function \( z_3 \) over a grid using the following summation:
\[ z_3 = \sum_{\substack{i=1 \\ i \text{ odd}}}^{N} \left(A_i \sin(i x) + A_i \sin(i y) \right) \]
In this expression, \( N \) is the number of terms in the summation, taken over odd integers from 1 to \( N \). For our texture we used \( N = 25 \).
Each term in the series uses the coefficient:
\[ A_i = \frac{8}{\pi^2} \cdot \frac{(-1)^{\frac{i - 1}{2}}}{i^2} \]
This controls the amplitude of the sine wave. The sine functions \( \sin(i x) \) and \( \sin(i y) \) vary with spatial coordinates \( x \) and \( y \), respectively, and share the same frequency \( f = i \) and amplitude \( A_i \). The phase offset is set to zero and therefore omitted in the formula.
The function \( z_3 \) is initialized as a zero-valued array of the same shape as \( x \) and is built up iteratively by adding sine wave components in both the \( x \)- and \( y \)-directions. This results in a 2D Fourier-like series that combines symmetrical sine waves to construct a spatial pattern.
Texture Four
Texture Four uses the same summation equation as Texture Three, however with a modified coefficient:
\[ A_i = \frac{4}{\pi i} \]
Additionally, this equation uses \( N = 25 \). The decay and lack of sign alternation lead to sharper features, with more pronounced ridges and edges.
Texture Five
Texture Five also uses the same summation equation as Texture Three and the same coefficient as Texture Three. The difference is that one directional component is removed, resulting in no variation along one axis and producing a protruded shape rather than variation in both directions.
\[ z_5 = \sum_{\substack{i=1 \\ i \text{ odd}}}^{N} \left(A_i \sin(i x) \right) \]
Texture Six
Texture Six uses the same summation equation as Texture Three and the same coefficient as Texture Four. The second directional component is set to zero (as in Texture Five), resulting in no variation in height along one axis and producing a protruded shape rather than bidirectional variation.
There is significant overlap between these texture equations, making the generation of new patterns that are not widely different very feasible.
All the models were converted to STL file format as blocks for 3D printing. These models were constrained to be the same height to ensure that the sensor could be lowered to the same position for each experiment.
Printer experiments
Several 3D print filament types were used to make a protruded sine-wave block. We firstly wanted to evaluate how different filament brands and types differ in terms of material properties.We additionally evaluated the textures over varying manufactures of 3D printers. If a cheaper filament, or printer, is significantly worse in quality than others then we need to advise against using this, or find combinations of print settings of mitigating these issues.
We will inspect this using the variance of images from a TacTip sensor. Pressing the sensor on the same part of the block should have similar impacts on the sensor reading.
Visual inspection is used to judge the quality of a print, particularly for "stringing". Stringing is when the printer’s nozzle leaks a small amount of molten filament while moving between separate parts or sections, leaving thin strands of plastic connecting them. If from a human perspective there is not a lot in varying quality, we know these will result in lower variance.
If there is insignificant difference in variance between datasets then we can assume that the print quality makes no difference to the model.
We used four popular printers: the Ender-3 V3 printer, the Creality Ender-3 V3 SE printer, the Bambu Lab P1P printer, and the Formlabs Form 3 resin printer. The printer specifications are outlined in Table 1. Resin printers are generally more expensive but yield better quality for small details.
| Spec | Ender-3 V3 | Ender-3 V3 SE | Bambu P1P | Resin |
|---|---|---|---|---|
| Build volume | 220×220×250 mm | 220×220×250 mm | 256×256×256 mm | 145×145×185 mm |
| Motion system | Cartesian Bed slingers | Cartesian Bed slingers | CoreXY | na |
| Print speed | ≤600 mm/s | ≤250 mm/s (180 typical) | ≤500 mm/s | na |
| Acceleration | ≤20,000 mm/s² | ~2,500 mm/s² | 20,000 mm/s² | na |
| Hotend temperature | Up to 300°C | Up to 260°C | Up to 300°C | na |
| Bed temperature | ≤110°C | ≤100°C | ≤100°C | na |
| Extruder | Direct drive | Sprite direct drive | Direct drive, all-metal | na |
| Extruder aperture | 0.4 mm | 0.4 mm | 0.4 mm | na |
| Leveling | Auto (varies by model) | CR Touch + strain | Auto (built-in) | na |
| Connectivity | Touchscreen, SD/USB | Touchscreen, SD/USB-C | App, cloud, slicer | USB |
We used three different 1.75 mm filaments: Rapid PETG (Elegoo), PLA+ (eSUN), and PLA-Lite (eSUN). For the resin printer, we used Grey V4 resin. According to manufacturer specifications, these filaments have a dimensional tolerance of ±0.02 mm.
We chose the PLA filaments because PLA is an economical standard widely used across 3D printing users. PLA-Lite was cheaper than PLA+, although PLA+ was marketed as a higher quality material. We selected both to explore whether this difference had an impact on results.
We used PETG because it provides greater durability, but it can be trickier to print with, potentially introducing more variance unless parameters such as speed, temperature, leveling, and other settings are properly tuned.
Benchmark Reproduction Workflow
To encourage reproducibility and facilitate future tactile sensing research, all resources used to construct the benchmark are publicly available through the accompanying GitHub repository. The repository contains the complete pipeline for generating printable texture samples, producing standardized printer-ready files, and reproducing the dataset collection process.
The repository is organised into three primary components. First, a library of printable texture models is provided, including procedurally generated surface geometries. Secondly, the repository includes scripts for generating custom textures from user-defined parameters, allowing researchers to extend the benchmark with additional tactile patterns while maintaining consistent geometric constraints. Finally, standardized printing profiles and slicing configurations are supplied to ensure that benchmark samples can be fabricated consistently across compatible material extrusion 3D printers.
The recommended reproduction workflow consists of four stages. First, users generate or select a texture model from the provided library. Secondly, the model is sliced using the supplied printer profiles, ensuring identical print settings such as layer height, nozzle diameter, infill, and print orientation. Thirdly, the printed sample is fabricated using the specified filament materials and environmental conditions. Finally, the completed sample can be incorporated directly into the tactile data collection pipeline described in this work.
By releasing both the source models and the complete fabrication pipeline, researchers are able not only to reproduce the benchmark presented here but also to generate additional textures that remain compatible with the benchmark methodology. This enables direct comparison between future tactile sensing approaches while promoting consistency across independently collected datasets.}
Results
The dataset consisted of all six textures produced using all printer–filament combinations, resulting in a total of 8,100 images. To reduce memory requirements, all images were converted to greyscale and downsampled to 40% of their original resolution, a preprocessing step previously shown not to affect classification performance. Data augmentation was applied to the training datasets to account for LED noise and global lighting variation.
Gaussian noise with a mean of 0 and standard deviation of 5 was added to each pixel to create an additional noisy image. Brightness variation was introduced by adding and subtracting 10 intensity values from each pixel, creating two additional images. This increased the dataset to 1200 images per printer–filament combination. The ablation study showed that brightness augmentation did not improve accuracy, while noise injection provided a substantial improvement. Therefore, only noise augmentation was used for subsequent experiments.
Principal Component Analysis (PCA) was then applied to reduce image dimensionality while retaining important tactile features. Preliminary analysis showed a reduction in explained variance after approximately 15 components. Therefore, 25 principal components were selected as a balance between dimensionality reduction and preservation of meaningful features. PCA was fitted only on the training split, with the test split transformed using the fitted PCA model. The resulting components were used as input for both Random Forest Classifiers and Artificial Neural Networks.
Data Augmentation Ablation Study
| Printer | Experiment | Accuracy (%) |
|---|---|---|
| Bambu | No augmentation | 86.35 |
| Brightness | 86.71 | |
| Noise | 92.40 | |
| All augmentations | 92.52 | |
| Ender-3 V3 SE | No augmentation | 54.15 ± 0.033 |
| Brightness | 54.76 ± 0.031 | |
| Noise | 76.52 ± 0.025 | |
| All augmentations | 73.23 ± 0.023 | |
| Resin | No augmentation | 80.40 ± 0.0261 |
| Brightness | 79.99 ± 0.015 | |
| Noise | 94.98 ± 0.008 | |
| All augmentations | 94.50 ± 0.009 |
Each classifier was initially trained using a single printer–filament combination and evaluated on unseen printer–filament combinations to assess generalisation across manufacturing conditions. Models trained on a single print configuration achieved high accuracy on similar prints but showed reduced performance when evaluated on unseen manufacturing conditions.
Classification Performance
| Model | Train Accuracy | Test Accuracy | Unseen Print Accuracy |
|---|---|---|---|
| RFC Ender-3 V3 SE | 100.0% | 99.53% | 31.4% |
| ANN Ender-3 V3 SE | 99.7% | 99.3% | 33.21% |
| RFC Bambu only | 100% | 99.7% | 63.98% |
| ANN Bambu only | 100% | 99.8% | 53.73% |
| RFC Resin | 100% | 99.3% | 70.66% |
| ANN Resin | 100% | 99.9% | 61.41% |
Confusion Matrices
Misclassifications primarily occurred between visually and physically similar textures. For example, textures 2 and 3, and textures 1 and 5, showed increased confusion. These errors are likely caused by small variations in the printed geometry, where subtle differences in peak shape or surface defects influence the tactile response. The classifier therefore learns both the intended texture structure and manufacturing-specific variations within the printed samples.
