Yosuke Saka*,
Jyun-Chi Hu*,
Adeesh Desai*,
Zhiyuan Zhang*,
Bihao Zhang,
Quan Khanh Luu,
Md Rakibul Islam Prince,
Minghui Zheng,
Yu She
* Equal Contribution
CONTACT is a simulation benchmark for investigating the role of tactile sensing in robotic disassembly. It provides five rigid-body disassembly tasks with progressively increasing geometric constraints and contact complexity, implemented in IsaacGym with TacSL-based tactile rendering. Policies are trained with Diffusion Policy using multimodal visuotactile observations.
- Five disassembly tasks:
loose_plug,tight_plug,lidded_loose,barbed_flat,barbed_spike, ordered by contact complexity. - Three sensing modalities per task:
vision(camera only),vistac(vision + tactile RGB),visff(vision + tactile force field). - Ready-to-run script for every task and modality.
git clone https://github.com/AdeeshDesai/CONTACT.git
cd CONTACT
bash install.sh
conda activate contactThe installation script creates the contact conda environment and sets up
the dependencies under thirdparty/: IsaacGym TacSL (downloaded
automatically), the TacSL simulation environments, and Diffusion Policy. If
the automatic IsaacGym download fails, grab it manually from
here,
place the tar.gz in thirdparty/, and rerun install.sh.
bash scripts/download_data.sh barbed_flat # one task
bash scripts/download_data.sh all # all five tasksManual alternative: download the zip for your task from the
dataset folder
and unzip it inside CONTACT/data/.
Ready-to-run scripts for every task and modality:
training/<task>/<modality>.sh
bash training/barbed_flat/vision.sh # vision only
bash training/barbed_flat/vistac.sh # vision + tactile RGB
bash training/barbed_flat/visff.sh # vision + tactile force fieldEach script takes an optional seed and Hydra overrides:
bash training/barbed_flat/visff.sh 43 training.num_epochs=500.
To sweep across all tasks:
bash scripts/run_all.sh visff # one modality, all five tasks
bash scripts/run_all.sh all 42 # all modalities, all tasksSuccess rate and rollout videos are evaluated periodically during training.
python eval.py \
-c data/outputs/vision_barbed_flat_50/42/checkpoints/latest.ckpt \
-o data/outputs/vision_barbed_flat_50/42/eval_output \
-n train_diffusion_workspace_disassembly.yaml \
-d cuda:0Training logs to Weights & Biases by default (run
wandb login once, or set WANDB_MODE=offline to run without an account).
The W&B project name is set per task (dp_<task>, override with
logging.project=...).
CONTACT/
├── training/ # ready-to-run: training/<task>/<modality>.sh
├── train.py / eval.py # entrypoints
├── contact/ # configs, dataset, env runners, policies, workspace
├── isaacgymenvs/ tacsl/ # TacSL task and environment definitions
├── assets/ # task meshes and URDFs
├── scripts/ # run_all.sh sweeps, dataset download
├── thirdparty/ # simulator + policy stack land here at install
└── install.sh
@article{saka2026contact,
title={CONTACT: CONtact-aware TACTile Learning for Robotic Disassembly},
author={Saka, Yosuke and Hu, Jyun-Chi and Desai, Adeesh and Zhang, Zhiyuan and Zhang, Bihao and Luu, Quan Khanh and Prince, Md Rakibul Islam and Zheng, Minghui and She, Yu},
journal={arXiv preprint arXiv:2603.08560},
year={2026}
}CONTACT builds on ManiFeel, TacSL, and Diffusion Policy.
This repository is released under the MIT License.