Skip to content

Latest commit

Β 

History

286 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TLabel

A Unified Annotation Framework for Cross-Sensor Tactile Manipulation Data

PyPI Tests License: MIT Downloads DOI δΈ­ζ–‡ζ–‡ζ‘£

TLabel is the first cross-sensor tactile annotation schema with capability declarations and Compliance Level stratification. It enables heterogeneous tactile sensors β€” regardless of operating principle β€” to produce compatible 14-dimensional semantic annotations while preserving their unique strengths.

TL;DR β€” The Unicode for tactile data: one standard schema, every sensor.

Why TLabel?

Tactile datasets today ship as raw sensor signals without semantic annotations. Each sensor type demands its own ad-hoc processing, and results from different sensors cannot be compared or fused. TLabel addresses this by:

  • Standardizing annotations β€” 14 dimensions covering spatial, mechanical, surface, dynamic, and meta perceptions
  • Declaring capabilities β€” each adapter explicitly states which dimensions it can and cannot annotate
  • Stratifying compliance β€” Compliance Level (L1–L4) ensures every sensor participates at its appropriate information density
  • Enabling cross-sensor comparison through a shared output format

Quick Start

Install

pip install tlabel

Load and explore data

import tlabel

# Load tactile data (auto-detects sensor format)
data = tlabel.load("path/to/sensor_data.pkl")

# Or try the built-in demo β€” no files needed
data = tlabel.demo("gelsight")

# Inspect annotation metadata
print(data.describe())

Interactive annotation (Jupyter)

data.review()  # Bilingual annotation panel (Chinese / English)

Export to training formats

data.export("output.json")              # JSON / CSV
data.export_ftp1("output.zarr")         # FTP-1 Zarr for foundation models

from tlabel.converters import tlabel_to_lerobot
tlabel_to_lerobot("annotations.json", "lerobot_episode/")  # LeRobot

CLI

tlabel list                       # List all registered adapters
tlabel info gelsight              # Adapter details & compliance level
tlabel validate data.json         # Schema compliance check

Optional dependencies

pip install tlabel[gelsight]      # GelSight / DIGIT (.pkl)
pip install tlabel[paxini]        # PaXini PXCap (.h5)
pip install tlabel[daimon]        # Daimon DM-TacClaw (.parquet)
pip install tlabel[ftp1]          # FTP-1 export (zarr)
pip install tlabel[all]           # Everything

Schema β€” 14 Dimensions, 4 Compliance Levels

TLabel defines 14 semantic dimensions with Compliance Levels (L1–L4) indicating annotation completeness:

Level Name Required Fields Example Sensors
L1 Basic Tactile contact, centroid, slip, confidence Single-point resistive, proximity
L2 Force-Aware L1 + force_magnitude Paxini, YCB-Slide, GelSight
L3 Full-Vector L2 + force_vector [3D] ToucHD, calibrated DM-TAC
L4 Rich-Semantic L3 + all optional fields BioTac, next-gen multimodal

The 14 dimensions span: contact, contact_centroid, force_magnitude, slip_event, confidence, compliance_level, contact_region, force_vector, torque_vector, slip_velocity, manipulation_phase, texture_class, object_deformation, temperature.

Full dimension spec β†’ docs/tlabel-format.md

Supported Sensors

Dataset Adapters (offline): GelSight/DIGIT (L3) Β· Daimon DM-TacClaw (L3) Β· PaXini PXCap (L2) Β· UniVTAC (L3, legacy *_gsmini and new *_tactile HDF5 layouts) Β· TacQuad/AnyTouch (L1) Β· VTouch (L2) Β· ToucHD-Force/AnyTouch 2 (L3) Β· YCB-Slide (L2) Β· SynTouch BioTac (L2) Β· Tashan TS-F-A (L3) Β· XELA uSkin/UniTac-NV (L1)

Real-time Adapters (hardware): PaXini GEN3 (L2) Β· Daimon DM-Tac (L2)

Adding a new sensor takes ~30 min β€” fork contrib/adapter-template/

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Layer 1: Schema                                β”‚
β”‚  14 semantic dimensions + Compliance Level L1-L4β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Layer 2: Adapters                              β”‚
β”‚  DataAdapterBase β”‚ SensorAdapterBase             β”‚
β”‚  (7 built-in + community-extensible)            β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Layer 3: Downstream                            β”‚
β”‚  Feature derivation Β· Augmentation Β· Export      β”‚
β”‚  PredictEngine Β· FTP-1 Β· LeRobot Β· RLDS Β· ROS2 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

LeRobot Integration

TLabel provides bidirectional converters for LeRobot format, enabling seamless integration with the LeRobot ecosystem.

LeRobot β†’ TLabel

Convert LeRobot parquet data to TLabel for annotation and quality assessment:

from tlabel.converters import lerobot_to_tlabel

# Load LeRobot episode and convert to TLabel
data = lerobot_to_tlabel("path/to/lerobot_episode/")

# Review and annotate
data.review()  # Interactive bilingual annotation panel

# Export annotated data
data.export("annotated_tlabel.json")

TLabel β†’ LeRobot

Convert TLabel annotations back to LeRobot format for training:

from tlabel.converters import tlabel_to_lerobot

# Convert TLabel annotations to LeRobot parquet format
tlabel_to_lerobot(
    "annotated_tlabel.json",
    "path/to/lerobot_episode/",
    tactile_field="observation.tactile",
)

Complete Example

import tlabel
from tlabel.converters import lerobot_to_tlabel, tlabel_to_lerobot

# 1. Load LeRobot data
lerobot_data = lerobot_to_tlabel("my_robot_episode/")

# 2. Review and annotate (optional)
lerobot_data.review()

# 3. Export to TLabel format for inspection
lerobot_data.export("tlabel_annotations.json")

# 4. Convert back to LeRobot format (with annotations)
tlabel_to_lerobot("tlabel_annotations.json", "my_robot_episode/")

Requirements

pip install tlabel[lerobot]  # or: pip install pyarrow

Paper

TLabel: A Unified Annotation Framework for Cross-Sensor Tactile Manipulation Data

Xi Luo, Sheng Wu (Niuxiu Tech)

Submitted to SoftwareX, 2026. Manuscript: SOFTX-S-26-01665

[PDF] Β· LaTeX source: paper/

Citation

@software{tlabel2026,
  title  = {TLabel: A Sensor-Agnostic Tactile Data Annotation Toolkit and Format Standard},
  author = {Wu, Sheng and Luo, Xi},
  year   = {2026},
  url    = {https://github.com/liesliy/tlabel}
}

Documentation

Document Description
TLabel Format Spec Complete annotation schema specification
Annotation Spec Annotation methodology and guidelines
Design Document Core design decisions and architecture
δΈ­ζ–‡ζ–‡ζ‘£ Chinese README

Contributing

TLabel is designed to be extensible. Add your sensor in ~30 minutes:

  1. Fork contrib/adapter-template/
  2. Subclass DataAdapterBase or SensorAdapterBase
  3. Submit a PR or publish as a standalone package

See CONTRIBUTING.md for details.

License

MIT Β© 2026 Niuxiu Tech


TouchLabel AI β€” Tactile Data Annotation Infrastructure
GitHub Β· PyPI Β· Discord
Niuxiu Tech Β· Hangzhou, China

About

🦞 The World's First Sensor-Agnostic Tactile Data Annotation Toolkit β€” Load any tactile sensor, annotate visually, export a unified schema

Topics

Resources

Contributing

Stars

43 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages