URDF-conditioned Graph IK
Learned inverse kinematics that reads a robot's URDF as a kinematic graph and solves IK for arms it was not
trained on, with no previous joint state required. Each folder experiments/<name>/ holds model.pt,
config.json, metrics.json, tables/ (CSV / Markdown / LaTeX) and videos/.
Experiments: abl_mlp_s0, abl_no_attn_s0, abl_no_local_s0, abl_no_synthetic_s0, abl_no_text_s0
Main results
not run
Baselines
not run
Ablations
| base | n_seeds | seen-robot variants none net succ_std | seen-robot variants none net pos_mm_med | unseen robots none net succ_std | unseen robots none net pos_mm_med | unseen robots none full succ_std | unseen robots uniform net succ_std |
|---|---|---|---|---|---|---|---|
| abl_mlp | 1 | 0.801 | 2.468 | 0.3826 | 13.29 | 0.9263 | 0.2913 |
| abl_no_attn | 1 | 0.8333 | 1.634 | 0.3674 | 12.96 | 0.9761 | 0.3035 |
| abl_no_local | 1 | 0.9402 | 0.8261 | 0.4963 | 4.834 | 0.9739 | 0.4587 |
| abl_no_synthetic | 1 | 0.9758 | 0.7515 | 0.4626 | 16.33 | 0.9846 | 0.4185 |
| abl_no_text | 1 | 0.9434 | 0.8814 | 0.4646 | 4.099 | 0.9751 | 0.418 |
Leave-one-robot-out
not run
Compute
| base | n_seeds | compute cuda b1 ms | compute cuda b1024 ms | compute cpu b1 ms | compute cpu b256 ms | train_min | train_it_s | train_gpu_GB |
|---|---|---|---|---|---|---|---|---|
| abl_mlp | 1 | 98.96 | 145.6 | 60.56 | 668.8 | 45.68 | 14.6 | 0.4511 |
| abl_no_attn | 1 | 151.1 | 397.3 | 106.2 | 2367 | 113 | 5.9 | 0.952 |
| abl_no_local | 1 | 154.5 | 484.8 | 98.1 | 3315 | 130 | 5.13 | 0.9669 |
| abl_no_synthetic | 1 | 174.9 | 629.7 | 119.2 | 4350 | 157.9 | 4.222 | 1.31 |
| abl_no_text | 1 | 170.7 | 647.9 | 112.4 | 4209 | 155.1 | 4.298 | 1.282 |
Load a model
from huggingface_hub import hf_hub_download
import torch
ck = torch.load(hf_hub_download("iFaz/urdf-graph-ik-journal-ablations", "experiments/main_s0/model.pt"), weights_only=False)
# model = build_model(ck["cfg"], ck["text_dim"]); model.load_state_dict(ck["state"])