Code and reproducibility

Source code and pretrained ckptsBrowse · 370 files · 129 models · 1.6 GB
Implementation, experiments and models Uncompressed size
  • clear/499 files · 2.0 GB
    • assets/120 files · 72.3 MB
      • g1/41 files · 14.7 MB
        • meshes/33 files · 14.6 MB
          • head_link.STL337.6 KB
          • left_ankle_pitch_link.STL71.2 KB
          • left_ankle_roll_link.STL653.4 KB
          • left_elbow_link.STL88.8 KB
          • left_hip_pitch_link.STL181.7 KB
          • left_hip_roll_link.STL192.2 KB
          • left_hip_yaw_link.STL296.3 KB
          • left_knee_link.STL854.9 KB
          • left_shoulder_pitch_link.STL176.8 KB
          • left_shoulder_roll_link.STL400.3 KB
          • left_shoulder_yaw_link.STL249.2 KB
          • left_wrist_pitch_link.STL86.0 KB
          • left_wrist_roll_link.STL356.2 KB
          • left_wrist_yaw_link.STL318.7 KB
          • logo_link.STL243.4 KB
          • pelvis.STL1.1 MB
          • pelvis_contour_link.STL1.8 MB
          • right_ankle_pitch_link.STL71.2 KB
          • right_ankle_roll_link.STL653.8 KB
          • right_elbow_link.STL88.8 KB
          • right_hip_pitch_link.STL181.3 KB
          • right_hip_roll_link.STL192.7 KB
          • right_hip_yaw_link.STL296.3 KB
          • right_knee_link.STL852.3 KB
          • right_shoulder_pitch_link.STL176.8 KB
          • right_shoulder_roll_link.STL401.9 KB
          • right_shoulder_yaw_link.STL250.0 KB
          • right_wrist_pitch_link.STL79.6 KB
          • right_wrist_roll_link.STL356.1 KB
          • right_wrist_yaw_link.STL341.5 KB
          • torso_link_rev_1_0.STL2.6 MB
          • waist_roll_link_rev_1_0.STL85.9 KB
          • waist_yaw_link_rev_1_0.STL620.0 KB
        • g1.xml29.9 KB
        • g1_pos.xml34.1 KB
        • g1_pos_native.xml32.3 KB
        • README_upstream.md862 B
        • scene_flat.xml2.9 KB
        • scene_flat_native.xml1.5 KB
        • scene_push.xml2.1 KB
        • scene_push_native.xml2.1 KB
      • husky/8 files · 713.9 KB
        • meshes/5 files · 708.2 KB
          • base_link.stl60.5 KB
          • bumper.stl23.9 KB
          • top_plate.stl154.0 KB
          • user_rail.stl115.2 KB
          • wheel.stl354.6 KB
        • husky_wo_plate.xml4.2 KB
        • README.md1.4 KB
        • scene_husky_wo_plate.xml171 B
      • spot/59 files · 55.2 MB
        • meshes/54 files · 53.4 MB
          • arm_link_el0.obj1.3 MB
          • arm_link_el0_coll.obj26.8 KB
          • arm_link_el1_0.obj271.5 KB
          • arm_link_el1_1.obj1.6 MB
          • arm_link_el1_lip.obj39.9 KB
          • arm_link_el1_main.obj20.8 KB
          • arm_link_fngr_0.obj169.2 KB
          • arm_link_fngr_1.obj724.3 KB
          • arm_link_hr0.obj1.2 MB
          • arm_link_hr0_coll.obj57.9 KB
          • arm_link_sh0.obj360.6 KB
          • arm_link_sh0_base.obj6.3 KB
          • arm_link_sh0_left_motor.obj13.6 KB
          • arm_link_sh0_right_motor.obj10.0 KB
          • arm_link_sh1_0.obj134.0 KB
          • arm_link_sh1_1.obj1.5 MB
          • arm_link_wr0.obj10.0 KB
          • arm_link_wr0_0.obj70.2 KB
          • arm_link_wr0_1.obj381.7 KB
          • arm_link_wr1.obj68.2 KB
          • arm_link_wr1_0.obj109.3 KB
          • arm_link_wr1_1.obj785.3 KB
          • body_0.obj2.2 MB
          • body_1.obj9.3 MB
          • body_collision.obj14.5 KB
          • front_jaw.obj6.4 KB
          • front_left_hip.obj2.7 MB
          • front_left_lower_leg.obj2.6 MB
          • front_left_upper_leg_0.obj358.1 KB
          • front_left_upper_leg_1.obj2.4 MB
          • front_right_hip.obj2.7 MB
          • front_right_lower_leg.obj2.6 MB
          • front_right_upper_leg_0.obj390.1 KB
          • front_right_upper_leg_1.obj2.4 MB
          • jaw_tooth.obj2.0 KB
          • left_finger.obj27.3 KB
          • left_hinge.obj23.6 KB
          • left_lower_leg_collision.obj22.2 KB
          • left_tooth.obj8.1 KB
          • left_upper_leg_collision.obj13.0 KB
          • middle_jaw.obj8.2 KB
          • rear_left_hip.obj2.8 MB
          • rear_left_lower_leg.obj2.6 MB
          • rear_left_upper_leg_0.obj337.1 KB
          • rear_left_upper_leg_1.obj2.5 MB
          • rear_right_hip.obj2.7 MB
          • rear_right_lower_leg.obj2.6 MB
          • rear_right_upper_leg_0.obj387.5 KB
          • rear_right_upper_leg_1.obj2.4 MB
          • right_finger.obj26.2 KB
          • right_hinge.obj22.6 KB
          • right_lower_leg_collision.obj24.7 KB
          • right_tooth.obj7.5 KB
          • right_upper_leg_collision.obj13.1 KB
        • LICENSE1.5 KB
        • README.md1.7 KB
        • scene.xml823 B
        • spot.png1.8 MB
        • spot.xml8.9 KB
      • spot_w_arm/7 files · 72.5 KB
        • scene_flat_native.xml1.4 KB
        • scene_interlimb.xml3.6 KB
        • scene_namo.xml11.4 KB
        • scene_push.xml3.4 KB
        • spot_arm.xml15.6 KB
        • spot_arm_pos.xml17.9 KB
        • spot_arm_pos_native.xml19.1 KB
      • a_grid.png1.9 KB
      • b_ordered_manipulation.png233.7 KB
      • c_maze_navigation.png117.1 KB
      • d_long_horizon_planning.png120.6 KB
      • teaser.png1.2 MB
    • ckpts/130 files · 1.7 GB
      • grid/90 files · 719.3 MB
      • locomotion/3 files · 19.7 MB
      • maze/36 files · 952.5 MB
      • paths.json33.7 KB
    • clear/27 files · 519.4 KB
      • data/10 files · 205.9 KB
        • __init__.py414 B
        • capability.py12.3 KB
        • data.py41.5 KB
        • grid.py58.4 KB
        • kappa.py5.7 KB
        • modes.py4.0 KB
        • morphology.py15.3 KB
        • oracle.py43.6 KB
        • probes.py6.2 KB
        • terrain.py18.4 KB
      • maze/3 files · 73.7 KB
        • __init__.py156 B
        • robots.py26.8 KB
        • world.py46.8 KB
      • model/9 files · 200.5 KB
        • __init__.py360 B
        • affordancenet.py10.6 KB
        • causalflownet.py26.9 KB
        • clear.py102.3 KB
        • encoders.py23.8 KB
        • morphology_encoder.py5.0 KB
        • ordernet.py19.5 KB
        • quantizers.py10.9 KB
        • QUANTIZERS_LICENSE1.1 KB
      • __init__.py1.2 KB
      • eval.py9.1 KB
      • paths.py427 B
      • provenance.py1.3 KB
      • util.py27.4 KB
    • experiments/135 files · 179.0 MB
      • common/6 files · 27.2 KB
        • __init__.py660 B
        • dispatch.py1.1 KB
        • interfaces.py7.3 KB
        • manifests.py3.8 KB
        • registry.py775 B
        • statistics.py13.6 KB
      • exp1/43 files · 173.9 MB
        • configs/6 files · 66.0 KB
          • debug.yaml1.1 KB
          • leap2026_plancode.yaml3.2 KB
          • leap2026_rankmask_causal.yaml3.2 KB
          • leap2026_rankmask_nocausal.yaml3.2 KB
          • main.yaml3.2 KB
          • paper.json52.1 KB
        • data/9 files · 173.5 MB
          • ordering_main/6 files · 158.2 MB
            • test/2 files · 24.7 MB
              • scene_manifest.jsonl24.7 MB
              • scene_manifest.jsonl.sha25665 B
            • train/1 files · 121.3 MB
              • scene_manifest.jsonl121.3 MB
            • val/1 files · 12.2 MB
              • scene_manifest.jsonl12.2 MB
            • generation_stats.json938 B
            • templates.json33.6 KB
          • original_fresh.jsonl2.5 MB
          • original_remaining.jsonl11.0 MB
          • structural.jsonl1.8 MB
        • __init__.py868 B
        • abstraction.py3.7 KB
        • aggregate.py11.6 KB
        • cli.py32.7 KB
        • coverage_sampling.py740 B
        • dataset.py14.0 KB
        • environment.py25.1 KB
        • evaluate.py5.5 KB
        • evaluator.py45.6 KB
        • generator.py12.6 KB
        • joint_matching_model.py7.5 KB
        • metrics.py3.5 KB
        • models.py25.1 KB
        • oracle.py16.1 KB
        • ordering_ablation.py11.1 KB
        • plancode_model.py7.4 KB
        • planslots_model.py13.0 KB
        • planslots_scene_model.py8.8 KB
        • planslots_state_model.py7.2 KB
        • reachability_study.py8.1 KB
        • render.py6.5 KB
        • sampling_dev.py2.6 KB
        • setcover_model.py9.1 KB
        • setcover_v2_model.py5.6 KB
        • shared_model.py8.5 KB
        • structural_confirmation.py3.2 KB
        • structural_stress.py8.9 KB
        • structural_training.py15.4 KB
      • exp2/22 files · 424.5 KB
        • data/paper/4 files · 251.2 KB
          • collection_audit.json196.9 KB
          • collection_protocol.json250 B
          • train.npz38.9 KB
          • val.npz15.1 KB
        • __init__.py0 B
        • access_dataset.py4.0 KB
        • access_teacher.py3.0 KB
        • binding.py6.0 KB
        • comparison_models.py10.8 KB
        • comparison_protocol.py7.1 KB
        • dataset.py10.7 KB
        • evaluate_full.py13.7 KB
        • evaluation_manifest.py3.5 KB
        • external_models.py18.0 KB
        • model.py22.3 KB
        • refine_flow_comparison.py3.3 KB
        • run_scene.py28.1 KB
        • scene_bridge.py14.8 KB
        • splits.py8.5 KB
        • sumo_executor.py9.2 KB
        • target_codec.py3.1 KB
        • train_comparison.py7.0 KB
      • exp3/61 files · 4.7 MB
        • data/22 files · 4.3 MB
          • primary_prepared_local_edges/8 files · 4.2 MB
            • boundary_attempt_audit.json19.6 KB
            • g1_probes.jsonl889.1 KB
            • g1_teachers.jsonl523.5 KB
            • manifest.json3.2 KB
            • shared_probes.jsonl1.1 MB
            • shared_teachers.jsonl992.1 KB
            • spot_arm_probes.jsonl228.8 KB
            • spot_arm_teachers.jsonl468.6 KB
          • probe_scenes/13 files · 10.6 KB
            • 16e3fa0c0c5c38661a773b350944f17959e24302fcdc0ff56c052a1f2be98795/1 files · 972 B
              • input.jsonl972 B
            • 277fb2f20cac8283a7349ccb5586178d01f8d896713503ff2990c4183f04f34e/1 files · 337 B
              • input.jsonl337 B
            • 41e15b45fdccc79250b48d52490b266341533e2a647d8caf3ac7a9ba8f0b4148/1 files · 963 B
              • input.jsonl963 B
            • 5b2f41b53e92a384b2e1250f85e41c4f09ba082af38d50462629081b1ddf431d/1 files · 337 B
              • input.jsonl337 B
            • 651a14b652c3e3b11f7fa159c157f2c76676a3b9e3fc89287eaf3e9da61d6616/1 files · 963 B
              • input.jsonl963 B
            • 70ad2fa06f1e544656b78007648b42e769e228c45b158897b0897bdb9e2409bc/1 files · 964 B
              • input.jsonl964 B
            • 70d3ff9e6a4d9c791040683d8e5c0b325f23dae67c4bd613554c97db0bb059d0/1 files · 968 B
              • input.jsonl968 B
            • 782631f2b2a894ad2de71e44d38c210e0786d14701a150ce9b543cc0c8863be5/1 files · 954 B
              • input.jsonl954 B
            • c61f1ff7382b71f7874fae054ef5c0ac742b100caa8a1b594e0d0e2d0cbc6c95/1 files · 966 B
              • input.jsonl966 B
            • ce5879da6d701f3e5f5acf1b0157f355f063388218a54e0ef7a6b88200e91dd0/1 files · 946 B
              • input.jsonl946 B
            • d611aa2a4841d0339322e7a6bc63dedc6f6c6d9982938945b937aa42d728e5a2/1 files · 970 B
              • input.jsonl970 B
            • dbd2a35f769ff1be8840faf254d45bae891f6018aae6edd3da76a13a930a57b5/1 files · 335 B
              • input.jsonl335 B
            • e8841fcc7ad0f57c24a54eff6fea2cd6fe51db80e37f1d56463d44a0e461af30/1 files · 970 B
              • input.jsonl970 B
          • example_g1.json46.3 KB
        • trajectory_v3/32 files · 351.2 KB
          • __init__.py223 B
          • calibration.py2.6 KB
          • cdgs.py9.8 KB
          • cli.py9.3 KB
          • contracts.py4.1 KB
          • data.py19.6 KB
          • dataset_gen.py26.0 KB
          • evaluate_shared.py19.8 KB
          • evaluate_v3.py22.5 KB
          • exp3_protocol.py5.6 KB
          • get_encoder.py4.2 KB
          • model.py3.8 KB
          • navigation.py15.7 KB
          • navigation_cache.py2.0 KB
          • navigation_planner.py18.2 KB
          • navigation_scenes.py5.7 KB
          • oracle_capability.py7.6 KB
          • parallel_shared_eval.py3.5 KB
          • plan_audit.py5.3 KB
          • review_metrics.py14.2 KB
          • reviewed_task_backend.py2.1 KB
          • robot_id_encoder.py2.3 KB
          • scenes.py21.1 KB
          • shared_cli.py24.6 KB
          • shared_morphology.py36.9 KB
          • summarize_shared.py3.9 KB
          • summarize_shared_exp4.py6.0 KB
          • task_backend.py8.7 KB
          • training_state.py1.9 KB
          • traversability.py9.5 KB
          • traversal_probes.py28.5 KB
          • unseen_bodies.py6.1 KB
        • __init__.py1.1 KB
        • attribution.py4.9 KB
        • model.py25.6 KB
        • oracle.py17.8 KB
        • scene_io.py4.1 KB
        • surface_adapter.py1.6 KB
        • train.py8.0 KB
      • exp4/2 files · 13.9 KB
        • sprint6h/1 files · 12.8 KB
          • train_adapt.py12.8 KB
        • __init__.py1.1 KB
      • __init__.py0 B
    • models/baselines/8 files · 30.3 KB
      • autoregressive_order/2 files · 10.8 KB
        • __init__.py169 B
        • model.py10.6 KB
      • gumbel_sinkhorn_order/3 files · 11.2 KB
        • __init__.py171 B
        • model.py6.6 KB
        • ops.py4.4 KB
      • polynet_order/2 files · 8.3 KB
        • __init__.py152 B
        • model.py8.2 KB
      • __init__.py0 B
    • utils/72 files · 77.0 MB
      • tests/8 files · 44.9 KB
        • __init__.py0 B
        • conftest.py155 B
        • test_candidate_orders_guard.py2.0 KB
        • test_flow_trace.py1.9 KB
        • test_inference_recipe.py5.5 KB
        • test_ordering_ablation.py1.2 KB
        • test_shared_balanced_sampling.py832 B
        • test_shared_morphology_v3.py33.3 KB
      • tools/5 files · 16.7 KB
        • fetch_checkpoints.py3.6 KB
        • get.py4.6 KB
        • link_checkpoints.py1.7 KB
        • render_plan.py5.7 KB
        • run.py1.1 KB
      • training/53 files · 76.9 MB
        • exp1/8 files · 59.9 MB
          • stages/6 files · 59.2 MB
            • structural_gentle_20260913_d/2 files · 26.3 MB
              • design.json3.1 KB
              • train.jsonl26.3 MB
            • structural_replay_20260913_c/2 files · 26.3 MB
              • design.json3.0 KB
              • train.jsonl26.3 MB
            • structural_training_20260913_a/2 files · 6.6 MB
              • design.json2.9 KB
              • train.jsonl6.6 MB
          • validation/structural_stress_20260913_a/1 files · 612.2 KB
            • scene_manifest.jsonl612.2 KB
          • ancestry.json88.1 KB
        • exp2/1 files · 738 B
          • train_defaults.json738 B
        • exp3/configs/39 files · 345.4 KB
          • seed0/13 files · 115.1 KB
            • cdgs.json1.8 KB
            • clear.json954 B
            • clear_holdout_spotarm.json1.1 KB
            • clear_nocausal.json1.0 KB
            • get_encoder.json32.1 KB
            • get_encoder_holdout_spotarm.json32.2 KB
            • no_affordance.json988 B
            • noemb.json953 B
            • noemb_holdout_spotarm.json1.1 KB
            • robot_id.json25.0 KB
            • robot_id_holdout_spotarm.json15.5 KB
            • specialist_g1.json1.1 KB
            • specialist_spot_arm.json1.1 KB
          • seed1/13 files · 115.2 KB
            • cdgs.json1.8 KB
            • clear.json983 B
            • clear_holdout_spotarm.json1.1 KB
            • clear_nocausal.json1.0 KB
            • get_encoder.json32.1 KB
            • get_encoder_holdout_spotarm.json32.2 KB
            • no_affordance.json1.0 KB
            • noemb.json982 B
            • noemb_holdout_spotarm.json1.1 KB
            • robot_id.json25.1 KB
            • robot_id_holdout_spotarm.json15.5 KB
            • specialist_g1.json1.1 KB
            • specialist_spot_arm.json1.1 KB
          • seed2/13 files · 115.2 KB
            • cdgs.json1.8 KB
            • clear.json983 B
            • clear_holdout_spotarm.json1.1 KB
            • clear_nocausal.json1.0 KB
            • get_encoder.json32.1 KB
            • get_encoder_holdout_spotarm.json32.2 KB
            • no_affordance.json1.0 KB
            • noemb.json982 B
            • noemb_holdout_spotarm.json1.1 KB
            • robot_id.json25.1 KB
            • robot_id_holdout_spotarm.json15.5 KB
            • specialist_g1.json1.1 KB
            • specialist_spot_arm.json1.1 KB
        • exp4/5 files · 16.7 MB
          • data/4 files · 16.7 MB
            • adapt_probes.jsonl1.1 MB
            • adapt_teachers.jsonl8.3 MB
            • exp4_teachers.jsonl7.3 MB
            • exp4_teachers_summary.json431 B
          • config.json976 B
      • viz/6 files · 34.9 KB
        • exp3/2 files · 8.3 KB
          • __init__.py0 B
          • render.py8.3 KB
        • model/3 files · 26.6 KB
          • __init__.py286 B
          • style.py2.8 KB
          • viz.py23.5 KB
        • __init__.py0 B
    • assetlink · 6 B
    • pyproject.toml630 B
    • README.md4.6 KB
    • run_01_grid.py336 B
    • run_02_manipulation.py248 B
    • run_03_maze.py1.8 KB
    • run_04_replanning.py156 B

