Dexter Shepherd

Home About Downloads Contact

3D Printed tactile dataset

The work within this page is under review currently and can also be found in detail in my thesis.

Various 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.

Table 1: Comparison of Ender-3 V3, Creality Ender-3 V3 SE, Bambu Lab P1P printers and Formlabs Form 3 resin printer.
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.

Results

From our experiments outlined in the paper, we found that the resin printer lead to the least variance across prints. This makes resin printers the ideal choice for physical dataset replication.