CoolFace
Datasetpublic

yxma/glowtact-gelsight-tactile

GlowTact & GelSight Mini Tactile Probing Dataset Optical tactile captures from a CNC probing rig, collected with two vision-based tactile sensors: GlowTact (a custom sensor reconstructed with a 9DTact-style darkness-to-depth model) and the commercial GelSight Mini. Every CNC probe record pairs a tactile image with the exact indenter position (mm) and the normal force (N) measured by a calibrated HX711 load cell at the moment of capture, encoded directly in the filename.… See the full description on the dataset page: https://huggingface.co/datasets/yxma/glowtact-gelsight-tactile.

sourceHugging Facecc-by-4.0updated 2mo agoView on Hugging Face
0likes549downloads
Dataset Card

GlowTact & GelSight Mini Tactile Probing Dataset

Optical tactile captures from a CNC probing rig, collected with two vision-based tactile sensors: GlowTact (a custom sensor reconstructed with a 9DTact-style darkness-to-depth model) and the commercial GelSight Mini.

Every CNC probe record pairs a tactile image with the exact indenter position (mm) and the normal force (N) measured by a calibrated HX711 load cell at the moment of capture, encoded directly in the filename.

Collection and reconstruction code: [ProbingPi](https://github.com/Yuxiang-Ma/ProbingPi) (private repository).

Layout

glowtact/                        # 3.7 GB
  glowtact120_pad0/              # CNC probe sweeps, GlowTact120, pad 0
  glowtact120_pad0_ob/           #   ... object presses
  glowtact0_pad0/                # CNC probe sweeps, GlowTact, pad 0
  glowtact_omnifinger_pad/
  glowtact_h/                    # depth reconstruction outputs, figure angles
  glowtact_images/               # calibration, fingerprints, 3D recon, sensitivity
  sessions/                      # 24 x session_YYYYMMDD_HHMMSS (manual_collect)

gelsight_mini/                   # 1.9 GB
  mini_pad0/  mini_pad1/  mini_pad2/         # CNC probe sweeps per gel pad
  mini_pad0_ob/  mini_pad2_ob/               #   ... object presses
  gelsight mini_images/                      # calibration, photometric stereo, 3D recon

shared/                          # 104 MB, sensor-agnostic
  manual/  force/  cell_battery/  smoke/
Note: gelsight_mini/gelsight mini_images/ contains a space in its name. This is preserved deliberately so the paths match the usage examples in the ProbingPi scripts. Quote the path in shell commands.

Record formats

CNC probe sweeps (*_pad*/)

Each image is one indentation. The filename carries the full label:

A|1000pos|6.88, 13.28, -1.11 f|4.29.jpg
│ │       │                    └── normal force in newtons
│ │       └── indenter position x, y, z in mm
│ └── sample index
└── indenter / object class

Classes vary per pad and include letters (A–E) and shapes (round, quad, quad_small, triangle, five_star, star).

Sessions (glowtact/sessions/session_*/)

Interactive captures written by manual_collect.py:

session.json
snapshots/
  index.csv                  # id, timestamps, force_newtons, raw_peak, clipped
  000001_tactile.png
  000001_diff.png            # canonical difference image, gain 1
  000001_diff_x3.png         # amplified viewing aid (derived, clips early)
episode_NNNNNN/
  streams/gelsight/video.avi + timestamps.csv
  streams/gelsight_diff/video.avi + baseline.png
  streams/hx711_force/samples.csv
  streams/cnc/state.csv

Difference encoding. Difference images and videos are stored unamplified and centred on 128:

stored = frame - baseline + 128

Recover the signed difference as stored - 128, then apply gain offline. This is lossless while |diff| <= 127; the raw_peak and clipped columns in index.csv record whether a snapshot exceeded that range. baseline.png is required to re-derive the stream.

The *_diff_x3.png files are derived viewing aids that clip at 127/gain in original units — treat *_diff.png plus raw_peak as authoritative.

Notes and caveats

  • —Sensor provenance. Sessions collected before 2026-08 do not record which sensor produced them, and nothing in the files identifies it after the fact. All such sessions are GlowTact.
  • —Depth units. GlowTact reconstruction outputs depth in pixels; the nominal scale is 0.0634 mm/px.
  • —Archives. A few .zip files are retained because they are the only copy of their contents (notably gelsight mini_images/gsminis.zip). Zips that merely duplicated an adjacent extracted directory were excluded from this upload.
  • —Gel wear. mini_pad0, mini_pad1, and mini_pad2 are different physical gel pads. Do not assume photometric consistency across them.

Loading

python
from huggingface_hub import snapshot_download

# everything (~5.3 GB)
path = snapshot_download(repo_id="yxma/glowtact-gelsight-tactile", repo_type="dataset")

# just one subset
path = snapshot_download(
    repo_id="yxma/glowtact-gelsight-tactile",
    repo_type="dataset",
    allow_patterns="gelsight_mini/mini_pad0/**",
)

Parsing a probe filename:

python
import re
from pathlib import Path

PATTERN = re.compile(
    r"^(?P<cls>[^|]+)\|(?P<idx>\d+)pos\|"
    r"(?P<x>-?[\d.]+), (?P<y>-?[\d.]+), (?P<z>-?[\d.]+) "
    r"f\|(?P<force>-?[\d.]+)\.jpg$"
)

m = PATTERN.match(Path("A|1000pos|6.88, 13.28, -1.11 f|4.29.jpg").name)
cls, x, y, z, force = m["cls"], float(m["x"]), float(m["y"]), float(m["z"]), float(m["force"])

Citation

bibtex
@misc{ma_glowtact_gelsight_tactile,
  title  = {GlowTact and GelSight Mini Tactile Probing Dataset},
  author = {Ma, Yuxiang},
  year   = {2026},
  url    = {https://huggingface.co/datasets/yxma/glowtact-gelsight-tactile}
}
yxma/glowtact-gelsight-tactile · CoolFace