Run the planner

uv · Python 3.11 · CPU
Terminal
curl -LO https://anonymous-hf.com/api/a/p5icltdspejh/resolve/utils/tools/get.py
python3 get.py clear && cd clear
uv sync

uv run run_03_maze.py plan --input experiments/exp3/data/example_g1.json                 # window
uv run run_03_maze.py plan --input experiments/exp3/data/example_g1.json --video demo.mp4  # headless mp4
uv run run_01_grid.py evaluate --method clear --out outputs/grid/clear                     # or a baseline: polynet, ...

Implementation

01

Representation

Robot structure is encoded together with object and scene features.

Visualization

G1
Spot
Spot + arm
Husky
Robot structure, object motion, and scene geometry.

Code

SharedEncoder
class SharedEncoder(nn.Module):    def __init__(        self,        dim,        object_dim,        scene_dim,        structure_dim,        depth=4,        heads=4,        dim_head=None,        navigation_dim=0,        navigation_norm=False,    ):        super().__init__()        dim_head = dim_head or dim // heads        self.object_in = _mlp(object_dim, dim)        self.structure_in = StructureEncoder(structure_dim, dim)        self.scene_in = _mlp(scene_dim, dim) if scene_dim else None        if not navigation_dim:            self.navigation_in = None        elif navigation_norm:            self.navigation_in = NormalizedNavigation(navigation_dim, dim)        else:            self.navigation_in = nn.Linear(navigation_dim, dim, bias=False)        self.trunk = AffordanceTransformer(            dim, depth=depth, heads=heads, dim_head=dim_head        )    def forward(self, batch, no_embodiment=False):        objects = self.object_in(batch["object_features"])        if self.navigation_in is not None:            navigation = batch["navigation_features"]            if no_embodiment:                navigation = torch.zeros_like(navigation)            objects = objects + self.navigation_in(navigation)        embodiment = self.structure_in.pool(            batch["structure"], batch["structure_mask"]        )[:, None]        if no_embodiment:            embodiment = torch.zeros_like(embodiment)        scene = (            self.scene_in(batch["scene_features"])            if self.scene_in is not None            else batch["scene_tokens"]        )        b, n, _ = objects.shape        ones = torch.ones(b, 1, dtype=torch.bool, device=objects.device)        scene_mask = batch.get("scene_mask")        if scene_mask is None:            scene_mask = torch.ones(                b, scene.shape[1], dtype=torch.bool, device=objects.device            )        key_mask = torch.cat([ones, batch["object_mask"], scene_mask], 1)        tokens = torch.cat([embodiment, objects, scene], 1)        blocked = (~key_mask)[:, None, :].expand(-1, key_mask.shape[1], -1)        encoded = self.trunk(tokens, mask=blocked)        return dict(            tokens=encoded,            objects=encoded[:, 1 : 1 + n],            scene_tokens=encoded[:, 1 + n :],            embodiment=embodiment,            scene=scene,            scene_mask=scene_mask,            key_mask=key_mask,        )

Source