cat README.md
# GraphHands
A graph-based representation learning pipeline for dexterous hand manipulation,
aligning **human hands** (EgoDex) with **robot hands** (orca tendon retargeting)
in a shared latent space.
## Why
Human and robot hands have different proportions, joints, and actuation, so their
poses don't map one-to-one. GraphHands learns the correspondence instead of
hand-coding it — turning two incompatible embodiments into one common space you
can transfer skills across.
## How
- **Graph construction** — DBSCAN clustering + k-NN over canonical pose sequences
- **Gromov-Wasserstein alignment** — recover cross-embodiment node correspondences
- **node2vec (PecanPy)** — learn embeddings on the merged human/robot graph
- **Conditional autoencoder** — reconstruct poses conditioned on embodiment ID
- **Posture library** — labelled exemplars (pinch, open-flat, …) per embodiment,
stored as raw 63-D canonical pose vectors
## Stack
- Python 3.12, PyTorch (conditional CAE)
- scikit-learn (DBSCAN, k-NN), POT (optimal transport), NetworkX
- Streamlit + Plotly labelling and visualization apps
ls -l
Python, PyTorch, scikit-learn, POT, NetworkX, node2vec