A Unified Annotation Framework for Cross-Sensor Tactile Manipulation Data
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.
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
pip install tlabelimport 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())data.review() # Bilingual annotation panel (Chinese / English)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/") # LeRobottlabel list # List all registered adapters
tlabel info gelsight # Adapter details & compliance level
tlabel validate data.json # Schema compliance checkpip 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] # EverythingTLabel 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
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/
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β 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 β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
TLabel provides bidirectional converters for LeRobot format, enabling seamless integration with the LeRobot ecosystem.
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")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",
)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/")pip install tlabel[lerobot] # or: pip install pyarrowTLabel: 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
@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}
}| Document | Description |
|---|---|
| TLabel Format Spec | Complete annotation schema specification |
| Annotation Spec | Annotation methodology and guidelines |
| Design Document | Core design decisions and architecture |
| δΈζζζ‘£ | Chinese README |
TLabel is designed to be extensible. Add your sensor in ~30 minutes:
- Fork contrib/adapter-template/
- Subclass
DataAdapterBaseorSensorAdapterBase - Submit a PR or publish as a standalone package
See CONTRIBUTING.md for details.
MIT Β© 2026 Niuxiu Tech
TouchLabel AI β Tactile Data Annotation Infrastructure
GitHub Β·
PyPI Β·
Discord
Niuxiu Tech Β· Hangzhou, China