Contact-GraspTransformer

Devansh Royal J., Aida Mirebrahimi, Tim Wang, Dinesh Varun Shankar K.
Carnegie Mellon University
11-785 Introduction to Deep Learning, Spring 2026
Ground-truth, PointNet++, and PTv3 grasps on a test mug

Ground-truth grasps (left, green top-1) versus PointNet++ (center) and PTv3 (right, blue top-1) on the same test mug. PTv3 spreads candidates over the body with more diverse approach directions; PointNet++ concentrates on the rim.

Abstract

Robotic grasping in cluttered environments requires reasoning over complex 3D geometry from partial observations. Contact-GraspNet (CGN) predicts grasps directly from point clouds, but relies on PointNet++, which limits global context. We propose Contact-GraspTransformer (CGT), which keeps CGN's contact heads and loss and replaces the backbone with Point Transformer v3 (PTv3).

On a 15-category ACRONYM subset, CGT reduces test loss from 0.82 to 0.75 and cuts inference time from 113.64 ms to 66.97 ms, at the cost of a larger model (0.8M → 8.8M parameters). Transformer serialization plus windowed attention improves both accuracy and speed; the remaining trade-off is parameter count, and gripper-width classification is the one term where PointNet++ still wins.

Method

Both models take a 4,096-point cloud and predict a grasp at every point: confidence, approach and baseline directions, and gripper width. The only architectural change is the backbone. PTv3 voxelizes the cloud, serializes voxels with space-filling curves, and runs windowed attention instead of PointNet++ radius-ball grouping.

Franka gripper with contact, approach, baseline, width, and depth annotated

Contact-centric grasp Translation is anchored at a surface contact c. Rotation is built from the approach a and baseline b after an in-network Gram–Schmidt step.

Voxelized point cloud colored by height

Voxelization Points are quantized onto a grid. Multiple points can share a voxel; they remain distinct tokens for the transformer stages.

Serialization uses four curves — Morton (Z), transposed Morton, 3-D Hilbert, and transposed Hilbert — with a shuffle-order augmentation so the network does not overfit one 1-D layout.

Morton Z-order curve iterations

Morton (Z-order)

Transposed Morton curve iterations

Transposed Morton

3-D Hilbert curve iterations

3-D Hilbert

Transposed 3-D Hilbert curve iterations

Transposed Hilbert

Encoder stages pool along the serialized order; decoder stages unpool with skip connections. The figure below shows successive encoder voxel grids from our visualization tools.

Encoder stage 0 voxels

Encoder stage 0

Encoder stage 1 voxels

Encoder stage 1

Encoder stage 2 voxels

Encoder stage 2

Results

Matched training: same CGN heads, same loss, same 4,096-point clouds, held-out meshes never seen at train time. PTv3 uses the sparse3d xCPE variant.

Metric PointNet++ PTv3 (sparse3d) Δ
test/loss 0.82 0.75 −0.07
test/loss_conf 0.66 0.62 −0.04
test/loss_adds 0.046 0.036 −0.010
test/loss_width 0.42 0.78 +0.36
Inference time (ms) 113.64 66.97 −46.67
Parameters (M) 0.8 8.8 +8.0
Train loss curves for PTv3 and PointNet++

Train loss PTv3 (orange) vs PointNet++ (purple).

Validation loss curves

Validation loss PTv3 converges lower and more stably.

Test loss bar chart

Test loss Held-out objects, matched conditions.

Weights and Biases parallel coordinates plot of the PTv3 hyperparameter sweep

80-trial Bayesian sweep on PTv3. Best region: learning rate 2e-4–1e-3, AdamW, cosine or step schedule, and CGN loss weights rebalanced so ADD-S is 1–3 and width is < 0.2 (the paper defaults of 10 and 1 over-weight those terms).

Validation loss for sparse3d, knn, and conv1d xCPE

xCPE ablation. sparse3d (0.75) is the selected variant: faster than k-NN and more accurate than conv1d. knn 0.78, conv1d 0.80.

Top-1 confidence on one held-out scene per category. PTv3 is ahead on every object; the gap is largest on cups and pencils, where local grouping has little geometry to work with.

Object PointNet++ PTv3
Cup0.510.79
Bottle0.500.51
Bowl0.500.51
Mug0.500.52
Pencil0.060.27

MuJoCo simulation

Loss does not prove a grasp can be executed. We replay top-1 predictions on a Franka Panda in MuJoCo: approach along the predicted vector, close, then lift 15 cm. Success is an object lift of at least 3 cm.

Bottle — PointNet++ vs PTv3

PointNet++ Top-1 grasp execution on the test bottle.

PTv3 Top-1 grasp execution on the same object.

Ground-truth grasps on a bottle

Ground truth

PointNet++ predicted grasps on a bottle

PointNet++ candidates

PTv3 predicted grasps on a bottle

PTv3 candidates

Mug — PointNet++ vs PTv3

PointNet++ Rim grasp; the mug lifts.

PTv3 Handle grasp; the mug lifts.

Codebase

The public repo is Contact-GraspTransformer. It covers ACRONYM subsetting, synthetic RGB-D generation, training both backbones, inference to ACRONYM-style .h5 files, Open3D visualization, and the MuJoCo evaluator used for the videos above.

conda create -n idlsproj python=3.9 -y
conda activate idlsproj
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu128
pip install -r requirements.txt -r requirements-data.txt -r requirements-viz.txt -r requirements-eval.txt

python data/acronym/build_acronym_subset.py --src /path/to/acronym
python data/generate_data.py --category Mug --n_views 5
python train.py --data_dir data/out --backbone ptv3 --epochs 10
python inference_cli.py --ckpt checkpoints/ptv3/<run>/best.pt --points data/out/test/Mug/<hash>/000.npz
python -m eval.visualize_grasp --source pred_ptv3 --checkpoint checkpoints/ptv3/<run>/best.pt \
  --view_npz data/out/test/Mug/<hash>/000.npz --top_k 5 --compare_labels_preview

Full install notes, coordinate frames, and MuJoCo flags are in SETUP.md.

BibTeX

@techreport{Royal2026CGT,
  title   = {Contact-GraspTransformer},
  author  = {Royal J., Devansh and Mirebrahimi, Aida and Wang, Tim and Shankar K., Dinesh Varun},
  year    = {2026},
  institution = {Carnegie Mellon University},
  note    = {11-785 Introduction to Deep Learning, Spring 2026},
  url     = {https://devanshroyal-7.github.io/Contact-Grasp-Transformer/}
}