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: main_s0

Main results

set stage pos_mm_med pos_mm_p95 rot_deg_med succ_strict succ_std succ_loose
seen robots net 0.6957 3.719 0.02577 0.6772 0.9648 0.9805
seen robots full 1.666e-05 0.0001229 9.224e-07 0.9912 0.9944 0.9954
seen-robot variants net 0.7449 4.171 0.02641 0.6406 0.9568 0.9756
seen-robot variants full 1.863e-05 0.0001333 9.224e-07 0.9897 0.9917 0.9932
unseen robots net 3.996 21.59 1.167 0.2122 0.4849 0.761
unseen robots full 2.98e-05 0.0001647 1.05e-06 0.9683 0.9756 0.9792
unseen-robot variants net 4.226 23.35 1.37 0.1899 0.4797 0.7573
unseen-robot variants full 2.98e-05 0.0001686 1.05e-06 0.969 0.9756 0.9785

Baselines

set method succ_std pos_mm_med ms_per_query
seen robots ours_full 0.9925 1.49e-05 0.9091
seen robots ours_net_only 0.965 0.6872 0.6511
seen robots ours_proposals_only 0.095 12.4 0.1345
seen robots ours_refiner_only 0.705 1.656 0.26
seen robots dls_multistart_9 0.9625 2.985e-05 0.2568
seen robots copy_seed(ฯƒ=0.05) 0 63.67 0.1285
seen robots pybullet_ik 0.975 0.0001686 23.47
seen robots ikpy 0.86 8.429e-05 38.38
seen-robot variants ours_full 0.9825 1.49e-05 0.9078
seen-robot variants ours_net_only 0.9375 0.7847 0.6525
seen-robot variants ours_proposals_only 0.0525 19.4 0.1319
seen-robot variants ours_refiner_only 0.6225 2.364 0.259
seen-robot variants dls_multistart_9 0.96 3.725e-05 0.2567
seen-robot variants copy_seed(ฯƒ=0.05) 0 74.74 0.1284
seen-robot variants pybullet_ik 0.975 0.000192 24.23
seen-robot variants ikpy 0.875 9.483e-05 40.03
unseen robots ours_full 0.975 2.98e-05 0.9095
unseen robots ours_net_only 0.48 4.2 0.78
unseen robots ours_proposals_only 0 132.6 0.1314
unseen robots ours_refiner_only 0.335 14.45 0.2601
unseen robots dls_multistart_9 0.9575 4.47e-05 0.2566
unseen robots copy_seed(ฯƒ=0.05) 0 59.05 0.1288
unseen robots pybullet_ik 0.98 0.0001788 25.52
unseen robots ikpy 0.8925 8.677e-05 41.73
unseen-robot variants ours_full 0.965 2.98e-05 0.9108
unseen-robot variants ours_net_only 0.4775 4.365 0.7826
unseen-robot variants ours_proposals_only 0 146.8 0.1323
unseen-robot variants ours_refiner_only 0.3425 14.8 0.2599
unseen-robot variants dls_multistart_9 0.9475 4.215e-05 0.3872
unseen-robot variants copy_seed(ฯƒ=0.05) 0 58.68 0.1287
unseen-robot variants pybullet_ik 0.9775 0.0002046 28.58
unseen-robot variants ikpy 0.865 8.429e-05 51.01

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
main 1 0.9568 0.7449 0.4849 3.996 0.9756 0.4482

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
main 1 170.8 671.2 114.6 4365 155.1 4.298 1.296

Load a model

from huggingface_hub import hf_hub_download
import torch
ck = torch.load(hf_hub_download("iFaz/urdf-graph-ik-journal-main", "experiments/main_s0/model.pt"), weights_only=False)
# model = build_model(ck["cfg"], ck["text_dim"]); model.load_state_dict(ck["state"])
Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading