Add files using upload-large-folder tool
Browse files- FILE_MANIFEST.txt +65 -0
- MODEL_INDEX.md +25 -0
- README.md +72 -6
- artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_lift_ball/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_lift_ball/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_push_box/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_push_box/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item_easy/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item_easy/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_lift_tray/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_lift_tray/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_laptop/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_laptop/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_plate/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_bottle_in_fridge/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_bottle_in_fridge/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_item_in_drawer/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_item_in_drawer/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_straighten_rope/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_straighten_rope/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_sweep_to_dustpan/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_sweep_to_dustpan/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_take_tray_out_of_oven/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_take_tray_out_of_oven/rollout_eval.md +11 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/rollout_eval.json +185 -0
- artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/rollout_eval.md +22 -0
- artifacts/outputs/interaction_debug/peract2_bimanual_push_box_launch_smoke.json +35 -0
- artifacts/outputs/interaction_debug/peract2_import_smoke.json +18 -0
- artifacts/outputs/interaction_debug/peract2_import_train_command.txt +1 -0
- artifacts/outputs/interaction_debug/peract2_smoke_push_box_plan/rollout_eval.json +31 -0
- artifacts/outputs/interaction_debug/peract2_smoke_push_box_plan/rollout_eval.md +11 -0
- code/reveal_vla_bimanual/eval/run_peract2_task_sweep.py +210 -0
- code/reveal_vla_bimanual/eval/run_rlbench_rollout_eval.py +53 -73
- code/reveal_vla_bimanual/models/backbones.py +29 -2
- code/reveal_vla_bimanual/scripts/setup_env_a_rlbench.sh +15 -4
- code/reveal_vla_bimanual/sim_rlbench/camera_spec.py +17 -4
- code/reveal_vla_bimanual/sim_rlbench/dataset.py +16 -16
- code/reveal_vla_bimanual/sim_rlbench/generate_smoke_dataset.py +15 -21
- code/reveal_vla_bimanual/sim_rlbench/launch_smoke.py +49 -34
- code/reveal_vla_bimanual/sim_rlbench/obs_adapter.py +18 -24
- code/reveal_vla_bimanual/sim_rlbench/obs_config.py +40 -0
- code/reveal_vla_bimanual/sim_rlbench/peract2_runner.py +1 -1
- code/reveal_vla_bimanual/sim_rlbench/smoke_test.py +1 -1
- code/reveal_vla_bimanual/sim_rlbench/task_resolver.py +11 -0
- environment/run_peract2_13_rollouts.sh +57 -0
- environment/setup_same_machine.sh +13 -5
- environment/upstream_revisions.txt +18 -2
- environment/validate_same_machine.sh +3 -3
FILE_MANIFEST.txt
CHANGED
|
@@ -117,6 +117,67 @@
|
|
| 117 |
./artifacts/outputs/interaction_debug/ablation_short_history_actionhist/reveal_benchmark.json
|
| 118 |
./artifacts/outputs/interaction_debug/ablation_short_history_actionhist/reveal_benchmark.md
|
| 119 |
./artifacts/outputs/interaction_debug/chunk_debug_trace.json
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 120 |
./artifacts/outputs/interaction_debug/proxy_interaction_state_actionhist/checkpoint_best.pt
|
| 121 |
./artifacts/outputs/interaction_debug/proxy_interaction_state_actionhist/config_resolved.yaml
|
| 122 |
./artifacts/outputs/interaction_debug/proxy_interaction_state_actionhist/diagnostics/proxy_diagnostics.json
|
|
@@ -268,6 +329,7 @@
|
|
| 268 |
./code/reveal_vla_bimanual/eval/metrics.py
|
| 269 |
./code/reveal_vla_bimanual/eval/report.py
|
| 270 |
./code/reveal_vla_bimanual/eval/run_ablations.py
|
|
|
|
| 271 |
./code/reveal_vla_bimanual/eval/run_proxy_diagnostics.py
|
| 272 |
./code/reveal_vla_bimanual/eval/run_reveal_benchmark.py
|
| 273 |
./code/reveal_vla_bimanual/eval/run_rlbench_rollout_eval.py
|
|
@@ -311,8 +373,10 @@
|
|
| 311 |
./code/reveal_vla_bimanual/sim_rlbench/generate_smoke_dataset.py
|
| 312 |
./code/reveal_vla_bimanual/sim_rlbench/launch_smoke.py
|
| 313 |
./code/reveal_vla_bimanual/sim_rlbench/obs_adapter.py
|
|
|
|
| 314 |
./code/reveal_vla_bimanual/sim_rlbench/peract2_runner.py
|
| 315 |
./code/reveal_vla_bimanual/sim_rlbench/smoke_test.py
|
|
|
|
| 316 |
./code/reveal_vla_bimanual/sim_rlbench/task_splits.py
|
| 317 |
./code/reveal_vla_bimanual/train/__init__.py
|
| 318 |
./code/reveal_vla_bimanual/train/configs/base.yaml
|
|
@@ -355,6 +419,7 @@
|
|
| 355 |
./environment/rlbench_env_explicit.txt
|
| 356 |
./environment/rlbench_env_export.yaml
|
| 357 |
./environment/rlbench_pip_freeze.txt
|
|
|
|
| 358 |
./environment/setup_same_machine.sh
|
| 359 |
./environment/system_packages_same_machine.txt
|
| 360 |
./environment/upstream_revisions.txt
|
|
|
|
| 117 |
./artifacts/outputs/interaction_debug/ablation_short_history_actionhist/reveal_benchmark.json
|
| 118 |
./artifacts/outputs/interaction_debug/ablation_short_history_actionhist/reveal_benchmark.md
|
| 119 |
./artifacts/outputs/interaction_debug/chunk_debug_trace.json
|
| 120 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_dual_push_buttons/rollout_eval.json
|
| 121 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_dual_push_buttons/rollout_eval.md
|
| 122 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_handover_item/rollout_eval.json
|
| 123 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_handover_item/rollout_eval.md
|
| 124 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_handover_item_easy/rollout_eval.json
|
| 125 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_handover_item_easy/rollout_eval.md
|
| 126 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_lift_ball/rollout_eval.json
|
| 127 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_lift_ball/rollout_eval.md
|
| 128 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_lift_tray/rollout_eval.json
|
| 129 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_lift_tray/rollout_eval.md
|
| 130 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_pick_laptop/rollout_eval.json
|
| 131 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_pick_laptop/rollout_eval.md
|
| 132 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_pick_plate/rollout_eval.json
|
| 133 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_pick_plate/rollout_eval.md
|
| 134 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_push_box/rollout_eval.json
|
| 135 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_push_box/rollout_eval.md
|
| 136 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_put_bottle_in_fridge/rollout_eval.json
|
| 137 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_put_bottle_in_fridge/rollout_eval.md
|
| 138 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_put_item_in_drawer/rollout_eval.json
|
| 139 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_put_item_in_drawer/rollout_eval.md
|
| 140 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_straighten_rope/rollout_eval.json
|
| 141 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_straighten_rope/rollout_eval.md
|
| 142 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_sweep_to_dustpan/rollout_eval.json
|
| 143 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_sweep_to_dustpan/rollout_eval.md
|
| 144 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_take_tray_out_of_oven/rollout_eval.json
|
| 145 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_take_tray_out_of_oven/rollout_eval.md
|
| 146 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/rollout_eval.json
|
| 147 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/rollout_eval.md
|
| 148 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_dual_push_buttons/rollout_eval.json
|
| 149 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_dual_push_buttons/rollout_eval.md
|
| 150 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item/rollout_eval.json
|
| 151 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item/rollout_eval.md
|
| 152 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item_easy/rollout_eval.json
|
| 153 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item_easy/rollout_eval.md
|
| 154 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_lift_ball/rollout_eval.json
|
| 155 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_lift_ball/rollout_eval.md
|
| 156 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_lift_tray/rollout_eval.json
|
| 157 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_lift_tray/rollout_eval.md
|
| 158 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_laptop/rollout_eval.json
|
| 159 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_laptop/rollout_eval.md
|
| 160 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_plate/rollout_eval.json
|
| 161 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_plate/rollout_eval.md
|
| 162 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_push_box/rollout_eval.json
|
| 163 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_push_box/rollout_eval.md
|
| 164 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_bottle_in_fridge/rollout_eval.json
|
| 165 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_bottle_in_fridge/rollout_eval.md
|
| 166 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_item_in_drawer/rollout_eval.json
|
| 167 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_item_in_drawer/rollout_eval.md
|
| 168 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_straighten_rope/rollout_eval.json
|
| 169 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_straighten_rope/rollout_eval.md
|
| 170 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_sweep_to_dustpan/rollout_eval.json
|
| 171 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_sweep_to_dustpan/rollout_eval.md
|
| 172 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_take_tray_out_of_oven/rollout_eval.json
|
| 173 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_take_tray_out_of_oven/rollout_eval.md
|
| 174 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/rollout_eval.json
|
| 175 |
+
./artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/rollout_eval.md
|
| 176 |
+
./artifacts/outputs/interaction_debug/peract2_bimanual_push_box_launch_smoke.json
|
| 177 |
+
./artifacts/outputs/interaction_debug/peract2_import_smoke.json
|
| 178 |
+
./artifacts/outputs/interaction_debug/peract2_import_train_command.txt
|
| 179 |
+
./artifacts/outputs/interaction_debug/peract2_smoke_push_box_plan/rollout_eval.json
|
| 180 |
+
./artifacts/outputs/interaction_debug/peract2_smoke_push_box_plan/rollout_eval.md
|
| 181 |
./artifacts/outputs/interaction_debug/proxy_interaction_state_actionhist/checkpoint_best.pt
|
| 182 |
./artifacts/outputs/interaction_debug/proxy_interaction_state_actionhist/config_resolved.yaml
|
| 183 |
./artifacts/outputs/interaction_debug/proxy_interaction_state_actionhist/diagnostics/proxy_diagnostics.json
|
|
|
|
| 329 |
./code/reveal_vla_bimanual/eval/metrics.py
|
| 330 |
./code/reveal_vla_bimanual/eval/report.py
|
| 331 |
./code/reveal_vla_bimanual/eval/run_ablations.py
|
| 332 |
+
./code/reveal_vla_bimanual/eval/run_peract2_task_sweep.py
|
| 333 |
./code/reveal_vla_bimanual/eval/run_proxy_diagnostics.py
|
| 334 |
./code/reveal_vla_bimanual/eval/run_reveal_benchmark.py
|
| 335 |
./code/reveal_vla_bimanual/eval/run_rlbench_rollout_eval.py
|
|
|
|
| 373 |
./code/reveal_vla_bimanual/sim_rlbench/generate_smoke_dataset.py
|
| 374 |
./code/reveal_vla_bimanual/sim_rlbench/launch_smoke.py
|
| 375 |
./code/reveal_vla_bimanual/sim_rlbench/obs_adapter.py
|
| 376 |
+
./code/reveal_vla_bimanual/sim_rlbench/obs_config.py
|
| 377 |
./code/reveal_vla_bimanual/sim_rlbench/peract2_runner.py
|
| 378 |
./code/reveal_vla_bimanual/sim_rlbench/smoke_test.py
|
| 379 |
+
./code/reveal_vla_bimanual/sim_rlbench/task_resolver.py
|
| 380 |
./code/reveal_vla_bimanual/sim_rlbench/task_splits.py
|
| 381 |
./code/reveal_vla_bimanual/train/__init__.py
|
| 382 |
./code/reveal_vla_bimanual/train/configs/base.yaml
|
|
|
|
| 419 |
./environment/rlbench_env_explicit.txt
|
| 420 |
./environment/rlbench_env_export.yaml
|
| 421 |
./environment/rlbench_pip_freeze.txt
|
| 422 |
+
./environment/run_peract2_13_rollouts.sh
|
| 423 |
./environment/setup_same_machine.sh
|
| 424 |
./environment/system_packages_same_machine.txt
|
| 425 |
./environment/upstream_revisions.txt
|
MODEL_INDEX.md
CHANGED
|
@@ -193,6 +193,27 @@ This file lists the uploaded checkpoints, datasets, and raw report files referen
|
|
| 193 |
- RLBench smoke dataset root
|
| 194 |
- `artifacts/data/rlbench_smoke_open_drawer/`
|
| 195 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
## Smoke Artifacts
|
| 197 |
|
| 198 |
- proxy backbone-only smoke checkpoint
|
|
@@ -220,3 +241,7 @@ This file lists the uploaded checkpoints, datasets, and raw report files referen
|
|
| 220 |
- `environment/setup_same_machine.sh`
|
| 221 |
- same-machine validation helper
|
| 222 |
- `environment/validate_same_machine.sh`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 193 |
- RLBench smoke dataset root
|
| 194 |
- `artifacts/data/rlbench_smoke_open_drawer/`
|
| 195 |
|
| 196 |
+
## RLBench PerAct2 13-Task Outputs
|
| 197 |
+
|
| 198 |
+
- PerAct2 import smoke JSON
|
| 199 |
+
- `artifacts/outputs/interaction_debug/peract2_import_smoke.json`
|
| 200 |
+
- PerAct2 train command export
|
| 201 |
+
- `artifacts/outputs/interaction_debug/peract2_import_train_command.txt`
|
| 202 |
+
- PerAct2 bimanual_push_box launch smoke JSON
|
| 203 |
+
- `artifacts/outputs/interaction_debug/peract2_bimanual_push_box_launch_smoke.json`
|
| 204 |
+
- PerAct2 no-plan 13-task combined rollout JSON
|
| 205 |
+
- `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/rollout_eval.json`
|
| 206 |
+
- PerAct2 no-plan 13-task combined rollout Markdown
|
| 207 |
+
- `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/rollout_eval.md`
|
| 208 |
+
- PerAct2 planner-enabled 13-task combined rollout JSON
|
| 209 |
+
- `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/rollout_eval.json`
|
| 210 |
+
- PerAct2 planner-enabled 13-task combined rollout Markdown
|
| 211 |
+
- `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/rollout_eval.md`
|
| 212 |
+
- PerAct2 no-plan per-task rollout root
|
| 213 |
+
- `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/`
|
| 214 |
+
- PerAct2 planner-enabled per-task rollout root
|
| 215 |
+
- `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/`
|
| 216 |
+
|
| 217 |
## Smoke Artifacts
|
| 218 |
|
| 219 |
- proxy backbone-only smoke checkpoint
|
|
|
|
| 241 |
- `environment/setup_same_machine.sh`
|
| 242 |
- same-machine validation helper
|
| 243 |
- `environment/validate_same_machine.sh`
|
| 244 |
+
- same-machine PerAct2 rollout helper
|
| 245 |
+
- `environment/run_peract2_13_rollouts.sh`
|
| 246 |
+
- PerAct2 isolated sweep helper
|
| 247 |
+
- `code/reveal_vla_bimanual/eval/run_peract2_task_sweep.py`
|
README.md
CHANGED
|
@@ -35,6 +35,7 @@ Raw machine outputs are in:
|
|
| 35 |
|
| 36 |
- `environment/setup_same_machine.sh`
|
| 37 |
- `environment/validate_same_machine.sh`
|
|
|
|
| 38 |
- `environment/system_packages_same_machine.txt`
|
| 39 |
- `environment/upstream_revisions.txt`
|
| 40 |
- `environment/rlbench_env_export.yaml`
|
|
@@ -44,6 +45,37 @@ Raw machine outputs are in:
|
|
| 44 |
- `environment/reveal_env_explicit.txt`
|
| 45 |
- `environment/reveal_pip_freeze.txt`
|
| 46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
## Raw Training Endpoints
|
| 48 |
|
| 49 |
| Run | Checkpoint | Final train total | Final val total | Metrics |
|
|
@@ -130,9 +162,9 @@ Source: `artifacts/outputs/interaction/reveal_ablation_interaction_ep1/ablations
|
|
| 130 |
| no_role_tokens | 0.0 | 0.0 | 0.0 | 0.0 | 67.39010111490886 | 0.9835391044616699 | 0.0 | 2.8990648205081624 | 0.7544853488604227 |
|
| 131 |
| short_history | 0.0 | 0.0 | 0.0 | 0.0 | 67.46627298990886 | 0.9835391044616699 | 0.0 | 2.900133213897546 | 0.7520630160967509 |
|
| 132 |
|
| 133 |
-
## Raw RLBench
|
| 134 |
|
| 135 |
-
###
|
| 136 |
|
| 137 |
| Output | Raw values | File |
|
| 138 |
| --- | --- | --- |
|
|
@@ -140,13 +172,44 @@ Source: `artifacts/outputs/interaction/reveal_ablation_interaction_ep1/ablations
|
|
| 140 |
| launch reset smoke | `description=\"hold the drawer with left hand and open the bottom drawer with right hand\"`, `front_rgb_shape=[128,128,3]`, `wrist_rgb_shape=[128,128,3]`, `wrist2_rgb_shape=[128,128,3]`, `right_pose_shape=[7]`, `left_pose_shape=[7]` | `artifacts/outputs/interaction/rlbench_env_smoke/launch_reset_smoke.json` |
|
| 141 |
| launch step smoke | `description=\"hold the drawer with left hand and open the bottom drawer with right hand\"`, `reward=0.0`, `done=false`, `front_rgb_shape_after_step=[128,128,3]` | `artifacts/outputs/interaction/rlbench_env_smoke/launch_step_smoke.json` |
|
| 142 |
| train command export | raw command text | `artifacts/outputs/interaction/rlbench_env_smoke/import_and_train_command.txt` |
|
|
|
|
|
|
|
| 143 |
|
| 144 |
-
###
|
| 145 |
|
| 146 |
| Output | Raw values | File |
|
| 147 |
| --- | --- | --- |
|
| 148 |
-
|
|
| 149 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 150 |
|
| 151 |
## RLBench Headless Smoke
|
| 152 |
|
|
@@ -251,16 +314,19 @@ Use:
|
|
| 251 |
```bash
|
| 252 |
/workspace/VLAarchtests/environment/setup_same_machine.sh
|
| 253 |
/workspace/VLAarchtests/environment/validate_same_machine.sh
|
|
|
|
| 254 |
```
|
| 255 |
|
| 256 |
That helper:
|
| 257 |
|
| 258 |
- links the bundled code to `/workspace/reveal_vla_bimanual` if needed
|
| 259 |
-
- clones the pinned third-party repos into `/workspace/third_party`
|
|
|
|
| 260 |
- installs the RLBench env
|
| 261 |
- installs the reveal env base
|
| 262 |
- installs the RLBench headless X prerequisites
|
| 263 |
- starts X on `:99`
|
|
|
|
| 264 |
|
| 265 |
Raw setup metadata is in:
|
| 266 |
|
|
|
|
| 35 |
|
| 36 |
- `environment/setup_same_machine.sh`
|
| 37 |
- `environment/validate_same_machine.sh`
|
| 38 |
+
- `environment/run_peract2_13_rollouts.sh`
|
| 39 |
- `environment/system_packages_same_machine.txt`
|
| 40 |
- `environment/upstream_revisions.txt`
|
| 41 |
- `environment/rlbench_env_export.yaml`
|
|
|
|
| 45 |
- `environment/reveal_env_explicit.txt`
|
| 46 |
- `environment/reveal_pip_freeze.txt`
|
| 47 |
|
| 48 |
+
## Code Paths Updated In This Bundle
|
| 49 |
+
|
| 50 |
+
- interaction-state architecture and wiring
|
| 51 |
+
- `code/reveal_vla_bimanual/models/reveal_head.py`
|
| 52 |
+
- `code/reveal_vla_bimanual/models/world_model.py`
|
| 53 |
+
- `code/reveal_vla_bimanual/models/planner.py`
|
| 54 |
+
- `code/reveal_vla_bimanual/models/action_decoder.py`
|
| 55 |
+
- `code/reveal_vla_bimanual/models/observation_memory.py`
|
| 56 |
+
- `code/reveal_vla_bimanual/models/policy.py`
|
| 57 |
+
- proxy training, losses, and evaluator changes
|
| 58 |
+
- `code/reveal_vla_bimanual/train/losses.py`
|
| 59 |
+
- `code/reveal_vla_bimanual/train/smoke_checks.py`
|
| 60 |
+
- `code/reveal_vla_bimanual/eval/run_proxy_diagnostics.py`
|
| 61 |
+
- `code/reveal_vla_bimanual/eval/run_reveal_benchmark.py`
|
| 62 |
+
- RLBench and PerAct2 adapter changes
|
| 63 |
+
- `code/reveal_vla_bimanual/sim_rlbench/task_resolver.py`
|
| 64 |
+
- `code/reveal_vla_bimanual/sim_rlbench/camera_spec.py`
|
| 65 |
+
- `code/reveal_vla_bimanual/sim_rlbench/obs_config.py`
|
| 66 |
+
- `code/reveal_vla_bimanual/sim_rlbench/dataset.py`
|
| 67 |
+
- `code/reveal_vla_bimanual/sim_rlbench/obs_adapter.py`
|
| 68 |
+
- `code/reveal_vla_bimanual/sim_rlbench/peract2_runner.py`
|
| 69 |
+
- `code/reveal_vla_bimanual/sim_rlbench/smoke_test.py`
|
| 70 |
+
- `code/reveal_vla_bimanual/sim_rlbench/launch_smoke.py`
|
| 71 |
+
- `code/reveal_vla_bimanual/eval/run_rlbench_rollout_eval.py`
|
| 72 |
+
- `code/reveal_vla_bimanual/eval/run_peract2_task_sweep.py`
|
| 73 |
+
- same-machine bootstrap helpers
|
| 74 |
+
- `environment/setup_same_machine.sh`
|
| 75 |
+
- `environment/validate_same_machine.sh`
|
| 76 |
+
- `environment/run_peract2_13_rollouts.sh`
|
| 77 |
+
- `environment/upstream_revisions.txt`
|
| 78 |
+
|
| 79 |
## Raw Training Endpoints
|
| 80 |
|
| 81 |
| Run | Checkpoint | Final train total | Final val total | Metrics |
|
|
|
|
| 162 |
| no_role_tokens | 0.0 | 0.0 | 0.0 | 0.0 | 67.39010111490886 | 0.9835391044616699 | 0.0 | 2.8990648205081624 | 0.7544853488604227 |
|
| 163 |
| short_history | 0.0 | 0.0 | 0.0 | 0.0 | 67.46627298990886 | 0.9835391044616699 | 0.0 | 2.900133213897546 | 0.7520630160967509 |
|
| 164 |
|
| 165 |
+
## Raw RLBench Outputs
|
| 166 |
|
| 167 |
+
### Legacy Open-Drawer Path
|
| 168 |
|
| 169 |
| Output | Raw values | File |
|
| 170 |
| --- | --- | --- |
|
|
|
|
| 172 |
| launch reset smoke | `description=\"hold the drawer with left hand and open the bottom drawer with right hand\"`, `front_rgb_shape=[128,128,3]`, `wrist_rgb_shape=[128,128,3]`, `wrist2_rgb_shape=[128,128,3]`, `right_pose_shape=[7]`, `left_pose_shape=[7]` | `artifacts/outputs/interaction/rlbench_env_smoke/launch_reset_smoke.json` |
|
| 173 |
| launch step smoke | `description=\"hold the drawer with left hand and open the bottom drawer with right hand\"`, `reward=0.0`, `done=false`, `front_rgb_shape_after_step=[128,128,3]` | `artifacts/outputs/interaction/rlbench_env_smoke/launch_step_smoke.json` |
|
| 174 |
| train command export | raw command text | `artifacts/outputs/interaction/rlbench_env_smoke/import_and_train_command.txt` |
|
| 175 |
+
| offline RLBench smoke summary | `train_dataset.num_samples=1`, `val_dataset.num_samples=1`, `plan_enabled_for_eval=true`, `frozen_modules=[interaction_head, world_model, planner]` | `artifacts/outputs/interaction/rlbench_open_drawer_interaction_smoke/summary.json` |
|
| 176 |
+
| rollout eval | `plan_requested=true`, `plan_applied=true`, `tasks.open_drawer.error=\"A path could not be found because the target is outside of workspace.\"`, `mean_success=0.0` | `artifacts/outputs/interaction/rlbench_open_drawer_rollout_eval/rollout_eval.json` |
|
| 177 |
|
| 178 |
+
### PerAct2 Import And Launch Smoke
|
| 179 |
|
| 180 |
| Output | Raw values | File |
|
| 181 |
| --- | --- | --- |
|
| 182 |
+
| PerAct2 import smoke | `resolved_upstream_root=/workspace/third_party/peract2_bimanual_probe_20260324`, `imports.rlbench=ok`, `imports.pyrep=ok`, `imports.yarr=ok` | `artifacts/outputs/interaction_debug/peract2_import_smoke.json` |
|
| 183 |
+
| PerAct2 train command export | raw command text | `artifacts/outputs/interaction_debug/peract2_import_train_command.txt` |
|
| 184 |
+
| PerAct2 `bimanual_push_box` launch smoke | `task=BimanualPushBox`, `description=\"push the box to the red area\"`, `front_rgb_shape=[128,128,3]`, `wrist_left_rgb_shape=[128,128,3]`, `wrist_right_rgb_shape=[128,128,3]`, `reward=0.0`, `done=false` | `artifacts/outputs/interaction_debug/peract2_bimanual_push_box_launch_smoke.json` |
|
| 185 |
+
|
| 186 |
+
### PerAct2 13-Task Isolated Rollout Sweeps
|
| 187 |
+
|
| 188 |
+
| Mode | Plan requested | Plan applied | Mean success | Task count | Error tasks | Combined JSON | Combined Markdown |
|
| 189 |
+
| --- | --- | --- | ---: | ---: | --- | --- | --- |
|
| 190 |
+
| no-plan split | `false` | `false` | 0.0 | 13 | `[]` | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/rollout_eval.md` |
|
| 191 |
+
| planner-enabled split | `true` | `true` | 0.0 | 13 | `[]` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/rollout_eval.md` |
|
| 192 |
+
|
| 193 |
+
Per-task rollout JSON roots:
|
| 194 |
+
|
| 195 |
+
- `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/`
|
| 196 |
+
- `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/`
|
| 197 |
+
|
| 198 |
+
| Task | No-plan mean_success | Planner mean_success | No-plan JSON | Planner JSON |
|
| 199 |
+
| --- | ---: | ---: | --- | --- |
|
| 200 |
+
| bimanual_push_box | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_push_box/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_push_box/rollout_eval.json` |
|
| 201 |
+
| bimanual_lift_ball | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_lift_ball/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_lift_ball/rollout_eval.json` |
|
| 202 |
+
| bimanual_dual_push_buttons | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_dual_push_buttons/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_dual_push_buttons/rollout_eval.json` |
|
| 203 |
+
| bimanual_pick_plate | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_pick_plate/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_plate/rollout_eval.json` |
|
| 204 |
+
| bimanual_put_item_in_drawer | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_put_item_in_drawer/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_item_in_drawer/rollout_eval.json` |
|
| 205 |
+
| bimanual_put_bottle_in_fridge | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_put_bottle_in_fridge/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_bottle_in_fridge/rollout_eval.json` |
|
| 206 |
+
| bimanual_handover_item | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_handover_item/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item/rollout_eval.json` |
|
| 207 |
+
| bimanual_pick_laptop | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_pick_laptop/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_laptop/rollout_eval.json` |
|
| 208 |
+
| bimanual_straighten_rope | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_straighten_rope/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_straighten_rope/rollout_eval.json` |
|
| 209 |
+
| bimanual_sweep_to_dustpan | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_sweep_to_dustpan/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_sweep_to_dustpan/rollout_eval.json` |
|
| 210 |
+
| bimanual_lift_tray | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_lift_tray/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_lift_tray/rollout_eval.json` |
|
| 211 |
+
| bimanual_handover_item_easy | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_handover_item_easy/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item_easy/rollout_eval.json` |
|
| 212 |
+
| bimanual_take_tray_out_of_oven | 0.0 | 0.0 | `artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_take_tray_out_of_oven/rollout_eval.json` | `artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_take_tray_out_of_oven/rollout_eval.json` |
|
| 213 |
|
| 214 |
## RLBench Headless Smoke
|
| 215 |
|
|
|
|
| 314 |
```bash
|
| 315 |
/workspace/VLAarchtests/environment/setup_same_machine.sh
|
| 316 |
/workspace/VLAarchtests/environment/validate_same_machine.sh
|
| 317 |
+
/workspace/VLAarchtests/environment/run_peract2_13_rollouts.sh
|
| 318 |
```
|
| 319 |
|
| 320 |
That helper:
|
| 321 |
|
| 322 |
- links the bundled code to `/workspace/reveal_vla_bimanual` if needed
|
| 323 |
+
- clones the pinned PerAct2 third-party repos into `/workspace/third_party`
|
| 324 |
+
- optionally clones the legacy two-robot repos when `INSTALL_LEGACY_LAYOUT=1`
|
| 325 |
- installs the RLBench env
|
| 326 |
- installs the reveal env base
|
| 327 |
- installs the RLBench headless X prerequisites
|
| 328 |
- starts X on `:99`
|
| 329 |
+
- exposes a one-command 13-task sweep helper through `environment/run_peract2_13_rollouts.sh`
|
| 330 |
|
| 331 |
Raw setup metadata is in:
|
| 332 |
|
artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_lift_ball/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": false,
|
| 4 |
+
"plan_applied": false,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_lift_ball": {
|
| 17 |
+
"task_class": "BimanualLiftBall",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_lift_ball/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `False`
|
| 5 |
+
- Plan applied: `False`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_lift_ball`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_push_box/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": false,
|
| 4 |
+
"plan_applied": false,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_push_box": {
|
| 17 |
+
"task_class": "BimanualPushBox",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_noplan_split/bimanual_push_box/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `False`
|
| 5 |
+
- Plan applied: `False`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_push_box`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_handover_item": {
|
| 17 |
+
"task_class": "BimanualHandoverItem",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_handover_item`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item_easy/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_handover_item_easy": {
|
| 17 |
+
"task_class": "BimanualHandoverItemEasy",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_handover_item_easy/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_handover_item_easy`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_lift_tray/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_lift_tray": {
|
| 17 |
+
"task_class": "BimanualLiftTray",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_lift_tray/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_lift_tray`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_laptop/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_pick_laptop": {
|
| 17 |
+
"task_class": "BimanualPickLaptop",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_laptop/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_pick_laptop`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_pick_plate/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_pick_plate`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_bottle_in_fridge/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_put_bottle_in_fridge": {
|
| 17 |
+
"task_class": "BimanualPutBottleInFridge",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_bottle_in_fridge/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_put_bottle_in_fridge`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_item_in_drawer/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_put_item_in_drawer": {
|
| 17 |
+
"task_class": "BimanualPutItemInDrawer",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_put_item_in_drawer/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_put_item_in_drawer`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_straighten_rope/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_straighten_rope": {
|
| 17 |
+
"task_class": "BimanualStraightenRope",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_straighten_rope/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_straighten_rope`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_sweep_to_dustpan/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_sweep_to_dustpan": {
|
| 17 |
+
"task_class": "BimanualSweepToDustpan",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_sweep_to_dustpan/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_sweep_to_dustpan`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_take_tray_out_of_oven/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_take_tray_out_of_oven": {
|
| 17 |
+
"task_class": "BimanualTakeTrayOutOfOven",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/bimanual_take_tray_out_of_oven/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_take_tray_out_of_oven`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/rollout_eval.json
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"episodes_per_task": 1,
|
| 6 |
+
"episode_length": 20,
|
| 7 |
+
"resolution": 224,
|
| 8 |
+
"cameras": [
|
| 9 |
+
"front",
|
| 10 |
+
"wrist_left",
|
| 11 |
+
"wrist_right"
|
| 12 |
+
],
|
| 13 |
+
"tasks": {
|
| 14 |
+
"bimanual_push_box": {
|
| 15 |
+
"task_class": "BimanualPushBox",
|
| 16 |
+
"successes": [
|
| 17 |
+
0.0
|
| 18 |
+
],
|
| 19 |
+
"returns": [
|
| 20 |
+
0.0
|
| 21 |
+
],
|
| 22 |
+
"path_recoveries": 0,
|
| 23 |
+
"noop_fallbacks": 0,
|
| 24 |
+
"mean_success": 0.0,
|
| 25 |
+
"mean_return": 0.0
|
| 26 |
+
},
|
| 27 |
+
"bimanual_lift_ball": {
|
| 28 |
+
"task_class": "BimanualLiftBall",
|
| 29 |
+
"successes": [
|
| 30 |
+
0.0
|
| 31 |
+
],
|
| 32 |
+
"returns": [
|
| 33 |
+
0.0
|
| 34 |
+
],
|
| 35 |
+
"path_recoveries": 0,
|
| 36 |
+
"noop_fallbacks": 0,
|
| 37 |
+
"mean_success": 0.0,
|
| 38 |
+
"mean_return": 0.0
|
| 39 |
+
},
|
| 40 |
+
"bimanual_dual_push_buttons": {
|
| 41 |
+
"task_class": "BimanualDualPushButtons",
|
| 42 |
+
"successes": [
|
| 43 |
+
0.0
|
| 44 |
+
],
|
| 45 |
+
"returns": [
|
| 46 |
+
0.0
|
| 47 |
+
],
|
| 48 |
+
"path_recoveries": 0,
|
| 49 |
+
"noop_fallbacks": 0,
|
| 50 |
+
"mean_success": 0.0,
|
| 51 |
+
"mean_return": 0.0
|
| 52 |
+
},
|
| 53 |
+
"bimanual_pick_plate": {
|
| 54 |
+
"task_class": "BimanualPickPlate",
|
| 55 |
+
"successes": [
|
| 56 |
+
0.0
|
| 57 |
+
],
|
| 58 |
+
"returns": [
|
| 59 |
+
0.0
|
| 60 |
+
],
|
| 61 |
+
"path_recoveries": 0,
|
| 62 |
+
"noop_fallbacks": 0,
|
| 63 |
+
"mean_success": 0.0,
|
| 64 |
+
"mean_return": 0.0
|
| 65 |
+
},
|
| 66 |
+
"bimanual_put_item_in_drawer": {
|
| 67 |
+
"task_class": "BimanualPutItemInDrawer",
|
| 68 |
+
"successes": [
|
| 69 |
+
0.0
|
| 70 |
+
],
|
| 71 |
+
"returns": [
|
| 72 |
+
0.0
|
| 73 |
+
],
|
| 74 |
+
"path_recoveries": 0,
|
| 75 |
+
"noop_fallbacks": 0,
|
| 76 |
+
"mean_success": 0.0,
|
| 77 |
+
"mean_return": 0.0
|
| 78 |
+
},
|
| 79 |
+
"bimanual_put_bottle_in_fridge": {
|
| 80 |
+
"task_class": "BimanualPutBottleInFridge",
|
| 81 |
+
"successes": [
|
| 82 |
+
0.0
|
| 83 |
+
],
|
| 84 |
+
"returns": [
|
| 85 |
+
0.0
|
| 86 |
+
],
|
| 87 |
+
"path_recoveries": 0,
|
| 88 |
+
"noop_fallbacks": 0,
|
| 89 |
+
"mean_success": 0.0,
|
| 90 |
+
"mean_return": 0.0
|
| 91 |
+
},
|
| 92 |
+
"bimanual_handover_item": {
|
| 93 |
+
"task_class": "BimanualHandoverItem",
|
| 94 |
+
"successes": [
|
| 95 |
+
0.0
|
| 96 |
+
],
|
| 97 |
+
"returns": [
|
| 98 |
+
0.0
|
| 99 |
+
],
|
| 100 |
+
"path_recoveries": 0,
|
| 101 |
+
"noop_fallbacks": 0,
|
| 102 |
+
"mean_success": 0.0,
|
| 103 |
+
"mean_return": 0.0
|
| 104 |
+
},
|
| 105 |
+
"bimanual_pick_laptop": {
|
| 106 |
+
"task_class": "BimanualPickLaptop",
|
| 107 |
+
"successes": [
|
| 108 |
+
0.0
|
| 109 |
+
],
|
| 110 |
+
"returns": [
|
| 111 |
+
0.0
|
| 112 |
+
],
|
| 113 |
+
"path_recoveries": 0,
|
| 114 |
+
"noop_fallbacks": 0,
|
| 115 |
+
"mean_success": 0.0,
|
| 116 |
+
"mean_return": 0.0
|
| 117 |
+
},
|
| 118 |
+
"bimanual_straighten_rope": {
|
| 119 |
+
"task_class": "BimanualStraightenRope",
|
| 120 |
+
"successes": [
|
| 121 |
+
0.0
|
| 122 |
+
],
|
| 123 |
+
"returns": [
|
| 124 |
+
0.0
|
| 125 |
+
],
|
| 126 |
+
"path_recoveries": 0,
|
| 127 |
+
"noop_fallbacks": 0,
|
| 128 |
+
"mean_success": 0.0,
|
| 129 |
+
"mean_return": 0.0
|
| 130 |
+
},
|
| 131 |
+
"bimanual_sweep_to_dustpan": {
|
| 132 |
+
"task_class": "BimanualSweepToDustpan",
|
| 133 |
+
"successes": [
|
| 134 |
+
0.0
|
| 135 |
+
],
|
| 136 |
+
"returns": [
|
| 137 |
+
0.0
|
| 138 |
+
],
|
| 139 |
+
"path_recoveries": 0,
|
| 140 |
+
"noop_fallbacks": 0,
|
| 141 |
+
"mean_success": 0.0,
|
| 142 |
+
"mean_return": 0.0
|
| 143 |
+
},
|
| 144 |
+
"bimanual_lift_tray": {
|
| 145 |
+
"task_class": "BimanualLiftTray",
|
| 146 |
+
"successes": [
|
| 147 |
+
0.0
|
| 148 |
+
],
|
| 149 |
+
"returns": [
|
| 150 |
+
0.0
|
| 151 |
+
],
|
| 152 |
+
"path_recoveries": 0,
|
| 153 |
+
"noop_fallbacks": 0,
|
| 154 |
+
"mean_success": 0.0,
|
| 155 |
+
"mean_return": 0.0
|
| 156 |
+
},
|
| 157 |
+
"bimanual_handover_item_easy": {
|
| 158 |
+
"task_class": "BimanualHandoverItemEasy",
|
| 159 |
+
"successes": [
|
| 160 |
+
0.0
|
| 161 |
+
],
|
| 162 |
+
"returns": [
|
| 163 |
+
0.0
|
| 164 |
+
],
|
| 165 |
+
"path_recoveries": 0,
|
| 166 |
+
"noop_fallbacks": 0,
|
| 167 |
+
"mean_success": 0.0,
|
| 168 |
+
"mean_return": 0.0
|
| 169 |
+
},
|
| 170 |
+
"bimanual_take_tray_out_of_oven": {
|
| 171 |
+
"task_class": "BimanualTakeTrayOutOfOven",
|
| 172 |
+
"successes": [
|
| 173 |
+
0.0
|
| 174 |
+
],
|
| 175 |
+
"returns": [
|
| 176 |
+
0.0
|
| 177 |
+
],
|
| 178 |
+
"path_recoveries": 0,
|
| 179 |
+
"noop_fallbacks": 0,
|
| 180 |
+
"mean_success": 0.0,
|
| 181 |
+
"mean_return": 0.0
|
| 182 |
+
}
|
| 183 |
+
},
|
| 184 |
+
"mean_success": 0.0
|
| 185 |
+
}
|
artifacts/outputs/interaction_debug/peract2_13_rollout_plan_split/rollout_eval.md
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Mean success: `0.000`
|
| 7 |
+
|
| 8 |
+
## Per-task
|
| 9 |
+
|
| 10 |
+
- `bimanual_push_box`: mean_success=0.000, returns=[0.0]
|
| 11 |
+
- `bimanual_lift_ball`: mean_success=0.000, returns=[0.0]
|
| 12 |
+
- `bimanual_dual_push_buttons`: mean_success=0.000, returns=[0.0]
|
| 13 |
+
- `bimanual_pick_plate`: mean_success=0.000, returns=[0.0]
|
| 14 |
+
- `bimanual_put_item_in_drawer`: mean_success=0.000, returns=[0.0]
|
| 15 |
+
- `bimanual_put_bottle_in_fridge`: mean_success=0.000, returns=[0.0]
|
| 16 |
+
- `bimanual_handover_item`: mean_success=0.000, returns=[0.0]
|
| 17 |
+
- `bimanual_pick_laptop`: mean_success=0.000, returns=[0.0]
|
| 18 |
+
- `bimanual_straighten_rope`: mean_success=0.000, returns=[0.0]
|
| 19 |
+
- `bimanual_sweep_to_dustpan`: mean_success=0.000, returns=[0.0]
|
| 20 |
+
- `bimanual_lift_tray`: mean_success=0.000, returns=[0.0]
|
| 21 |
+
- `bimanual_handover_item_easy`: mean_success=0.000, returns=[0.0]
|
| 22 |
+
- `bimanual_take_tray_out_of_oven`: mean_success=0.000, returns=[0.0]
|
artifacts/outputs/interaction_debug/peract2_bimanual_push_box_launch_smoke.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"display": ":99",
|
| 3 |
+
"headless": true,
|
| 4 |
+
"task": "BimanualPushBox",
|
| 5 |
+
"description": "push the box to the red area",
|
| 6 |
+
"front_rgb_shape": [
|
| 7 |
+
128,
|
| 8 |
+
128,
|
| 9 |
+
3
|
| 10 |
+
],
|
| 11 |
+
"wrist_left_rgb_shape": [
|
| 12 |
+
128,
|
| 13 |
+
128,
|
| 14 |
+
3
|
| 15 |
+
],
|
| 16 |
+
"wrist_right_rgb_shape": [
|
| 17 |
+
128,
|
| 18 |
+
128,
|
| 19 |
+
3
|
| 20 |
+
],
|
| 21 |
+
"right_pose_shape": [
|
| 22 |
+
7
|
| 23 |
+
],
|
| 24 |
+
"left_pose_shape": [
|
| 25 |
+
7
|
| 26 |
+
],
|
| 27 |
+
"stepped_mode": "bimanual_noop",
|
| 28 |
+
"reward": 0.0,
|
| 29 |
+
"done": false,
|
| 30 |
+
"front_rgb_shape_after_step": [
|
| 31 |
+
128,
|
| 32 |
+
128,
|
| 33 |
+
3
|
| 34 |
+
]
|
| 35 |
+
}
|
artifacts/outputs/interaction_debug/peract2_import_smoke.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"camera_names": [
|
| 3 |
+
"front",
|
| 4 |
+
"wrist_left",
|
| 5 |
+
"wrist_right"
|
| 6 |
+
],
|
| 7 |
+
"resolution": [
|
| 8 |
+
224,
|
| 9 |
+
224
|
| 10 |
+
],
|
| 11 |
+
"global_camera": "front",
|
| 12 |
+
"resolved_upstream_root": "/workspace/third_party/peract2_bimanual_probe_20260324",
|
| 13 |
+
"imports": {
|
| 14 |
+
"rlbench": "ok",
|
| 15 |
+
"pyrep": "ok",
|
| 16 |
+
"yarr": "ok"
|
| 17 |
+
}
|
| 18 |
+
}
|
artifacts/outputs/interaction_debug/peract2_import_train_command.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
xvfb-run -a -s '-screen 0 1280x1024x24' /workspace/envs/rlbench/bin/python train.py method=PERACT_BC rlbench.task_name=multi_3cam 'rlbench.tasks=[bimanual_push_box,bimanual_lift_ball,bimanual_dual_push_buttons,bimanual_pick_plate,bimanual_put_item_in_drawer,bimanual_put_bottle_in_fridge,bimanual_handover_item,bimanual_pick_laptop,bimanual_straighten_rope,bimanual_sweep_to_dustpan,bimanual_lift_tray,bimanual_handover_item_easy,bimanual_take_tray_out_of_oven]' rlbench.demos=100 rlbench.demo_path=/workspace/data/rlbench2 replay.path=/workspace/replays/rlbench2 framework.logdir=/workspace/logs/rlbench2 framework.training_iterations=40000 framework.gpu=0 framework.env_gpu=0 framework.start_seed=0 ddp.num_devices=1 'rlbench.cameras=[front,wrist_left,wrist_right]' 'rlbench.camera_resolution=[224,224]'
|
artifacts/outputs/interaction_debug/peract2_smoke_push_box_plan/rollout_eval.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"checkpoint": "/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt",
|
| 3 |
+
"plan_requested": true,
|
| 4 |
+
"plan_applied": true,
|
| 5 |
+
"planner_mode": "trainable",
|
| 6 |
+
"support_mode_conditioning": true,
|
| 7 |
+
"episodes_per_task": 1,
|
| 8 |
+
"episode_length": 20,
|
| 9 |
+
"resolution": 224,
|
| 10 |
+
"cameras": [
|
| 11 |
+
"front",
|
| 12 |
+
"wrist_left",
|
| 13 |
+
"wrist_right"
|
| 14 |
+
],
|
| 15 |
+
"tasks": {
|
| 16 |
+
"bimanual_push_box": {
|
| 17 |
+
"task_class": "BimanualPushBox",
|
| 18 |
+
"successes": [
|
| 19 |
+
0.0
|
| 20 |
+
],
|
| 21 |
+
"returns": [
|
| 22 |
+
0.0
|
| 23 |
+
],
|
| 24 |
+
"path_recoveries": 0,
|
| 25 |
+
"noop_fallbacks": 0,
|
| 26 |
+
"mean_success": 0.0,
|
| 27 |
+
"mean_return": 0.0
|
| 28 |
+
}
|
| 29 |
+
},
|
| 30 |
+
"mean_success": 0.0
|
| 31 |
+
}
|
artifacts/outputs/interaction_debug/peract2_smoke_push_box_plan/rollout_eval.md
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# RLBench Rollout Eval
|
| 2 |
+
|
| 3 |
+
- Checkpoint: `/workspace/VLAarchtests/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt`
|
| 4 |
+
- Plan requested: `True`
|
| 5 |
+
- Plan applied: `True`
|
| 6 |
+
- Support-mode conditioning: `True`
|
| 7 |
+
- Mean success: `0.000`
|
| 8 |
+
|
| 9 |
+
## Per-task
|
| 10 |
+
|
| 11 |
+
- `bimanual_push_box`: mean_success=0.000, returns=[0.0]
|
code/reveal_vla_bimanual/eval/run_peract2_task_sweep.py
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
import argparse
|
| 4 |
+
import json
|
| 5 |
+
import subprocess
|
| 6 |
+
import sys
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
from typing import Any
|
| 9 |
+
|
| 10 |
+
from sim_rlbench.task_splits import PERACT2_BIMANUAL_TASKS
|
| 11 |
+
|
| 12 |
+
|
| 13 |
+
def _run_task(
|
| 14 |
+
project_root: Path,
|
| 15 |
+
checkpoint: Path,
|
| 16 |
+
output_dir: Path,
|
| 17 |
+
task_name: str,
|
| 18 |
+
*,
|
| 19 |
+
plan: bool,
|
| 20 |
+
episodes_per_task: int,
|
| 21 |
+
episode_length: int,
|
| 22 |
+
resolution: int,
|
| 23 |
+
device: str,
|
| 24 |
+
headless: bool,
|
| 25 |
+
chunk_commit_steps: int,
|
| 26 |
+
allow_unsupervised_planning: bool,
|
| 27 |
+
disable_support_mode_conditioning: bool,
|
| 28 |
+
) -> dict[str, Any]:
|
| 29 |
+
task_dir = output_dir / task_name
|
| 30 |
+
task_dir.mkdir(parents=True, exist_ok=True)
|
| 31 |
+
command = [
|
| 32 |
+
sys.executable,
|
| 33 |
+
"-m",
|
| 34 |
+
"eval.run_rlbench_rollout_eval",
|
| 35 |
+
"--checkpoint",
|
| 36 |
+
str(checkpoint),
|
| 37 |
+
"--output-dir",
|
| 38 |
+
str(task_dir),
|
| 39 |
+
"--tasks",
|
| 40 |
+
task_name,
|
| 41 |
+
"--episodes-per-task",
|
| 42 |
+
str(episodes_per_task),
|
| 43 |
+
"--episode-length",
|
| 44 |
+
str(episode_length),
|
| 45 |
+
"--resolution",
|
| 46 |
+
str(resolution),
|
| 47 |
+
"--device",
|
| 48 |
+
device,
|
| 49 |
+
"--chunk-commit-steps",
|
| 50 |
+
str(chunk_commit_steps),
|
| 51 |
+
]
|
| 52 |
+
if headless:
|
| 53 |
+
command.append("--headless")
|
| 54 |
+
if plan:
|
| 55 |
+
command.append("--plan")
|
| 56 |
+
if allow_unsupervised_planning:
|
| 57 |
+
command.append("--allow-unsupervised-planning")
|
| 58 |
+
if disable_support_mode_conditioning:
|
| 59 |
+
command.append("--disable-support-mode-conditioning")
|
| 60 |
+
|
| 61 |
+
completed = subprocess.run(
|
| 62 |
+
command,
|
| 63 |
+
cwd=project_root,
|
| 64 |
+
text=True,
|
| 65 |
+
capture_output=True,
|
| 66 |
+
check=False,
|
| 67 |
+
)
|
| 68 |
+
(task_dir / "command.txt").write_text(" ".join(command) + "\n", encoding="utf-8")
|
| 69 |
+
(task_dir / "stdout.txt").write_text(completed.stdout, encoding="utf-8")
|
| 70 |
+
(task_dir / "stderr.txt").write_text(completed.stderr, encoding="utf-8")
|
| 71 |
+
|
| 72 |
+
rollout_path = task_dir / "rollout_eval.json"
|
| 73 |
+
if rollout_path.exists():
|
| 74 |
+
payload = json.loads(rollout_path.read_text(encoding="utf-8"))
|
| 75 |
+
task_payload = payload.get("tasks", {}).get(task_name, {})
|
| 76 |
+
else:
|
| 77 |
+
task_payload = {}
|
| 78 |
+
|
| 79 |
+
if completed.returncode != 0 and "error" not in task_payload:
|
| 80 |
+
task_payload["error"] = f"subprocess_exit_{completed.returncode}"
|
| 81 |
+
if "mean_success" not in task_payload:
|
| 82 |
+
task_payload["mean_success"] = 0.0
|
| 83 |
+
if "mean_return" not in task_payload:
|
| 84 |
+
task_payload["mean_return"] = 0.0
|
| 85 |
+
task_payload["subprocess_returncode"] = completed.returncode
|
| 86 |
+
task_payload["rollout_path"] = str(rollout_path)
|
| 87 |
+
return task_payload
|
| 88 |
+
|
| 89 |
+
|
| 90 |
+
def _mode_name(plan: bool) -> str:
|
| 91 |
+
return "plan" if plan else "noplan"
|
| 92 |
+
|
| 93 |
+
|
| 94 |
+
def _mode_output_dir(output_root: Path, run_name_prefix: str, plan: bool) -> Path:
|
| 95 |
+
return output_root / f"{run_name_prefix}_{_mode_name(plan)}_split"
|
| 96 |
+
|
| 97 |
+
|
| 98 |
+
def _write_summary_markdown(path: Path, payload: dict[str, Any]) -> None:
|
| 99 |
+
lines = [
|
| 100 |
+
"# PerAct2 13-Task Rollout Sweep",
|
| 101 |
+
"",
|
| 102 |
+
f"- Checkpoint: `{payload['checkpoint']}`",
|
| 103 |
+
f"- Plan requested: `{payload['plan_requested']}`",
|
| 104 |
+
f"- Plan applied: `{payload['plan_applied']}`",
|
| 105 |
+
f"- Episodes per task: `{payload['episodes_per_task']}`",
|
| 106 |
+
f"- Episode length: `{payload['episode_length']}`",
|
| 107 |
+
f"- Resolution: `{payload['resolution']}`",
|
| 108 |
+
f"- Task count: `{payload['task_count']}`",
|
| 109 |
+
f"- Error tasks: `{payload['error_tasks']}`",
|
| 110 |
+
f"- Mean success: `{payload['mean_success']:.3f}`",
|
| 111 |
+
"",
|
| 112 |
+
"## Per-task",
|
| 113 |
+
"",
|
| 114 |
+
]
|
| 115 |
+
for task_name, task_payload in payload["tasks"].items():
|
| 116 |
+
if "error" in task_payload:
|
| 117 |
+
lines.append(
|
| 118 |
+
f"- `{task_name}`: mean_success={task_payload['mean_success']:.3f}, "
|
| 119 |
+
f"mean_return={task_payload['mean_return']:.3f}, "
|
| 120 |
+
f"error={task_payload['error']}, "
|
| 121 |
+
f"subprocess_returncode={task_payload['subprocess_returncode']}"
|
| 122 |
+
)
|
| 123 |
+
continue
|
| 124 |
+
lines.append(
|
| 125 |
+
f"- `{task_name}`: mean_success={task_payload['mean_success']:.3f}, "
|
| 126 |
+
f"mean_return={task_payload['mean_return']:.3f}, "
|
| 127 |
+
f"path_recoveries={task_payload.get('path_recoveries')}, "
|
| 128 |
+
f"noop_fallbacks={task_payload.get('noop_fallbacks')}"
|
| 129 |
+
)
|
| 130 |
+
path.write_text("\n".join(lines) + "\n", encoding="utf-8")
|
| 131 |
+
|
| 132 |
+
|
| 133 |
+
def _run_mode(args: argparse.Namespace, plan: bool) -> Path:
|
| 134 |
+
project_root = Path(__file__).resolve().parents[1]
|
| 135 |
+
checkpoint = Path(args.checkpoint).resolve()
|
| 136 |
+
output_dir = _mode_output_dir(Path(args.output_root).resolve(), args.run_name_prefix, plan)
|
| 137 |
+
output_dir.mkdir(parents=True, exist_ok=True)
|
| 138 |
+
|
| 139 |
+
summary: dict[str, Any] = {
|
| 140 |
+
"checkpoint": str(checkpoint),
|
| 141 |
+
"plan_requested": plan,
|
| 142 |
+
"plan_applied": plan,
|
| 143 |
+
"episodes_per_task": args.episodes_per_task,
|
| 144 |
+
"episode_length": args.episode_length,
|
| 145 |
+
"resolution": args.resolution,
|
| 146 |
+
"device": args.device,
|
| 147 |
+
"tasks": {},
|
| 148 |
+
"subprocess_mode": "isolated_per_task",
|
| 149 |
+
}
|
| 150 |
+
|
| 151 |
+
tasks = tuple(args.tasks) if args.tasks else PERACT2_BIMANUAL_TASKS
|
| 152 |
+
for task_name in tasks:
|
| 153 |
+
print(f"[peract2-sweep] running task={task_name} plan={plan}", flush=True)
|
| 154 |
+
summary["tasks"][task_name] = _run_task(
|
| 155 |
+
project_root,
|
| 156 |
+
checkpoint,
|
| 157 |
+
output_dir,
|
| 158 |
+
task_name,
|
| 159 |
+
plan=plan,
|
| 160 |
+
episodes_per_task=args.episodes_per_task,
|
| 161 |
+
episode_length=args.episode_length,
|
| 162 |
+
resolution=args.resolution,
|
| 163 |
+
device=args.device,
|
| 164 |
+
headless=args.headless,
|
| 165 |
+
chunk_commit_steps=args.chunk_commit_steps,
|
| 166 |
+
allow_unsupervised_planning=args.allow_unsupervised_planning,
|
| 167 |
+
disable_support_mode_conditioning=args.disable_support_mode_conditioning,
|
| 168 |
+
)
|
| 169 |
+
|
| 170 |
+
task_scores = [float(task_payload["mean_success"]) for task_payload in summary["tasks"].values()]
|
| 171 |
+
summary["task_count"] = len(summary["tasks"])
|
| 172 |
+
summary["error_tasks"] = sorted(
|
| 173 |
+
task_name for task_name, task_payload in summary["tasks"].items() if "error" in task_payload
|
| 174 |
+
)
|
| 175 |
+
summary["mean_success"] = float(sum(task_scores) / len(task_scores)) if task_scores else 0.0
|
| 176 |
+
|
| 177 |
+
summary_path = output_dir / "rollout_eval.json"
|
| 178 |
+
summary_path.write_text(json.dumps(summary, indent=2), encoding="utf-8")
|
| 179 |
+
_write_summary_markdown(output_dir / "rollout_eval.md", summary)
|
| 180 |
+
return summary_path
|
| 181 |
+
|
| 182 |
+
|
| 183 |
+
def main() -> None:
|
| 184 |
+
parser = argparse.ArgumentParser()
|
| 185 |
+
parser.add_argument("--checkpoint", required=True)
|
| 186 |
+
parser.add_argument("--output-root", required=True)
|
| 187 |
+
parser.add_argument("--run-name-prefix", default="peract2_13_rollout")
|
| 188 |
+
parser.add_argument("--tasks", nargs="*", default=list(PERACT2_BIMANUAL_TASKS))
|
| 189 |
+
parser.add_argument("--episodes-per-task", type=int, default=1)
|
| 190 |
+
parser.add_argument("--episode-length", type=int, default=20)
|
| 191 |
+
parser.add_argument("--resolution", type=int, default=224)
|
| 192 |
+
parser.add_argument("--device", default="cuda")
|
| 193 |
+
parser.add_argument("--headless", action="store_true", default=True)
|
| 194 |
+
parser.add_argument("--chunk-commit-steps", type=int, default=4)
|
| 195 |
+
parser.add_argument("--allow-unsupervised-planning", action="store_true")
|
| 196 |
+
parser.add_argument("--disable-support-mode-conditioning", action="store_true")
|
| 197 |
+
parser.add_argument("--skip-noplan", action="store_true")
|
| 198 |
+
parser.add_argument("--skip-plan", action="store_true")
|
| 199 |
+
args = parser.parse_args()
|
| 200 |
+
|
| 201 |
+
generated = []
|
| 202 |
+
if not args.skip_noplan:
|
| 203 |
+
generated.append(_run_mode(args, plan=False))
|
| 204 |
+
if not args.skip_plan:
|
| 205 |
+
generated.append(_run_mode(args, plan=True))
|
| 206 |
+
print(json.dumps({"generated": [str(path) for path in generated]}, indent=2))
|
| 207 |
+
|
| 208 |
+
|
| 209 |
+
if __name__ == "__main__":
|
| 210 |
+
main()
|
code/reveal_vla_bimanual/eval/run_rlbench_rollout_eval.py
CHANGED
|
@@ -7,12 +7,10 @@ from typing import Any, Sequence
|
|
| 7 |
|
| 8 |
import numpy as np
|
| 9 |
import torch
|
| 10 |
-
from
|
| 11 |
-
from rlbench.action_modes.
|
| 12 |
-
from rlbench.action_modes.
|
| 13 |
-
from rlbench.
|
| 14 |
-
from rlbench.backend.utils import task_file_to_task_class
|
| 15 |
-
from rlbench.environments_two_robots import Environment2Robots
|
| 16 |
|
| 17 |
from models.action_decoder import ChunkDecoderConfig
|
| 18 |
from models.backbones import FrozenVLBackboneConfig
|
|
@@ -24,10 +22,12 @@ from models.reveal_head import RevealHeadConfig
|
|
| 24 |
from models.world_model import RevealWMConfig
|
| 25 |
from sim_rlbench.camera_spec import default_three_camera_spec
|
| 26 |
from sim_rlbench.dataset import (
|
|
|
|
| 27 |
bimanual_proprio_from_obs,
|
| 28 |
-
single_arm_absolute_action_from_delta,
|
| 29 |
stack_live_rgb_obs,
|
| 30 |
)
|
|
|
|
|
|
|
| 31 |
from train.trainer import TrainerConfig, build_policy, planner_enabled, policy_supports_planning
|
| 32 |
|
| 33 |
|
|
@@ -52,66 +52,51 @@ def _episode_language_goal(descriptions: Sequence[str]) -> str:
|
|
| 52 |
return str(descriptions[0]) if descriptions else ""
|
| 53 |
|
| 54 |
|
| 55 |
-
def
|
| 56 |
-
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
|
| 66 |
|
| 67 |
-
def
|
| 68 |
scaled = np.asarray(delta_action, dtype=np.float32).copy()
|
| 69 |
-
|
| 70 |
-
|
| 71 |
-
scaled[offset : offset + 6] *= float(scale)
|
| 72 |
return scaled
|
| 73 |
|
| 74 |
|
| 75 |
def _step_bimanual_chunk(task: Any, obs: Any, delta_action: np.ndarray) -> tuple[Any, float, bool, int, int]:
|
| 76 |
-
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
|
| 83 |
-
|
| 84 |
-
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
| 88 |
-
|
| 89 |
-
|
| 90 |
-
|
| 91 |
-
|
| 92 |
-
|
| 93 |
-
next_obs, reward, done = task.step(env_action, arm_name)
|
| 94 |
-
if scale < 1.0:
|
| 95 |
-
recovered_steps += 1
|
| 96 |
-
stepped = True
|
| 97 |
-
break
|
| 98 |
-
except Exception as exc: # pragma: no cover - live RLBench failure path
|
| 99 |
-
last_error = exc
|
| 100 |
-
if not stepped:
|
| 101 |
-
try:
|
| 102 |
-
next_obs, reward, done = task.step(_noop_arm_action(next_obs, arm_name), arm_name)
|
| 103 |
-
noop_fallbacks += 1
|
| 104 |
-
stepped = True
|
| 105 |
-
except Exception as exc: # pragma: no cover - live RLBench failure path
|
| 106 |
-
last_error = exc
|
| 107 |
-
if not stepped:
|
| 108 |
-
if last_error is not None:
|
| 109 |
-
raise last_error
|
| 110 |
-
raise RuntimeError(f"Failed to step arm '{arm_name}' for unknown reasons.")
|
| 111 |
-
total_reward += float(reward)
|
| 112 |
-
if reward >= 1.0 or done:
|
| 113 |
-
break
|
| 114 |
-
return next_obs, total_reward, done, recovered_steps, noop_fallbacks
|
| 115 |
|
| 116 |
|
| 117 |
def main() -> None:
|
|
@@ -179,24 +164,19 @@ def main() -> None:
|
|
| 179 |
for task_name in args.tasks:
|
| 180 |
task_successes: list[float] = []
|
| 181 |
task_returns: list[float] = []
|
| 182 |
-
env:
|
| 183 |
try:
|
| 184 |
-
task_class =
|
| 185 |
-
obs_config =
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
)
|
| 190 |
-
action_mode = MoveArmThenGripper2Robots(
|
| 191 |
-
EndEffectorPoseViaPlanning2Robots(absolute_mode=True, frame="world", collision_checking=False),
|
| 192 |
-
Discrete2Robots(),
|
| 193 |
)
|
| 194 |
-
env =
|
| 195 |
action_mode=action_mode,
|
| 196 |
obs_config=obs_config,
|
| 197 |
headless=args.headless,
|
| 198 |
-
robot_setup="
|
| 199 |
-
task_name=task_class.__name__,
|
| 200 |
)
|
| 201 |
env.launch()
|
| 202 |
task = env.get_task(task_class)
|
|
|
|
| 7 |
|
| 8 |
import numpy as np
|
| 9 |
import torch
|
| 10 |
+
from rlbench.action_modes.action_mode import BimanualMoveArmThenGripper
|
| 11 |
+
from rlbench.action_modes.arm_action_modes import BimanualEndEffectorPoseViaPlanning
|
| 12 |
+
from rlbench.action_modes.gripper_action_modes import BimanualDiscrete
|
| 13 |
+
from rlbench.environment import Environment
|
|
|
|
|
|
|
| 14 |
|
| 15 |
from models.action_decoder import ChunkDecoderConfig
|
| 16 |
from models.backbones import FrozenVLBackboneConfig
|
|
|
|
| 22 |
from models.world_model import RevealWMConfig
|
| 23 |
from sim_rlbench.camera_spec import default_three_camera_spec
|
| 24 |
from sim_rlbench.dataset import (
|
| 25 |
+
absolute_action_from_delta,
|
| 26 |
bimanual_proprio_from_obs,
|
|
|
|
| 27 |
stack_live_rgb_obs,
|
| 28 |
)
|
| 29 |
+
from sim_rlbench.obs_config import build_obs_config
|
| 30 |
+
from sim_rlbench.task_resolver import resolve_task_class
|
| 31 |
from train.trainer import TrainerConfig, build_policy, planner_enabled, policy_supports_planning
|
| 32 |
|
| 33 |
|
|
|
|
| 52 |
return str(descriptions[0]) if descriptions else ""
|
| 53 |
|
| 54 |
|
| 55 |
+
def _noop_bimanual_action(obs: Any) -> np.ndarray:
|
| 56 |
+
right_obs = getattr(obs, "right", None)
|
| 57 |
+
left_obs = getattr(obs, "left", None)
|
| 58 |
+
right = np.concatenate(
|
| 59 |
+
[
|
| 60 |
+
np.asarray(right_obs.gripper_pose, dtype=np.float32),
|
| 61 |
+
np.array([float(right_obs.gripper_open), 1.0], dtype=np.float32),
|
| 62 |
+
],
|
| 63 |
+
axis=0,
|
| 64 |
+
)
|
| 65 |
+
left = np.concatenate(
|
| 66 |
+
[
|
| 67 |
+
np.asarray(left_obs.gripper_pose, dtype=np.float32),
|
| 68 |
+
np.array([float(left_obs.gripper_open), 1.0], dtype=np.float32),
|
| 69 |
+
],
|
| 70 |
+
axis=0,
|
| 71 |
+
)
|
| 72 |
+
return np.concatenate([right, left], axis=0)
|
| 73 |
|
| 74 |
|
| 75 |
+
def _scaled_bimanual_delta(delta_action: np.ndarray, scale: float) -> np.ndarray:
|
| 76 |
scaled = np.asarray(delta_action, dtype=np.float32).copy()
|
| 77 |
+
scaled[0:6] *= float(scale)
|
| 78 |
+
scaled[7:13] *= float(scale)
|
|
|
|
| 79 |
return scaled
|
| 80 |
|
| 81 |
|
| 82 |
def _step_bimanual_chunk(task: Any, obs: Any, delta_action: np.ndarray) -> tuple[Any, float, bool, int, int]:
|
| 83 |
+
last_error: Exception | None = None
|
| 84 |
+
for scale in (1.0, 0.5, 0.25, 0.1):
|
| 85 |
+
try:
|
| 86 |
+
env_action = absolute_action_from_delta(obs, _scaled_bimanual_delta(delta_action, scale), ignore_collisions=True)
|
| 87 |
+
next_obs, reward, done = task.step(env_action)
|
| 88 |
+
recovered_steps = 1 if scale < 1.0 else 0
|
| 89 |
+
return next_obs, float(reward), bool(done), recovered_steps, 0
|
| 90 |
+
except Exception as exc: # pragma: no cover - live RLBench failure path
|
| 91 |
+
last_error = exc
|
| 92 |
+
try:
|
| 93 |
+
next_obs, reward, done = task.step(_noop_bimanual_action(obs))
|
| 94 |
+
return next_obs, float(reward), bool(done), 0, 1
|
| 95 |
+
except Exception as exc: # pragma: no cover - live RLBench failure path
|
| 96 |
+
last_error = exc
|
| 97 |
+
if last_error is not None:
|
| 98 |
+
raise last_error
|
| 99 |
+
raise RuntimeError("Failed to step bimanual action for unknown reasons.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 100 |
|
| 101 |
|
| 102 |
def main() -> None:
|
|
|
|
| 164 |
for task_name in args.tasks:
|
| 165 |
task_successes: list[float] = []
|
| 166 |
task_returns: list[float] = []
|
| 167 |
+
env: Environment | None = None
|
| 168 |
try:
|
| 169 |
+
task_class = resolve_task_class(task_name)
|
| 170 |
+
obs_config = build_obs_config(list(camera_spec.upstream_cameras), args.resolution)
|
| 171 |
+
action_mode = BimanualMoveArmThenGripper(
|
| 172 |
+
BimanualEndEffectorPoseViaPlanning(absolute_mode=True, frame="world", collision_checking=False),
|
| 173 |
+
BimanualDiscrete(),
|
|
|
|
|
|
|
|
|
|
|
|
|
| 174 |
)
|
| 175 |
+
env = Environment(
|
| 176 |
action_mode=action_mode,
|
| 177 |
obs_config=obs_config,
|
| 178 |
headless=args.headless,
|
| 179 |
+
robot_setup="dual_panda",
|
|
|
|
| 180 |
)
|
| 181 |
env.launch()
|
| 182 |
task = env.get_task(task_class)
|
code/reveal_vla_bimanual/models/backbones.py
CHANGED
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
| 2 |
|
| 3 |
from dataclasses import dataclass
|
| 4 |
import math
|
|
|
|
| 5 |
from typing import Sequence
|
| 6 |
|
| 7 |
import torch
|
|
@@ -48,12 +49,38 @@ class FrozenVLBackbone(nn.Module):
|
|
| 48 |
else:
|
| 49 |
from transformers import AutoTokenizer, CLIPModel
|
| 50 |
|
| 51 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 52 |
self.vision_model = clip_model.vision_model
|
| 53 |
self.text_model = clip_model.text_model
|
| 54 |
self.visual_projection = clip_model.visual_projection
|
| 55 |
self.text_projection = clip_model.text_projection
|
| 56 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 57 |
self.hidden_dim = clip_model.config.projection_dim
|
| 58 |
if config.gradient_checkpointing:
|
| 59 |
if hasattr(self.vision_model, "gradient_checkpointing_enable"):
|
|
|
|
| 2 |
|
| 3 |
from dataclasses import dataclass
|
| 4 |
import math
|
| 5 |
+
from pathlib import Path
|
| 6 |
from typing import Sequence
|
| 7 |
|
| 8 |
import torch
|
|
|
|
| 49 |
else:
|
| 50 |
from transformers import AutoTokenizer, CLIPModel
|
| 51 |
|
| 52 |
+
local_model_source: str | None = None
|
| 53 |
+
if config.model_name == "openai/clip-vit-base-patch32":
|
| 54 |
+
cache_root = Path("/workspace/.cache/huggingface/hub/models--openai--clip-vit-base-patch32")
|
| 55 |
+
ref_path = cache_root / "refs" / "main"
|
| 56 |
+
if ref_path.exists():
|
| 57 |
+
snapshot_id = ref_path.read_text(encoding="utf-8").strip()
|
| 58 |
+
snapshot_dir = cache_root / "snapshots" / snapshot_id
|
| 59 |
+
if (snapshot_dir / "config.json").exists():
|
| 60 |
+
local_model_source = str(snapshot_dir)
|
| 61 |
+
clip_model = None
|
| 62 |
+
if local_model_source is not None:
|
| 63 |
+
try:
|
| 64 |
+
clip_model = CLIPModel.from_pretrained(
|
| 65 |
+
local_model_source,
|
| 66 |
+
use_safetensors=True,
|
| 67 |
+
local_files_only=True,
|
| 68 |
+
)
|
| 69 |
+
except OSError:
|
| 70 |
+
clip_model = None
|
| 71 |
+
if clip_model is None:
|
| 72 |
+
clip_model = CLIPModel.from_pretrained(config.model_name, use_safetensors=True)
|
| 73 |
self.vision_model = clip_model.vision_model
|
| 74 |
self.text_model = clip_model.text_model
|
| 75 |
self.visual_projection = clip_model.visual_projection
|
| 76 |
self.text_projection = clip_model.text_projection
|
| 77 |
+
if local_model_source is not None:
|
| 78 |
+
try:
|
| 79 |
+
self.tokenizer = AutoTokenizer.from_pretrained(local_model_source, local_files_only=True)
|
| 80 |
+
except OSError:
|
| 81 |
+
self.tokenizer = AutoTokenizer.from_pretrained(config.model_name)
|
| 82 |
+
else:
|
| 83 |
+
self.tokenizer = AutoTokenizer.from_pretrained(config.model_name)
|
| 84 |
self.hidden_dim = clip_model.config.projection_dim
|
| 85 |
if config.gradient_checkpointing:
|
| 86 |
if hasattr(self.vision_model, "gradient_checkpointing_enable"):
|
code/reveal_vla_bimanual/scripts/setup_env_a_rlbench.sh
CHANGED
|
@@ -58,10 +58,21 @@ run_in_env python -m pip install --force-reinstall --no-deps numpy==1.26.4 Pillo
|
|
| 58 |
run_in_env python -m pip install --no-deps moviepy==2.2.1 timeout-decorator==0.5.0 opencv-python==4.10.0.84 pyquaternion==0.9.9 click-prompt==0.5.1
|
| 59 |
run_in_env python -m pip install --no-deps poetry-core
|
| 60 |
run_in_env python -m pip install gymnasium==1.0.0a2 open3d==0.19.0 segment-anything==1.0 transforms3d==0.4.1 openai==0.28.1
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
if [[ -f "${PERACT_ROOT}/YARR/setup.py" ]]; then
|
| 66 |
YARR_ROOT="${PERACT_ROOT}/YARR"
|
| 67 |
fi
|
|
|
|
| 58 |
run_in_env python -m pip install --no-deps moviepy==2.2.1 timeout-decorator==0.5.0 opencv-python==4.10.0.84 pyquaternion==0.9.9 click-prompt==0.5.1
|
| 59 |
run_in_env python -m pip install --no-deps poetry-core
|
| 60 |
run_in_env python -m pip install gymnasium==1.0.0a2 open3d==0.19.0 segment-anything==1.0 transforms3d==0.4.1 openai==0.28.1
|
| 61 |
+
first_existing_dir() {
|
| 62 |
+
local candidate=""
|
| 63 |
+
for candidate in "$@"; do
|
| 64 |
+
if [[ -d "${candidate}" ]]; then
|
| 65 |
+
printf '%s\n' "${candidate}"
|
| 66 |
+
return 0
|
| 67 |
+
fi
|
| 68 |
+
done
|
| 69 |
+
printf '%s\n' "$1"
|
| 70 |
+
}
|
| 71 |
+
|
| 72 |
+
PERACT_ROOT="$(first_existing_dir "${ROOT_DIR}/third_party/peract2_bimanual_probe_20260324" "${ROOT_DIR}/third_party/peract_bimanual")"
|
| 73 |
+
YARR_ROOT="$(first_existing_dir "${ROOT_DIR}/third_party/YARR_peract2_20260324" "${ROOT_DIR}/third_party/YARR")"
|
| 74 |
+
PYREP_ROOT="$(first_existing_dir "${ROOT_DIR}/third_party/PyRep_peract2_20260324" "${ROOT_DIR}/third_party/PyRep")"
|
| 75 |
+
RLBENCH_ROOT="$(first_existing_dir "${ROOT_DIR}/third_party/RLBench_peract2_20260324" "${ROOT_DIR}/third_party/RLBench")"
|
| 76 |
if [[ -f "${PERACT_ROOT}/YARR/setup.py" ]]; then
|
| 77 |
YARR_ROOT="${PERACT_ROOT}/YARR"
|
| 78 |
fi
|
code/reveal_vla_bimanual/sim_rlbench/camera_spec.py
CHANGED
|
@@ -4,16 +4,29 @@ from dataclasses import dataclass
|
|
| 4 |
|
| 5 |
CANONICAL_TO_UPSTREAM_CAMERA = {
|
| 6 |
"front": "front",
|
| 7 |
-
"wrist_left": "
|
| 8 |
-
"wrist_right": "
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
}
|
| 10 |
-
UPSTREAM_TO_CANONICAL_CAMERA = {value: key for key, value in CANONICAL_TO_UPSTREAM_CAMERA.items()}
|
| 11 |
|
| 12 |
|
| 13 |
def canonical_to_upstream_camera(camera_name: str) -> str:
|
| 14 |
return CANONICAL_TO_UPSTREAM_CAMERA.get(camera_name, camera_name)
|
| 15 |
|
| 16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
def upstream_to_canonical_camera(camera_name: str) -> str:
|
| 18 |
return UPSTREAM_TO_CANONICAL_CAMERA.get(camera_name, camera_name)
|
| 19 |
|
|
@@ -33,7 +46,7 @@ class RLBenchThreeCameraSpec:
|
|
| 33 |
|
| 34 |
@property
|
| 35 |
def upstream_cameras(self) -> tuple[str, str, str]:
|
| 36 |
-
return tuple(
|
| 37 |
|
| 38 |
def hydra_overrides(self, prefix: str = "rlbench") -> list[str]:
|
| 39 |
camera_list = ",".join(self.upstream_cameras)
|
|
|
|
| 4 |
|
| 5 |
CANONICAL_TO_UPSTREAM_CAMERA = {
|
| 6 |
"front": "front",
|
| 7 |
+
"wrist_left": "wrist_left",
|
| 8 |
+
"wrist_right": "wrist_right",
|
| 9 |
+
}
|
| 10 |
+
CANONICAL_CAMERA_ALIASES = {
|
| 11 |
+
"front": ("front",),
|
| 12 |
+
"wrist_left": ("wrist_left", "wrist2"),
|
| 13 |
+
"wrist_right": ("wrist_right", "wrist"),
|
| 14 |
+
}
|
| 15 |
+
UPSTREAM_TO_CANONICAL_CAMERA = {
|
| 16 |
+
alias: camera_name
|
| 17 |
+
for camera_name, aliases in CANONICAL_CAMERA_ALIASES.items()
|
| 18 |
+
for alias in aliases
|
| 19 |
}
|
|
|
|
| 20 |
|
| 21 |
|
| 22 |
def canonical_to_upstream_camera(camera_name: str) -> str:
|
| 23 |
return CANONICAL_TO_UPSTREAM_CAMERA.get(camera_name, camera_name)
|
| 24 |
|
| 25 |
|
| 26 |
+
def camera_aliases(camera_name: str) -> tuple[str, ...]:
|
| 27 |
+
return CANONICAL_CAMERA_ALIASES.get(camera_name, (camera_name,))
|
| 28 |
+
|
| 29 |
+
|
| 30 |
def upstream_to_canonical_camera(camera_name: str) -> str:
|
| 31 |
return UPSTREAM_TO_CANONICAL_CAMERA.get(camera_name, camera_name)
|
| 32 |
|
|
|
|
| 46 |
|
| 47 |
@property
|
| 48 |
def upstream_cameras(self) -> tuple[str, str, str]:
|
| 49 |
+
return tuple(canonical_to_upstream_camera(camera) for camera in self.cameras) # type: ignore[return-value]
|
| 50 |
|
| 51 |
def hydra_overrides(self, prefix: str = "rlbench") -> list[str]:
|
| 52 |
camera_list = ",".join(self.upstream_cameras)
|
code/reveal_vla_bimanual/sim_rlbench/dataset.py
CHANGED
|
@@ -10,7 +10,7 @@ import torch
|
|
| 10 |
from PIL import Image
|
| 11 |
from torch.utils.data import Dataset
|
| 12 |
|
| 13 |
-
from sim_rlbench.camera_spec import canonical_to_upstream_camera
|
| 14 |
|
| 15 |
|
| 16 |
THREE_CAMERAS: tuple[str, str, str] = ("front", "wrist_left", "wrist_right")
|
|
@@ -27,18 +27,12 @@ def _clip_vector_norm(vector: Sequence[float], max_norm: float) -> np.ndarray:
|
|
| 27 |
|
| 28 |
|
| 29 |
def _camera_value(obs: Any, camera_name: str, suffix: str) -> Any:
|
| 30 |
-
|
| 31 |
-
|
| 32 |
-
f"{
|
| 33 |
-
f"{camera_name}_{suffix}",
|
| 34 |
-
]
|
| 35 |
if suffix == "point_cloud":
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
f"{upstream_name}_pointcloud",
|
| 39 |
-
f"{camera_name}_pointcloud",
|
| 40 |
-
]
|
| 41 |
-
)
|
| 42 |
for key in candidate_keys:
|
| 43 |
if hasattr(obs, key):
|
| 44 |
return getattr(obs, key)
|
|
@@ -338,10 +332,16 @@ class RLBenchOfflineChunkDataset(Dataset[dict[str, Any]]):
|
|
| 338 |
def _load_rgb_stack(self, episode_dir: Path, step_index: int) -> torch.Tensor:
|
| 339 |
frames: list[np.ndarray] = []
|
| 340 |
for camera_name in self.cameras:
|
| 341 |
-
image_path =
|
| 342 |
-
|
| 343 |
-
|
| 344 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 345 |
image = Image.open(image_path).convert("RGB")
|
| 346 |
if image.size != (self.resolution, self.resolution):
|
| 347 |
image = image.resize((self.resolution, self.resolution), Image.Resampling.BILINEAR)
|
|
|
|
| 10 |
from PIL import Image
|
| 11 |
from torch.utils.data import Dataset
|
| 12 |
|
| 13 |
+
from sim_rlbench.camera_spec import camera_aliases, canonical_to_upstream_camera
|
| 14 |
|
| 15 |
|
| 16 |
THREE_CAMERAS: tuple[str, str, str] = ("front", "wrist_left", "wrist_right")
|
|
|
|
| 27 |
|
| 28 |
|
| 29 |
def _camera_value(obs: Any, camera_name: str, suffix: str) -> Any:
|
| 30 |
+
candidate_keys: list[str] = []
|
| 31 |
+
for alias in camera_aliases(camera_name):
|
| 32 |
+
candidate_keys.append(f"{alias}_{suffix}")
|
|
|
|
|
|
|
| 33 |
if suffix == "point_cloud":
|
| 34 |
+
for alias in camera_aliases(camera_name):
|
| 35 |
+
candidate_keys.append(f"{alias}_pointcloud")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
for key in candidate_keys:
|
| 37 |
if hasattr(obs, key):
|
| 38 |
return getattr(obs, key)
|
|
|
|
| 332 |
def _load_rgb_stack(self, episode_dir: Path, step_index: int) -> torch.Tensor:
|
| 333 |
frames: list[np.ndarray] = []
|
| 334 |
for camera_name in self.cameras:
|
| 335 |
+
image_path = None
|
| 336 |
+
for camera_alias in camera_aliases(camera_name):
|
| 337 |
+
candidate = episode_dir / f"{camera_alias}_rgb" / f"rgb_{step_index:04d}.png"
|
| 338 |
+
if candidate.exists():
|
| 339 |
+
image_path = candidate
|
| 340 |
+
break
|
| 341 |
+
if image_path is None:
|
| 342 |
+
raise FileNotFoundError(
|
| 343 |
+
f"Could not locate RGB frame for camera '{camera_name}' step {step_index} in {episode_dir}"
|
| 344 |
+
)
|
| 345 |
image = Image.open(image_path).convert("RGB")
|
| 346 |
if image.size != (self.resolution, self.resolution):
|
| 347 |
image = image.resize((self.resolution, self.resolution), Image.Resampling.BILINEAR)
|
code/reveal_vla_bimanual/sim_rlbench/generate_smoke_dataset.py
CHANGED
|
@@ -7,10 +7,9 @@ from pathlib import Path
|
|
| 7 |
|
| 8 |
import numpy as np
|
| 9 |
from PIL import Image
|
| 10 |
-
from
|
| 11 |
-
from rlbench.action_modes.
|
| 12 |
-
from rlbench.action_modes.
|
| 13 |
-
from rlbench.action_modes.gripper_action_modes import Discrete2Robots
|
| 14 |
from rlbench.backend.const import (
|
| 15 |
EPISODE_FOLDER,
|
| 16 |
EPISODES_FOLDER,
|
|
@@ -19,15 +18,15 @@ from rlbench.backend.const import (
|
|
| 19 |
VARIATION_NUMBER,
|
| 20 |
VARIATIONS_ALL_FOLDER,
|
| 21 |
)
|
| 22 |
-
from rlbench.
|
| 23 |
-
from rlbench.environments_two_robots import Environment2Robots
|
| 24 |
|
| 25 |
-
from sim_rlbench.camera_spec import
|
|
|
|
|
|
|
| 26 |
|
| 27 |
|
| 28 |
def _camera_payload(obs: object, camera_name: str, suffix: str):
|
| 29 |
-
|
| 30 |
-
for key in (f"{upstream_name}_{suffix}", f"{camera_name}_{suffix}"):
|
| 31 |
if hasattr(obs, key):
|
| 32 |
return getattr(obs, key)
|
| 33 |
return None
|
|
@@ -70,22 +69,17 @@ def main() -> None:
|
|
| 70 |
args = parser.parse_args()
|
| 71 |
|
| 72 |
spec = default_three_camera_spec(args.resolution)
|
| 73 |
-
obs_config =
|
| 74 |
-
list(spec.upstream_cameras),
|
| 75 |
-
[args.resolution, args.resolution],
|
| 76 |
-
"PERACT_BC",
|
| 77 |
-
)
|
| 78 |
|
| 79 |
-
task_class =
|
| 80 |
-
env =
|
| 81 |
-
action_mode=
|
| 82 |
-
|
| 83 |
-
|
| 84 |
),
|
| 85 |
obs_config=obs_config,
|
| 86 |
headless=True,
|
| 87 |
-
robot_setup="
|
| 88 |
-
task_name=task_class.__name__,
|
| 89 |
)
|
| 90 |
output_root = Path(args.output_root)
|
| 91 |
episodes_root = output_root / args.task / VARIATIONS_ALL_FOLDER / EPISODES_FOLDER
|
|
|
|
| 7 |
|
| 8 |
import numpy as np
|
| 9 |
from PIL import Image
|
| 10 |
+
from rlbench.action_modes.action_mode import BimanualMoveArmThenGripper
|
| 11 |
+
from rlbench.action_modes.arm_action_modes import BimanualEndEffectorPoseViaPlanning
|
| 12 |
+
from rlbench.action_modes.gripper_action_modes import BimanualDiscrete
|
|
|
|
| 13 |
from rlbench.backend.const import (
|
| 14 |
EPISODE_FOLDER,
|
| 15 |
EPISODES_FOLDER,
|
|
|
|
| 18 |
VARIATION_NUMBER,
|
| 19 |
VARIATIONS_ALL_FOLDER,
|
| 20 |
)
|
| 21 |
+
from rlbench.environment import Environment
|
|
|
|
| 22 |
|
| 23 |
+
from sim_rlbench.camera_spec import camera_aliases, default_three_camera_spec
|
| 24 |
+
from sim_rlbench.obs_config import build_obs_config
|
| 25 |
+
from sim_rlbench.task_resolver import resolve_task_class
|
| 26 |
|
| 27 |
|
| 28 |
def _camera_payload(obs: object, camera_name: str, suffix: str):
|
| 29 |
+
for key in [f"{alias}_{suffix}" for alias in camera_aliases(camera_name)]:
|
|
|
|
| 30 |
if hasattr(obs, key):
|
| 31 |
return getattr(obs, key)
|
| 32 |
return None
|
|
|
|
| 69 |
args = parser.parse_args()
|
| 70 |
|
| 71 |
spec = default_three_camera_spec(args.resolution)
|
| 72 |
+
obs_config = build_obs_config(list(spec.upstream_cameras), args.resolution)
|
|
|
|
|
|
|
|
|
|
|
|
|
| 73 |
|
| 74 |
+
task_class = resolve_task_class(args.task)
|
| 75 |
+
env = Environment(
|
| 76 |
+
action_mode=BimanualMoveArmThenGripper(
|
| 77 |
+
BimanualEndEffectorPoseViaPlanning(absolute_mode=True, frame="world", collision_checking=False),
|
| 78 |
+
BimanualDiscrete(),
|
| 79 |
),
|
| 80 |
obs_config=obs_config,
|
| 81 |
headless=True,
|
| 82 |
+
robot_setup="dual_panda",
|
|
|
|
| 83 |
)
|
| 84 |
output_root = Path(args.output_root)
|
| 85 |
episodes_root = output_root / args.task / VARIATIONS_ALL_FOLDER / EPISODES_FOLDER
|
code/reveal_vla_bimanual/sim_rlbench/launch_smoke.py
CHANGED
|
@@ -5,73 +5,88 @@ import json
|
|
| 5 |
import os
|
| 6 |
|
| 7 |
import numpy as np
|
| 8 |
-
from
|
| 9 |
-
from rlbench.action_modes.
|
| 10 |
-
from rlbench.action_modes.
|
| 11 |
-
from rlbench.
|
| 12 |
-
from rlbench.backend.utils import task_file_to_task_class
|
| 13 |
-
from rlbench.environments_two_robots import Environment2Robots
|
| 14 |
|
| 15 |
from sim_rlbench.camera_spec import default_three_camera_spec
|
|
|
|
|
|
|
| 16 |
|
| 17 |
|
| 18 |
-
def
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
|
| 29 |
|
| 30 |
def main() -> None:
|
| 31 |
parser = argparse.ArgumentParser()
|
| 32 |
-
parser.add_argument("--task", default="
|
| 33 |
parser.add_argument("--resolution", type=int, default=224)
|
| 34 |
parser.add_argument("--display", default=None)
|
| 35 |
parser.add_argument("--headless", action="store_true", default=True)
|
| 36 |
parser.add_argument("--visible", action="store_true")
|
| 37 |
-
parser.add_argument("--arm", choices=("right", "left"), default="right")
|
| 38 |
args = parser.parse_args()
|
| 39 |
|
| 40 |
headless = args.headless and not args.visible
|
| 41 |
spec = default_three_camera_spec(args.resolution)
|
| 42 |
-
task_cls =
|
| 43 |
-
obs_config =
|
| 44 |
-
action_mode =
|
| 45 |
-
|
| 46 |
-
|
| 47 |
)
|
| 48 |
-
env =
|
| 49 |
action_mode=action_mode,
|
| 50 |
obs_config=obs_config,
|
| 51 |
headless=headless,
|
| 52 |
-
robot_setup="
|
| 53 |
-
task_name=task_cls.__name__,
|
| 54 |
)
|
| 55 |
|
| 56 |
try:
|
| 57 |
env.launch()
|
| 58 |
task = env.get_task(task_cls)
|
| 59 |
descriptions, obs = task.reset()
|
| 60 |
-
next_obs, reward, done = task.step(
|
| 61 |
payload = {
|
| 62 |
"display": args.display or os.environ.get("DISPLAY"),
|
| 63 |
"headless": headless,
|
| 64 |
"task": task_cls.__name__,
|
| 65 |
"description": descriptions[0] if descriptions else "",
|
| 66 |
-
"front_rgb_shape":
|
| 67 |
-
"
|
| 68 |
-
"
|
| 69 |
-
"right_pose_shape":
|
| 70 |
-
"left_pose_shape":
|
| 71 |
-
"
|
| 72 |
"reward": float(reward),
|
| 73 |
"done": bool(done),
|
| 74 |
-
"front_rgb_shape_after_step":
|
| 75 |
}
|
| 76 |
print(json.dumps(payload, indent=2))
|
| 77 |
finally:
|
|
|
|
| 5 |
import os
|
| 6 |
|
| 7 |
import numpy as np
|
| 8 |
+
from rlbench.action_modes.action_mode import BimanualMoveArmThenGripper
|
| 9 |
+
from rlbench.action_modes.arm_action_modes import BimanualEndEffectorPoseViaPlanning
|
| 10 |
+
from rlbench.action_modes.gripper_action_modes import BimanualDiscrete
|
| 11 |
+
from rlbench.environment import Environment
|
|
|
|
|
|
|
| 12 |
|
| 13 |
from sim_rlbench.camera_spec import default_three_camera_spec
|
| 14 |
+
from sim_rlbench.obs_config import build_obs_config
|
| 15 |
+
from sim_rlbench.task_resolver import resolve_task_class
|
| 16 |
|
| 17 |
|
| 18 |
+
def _camera_shape(obs: object, camera_name: str):
|
| 19 |
+
perception_data = getattr(obs, "perception_data", None)
|
| 20 |
+
if isinstance(perception_data, dict):
|
| 21 |
+
value = perception_data.get(f"{camera_name}_rgb")
|
| 22 |
+
if value is not None:
|
| 23 |
+
return list(np.asarray(value).shape)
|
| 24 |
+
return None
|
| 25 |
+
|
| 26 |
+
|
| 27 |
+
def _noop_bimanual_action(obs: object) -> np.ndarray:
|
| 28 |
+
right_obs = getattr(obs, "right", None)
|
| 29 |
+
left_obs = getattr(obs, "left", None)
|
| 30 |
+
right = np.concatenate(
|
| 31 |
+
[
|
| 32 |
+
np.asarray(right_obs.gripper_pose, dtype=np.float32),
|
| 33 |
+
np.array([float(right_obs.gripper_open), 1.0], dtype=np.float32),
|
| 34 |
+
],
|
| 35 |
+
axis=0,
|
| 36 |
+
)
|
| 37 |
+
left = np.concatenate(
|
| 38 |
+
[
|
| 39 |
+
np.asarray(left_obs.gripper_pose, dtype=np.float32),
|
| 40 |
+
np.array([float(left_obs.gripper_open), 1.0], dtype=np.float32),
|
| 41 |
+
],
|
| 42 |
+
axis=0,
|
| 43 |
+
)
|
| 44 |
+
return np.concatenate([right, left], axis=0)
|
| 45 |
|
| 46 |
|
| 47 |
def main() -> None:
|
| 48 |
parser = argparse.ArgumentParser()
|
| 49 |
+
parser.add_argument("--task", default="bimanual_push_box")
|
| 50 |
parser.add_argument("--resolution", type=int, default=224)
|
| 51 |
parser.add_argument("--display", default=None)
|
| 52 |
parser.add_argument("--headless", action="store_true", default=True)
|
| 53 |
parser.add_argument("--visible", action="store_true")
|
|
|
|
| 54 |
args = parser.parse_args()
|
| 55 |
|
| 56 |
headless = args.headless and not args.visible
|
| 57 |
spec = default_three_camera_spec(args.resolution)
|
| 58 |
+
task_cls = resolve_task_class(args.task)
|
| 59 |
+
obs_config = build_obs_config(list(spec.upstream_cameras), args.resolution)
|
| 60 |
+
action_mode = BimanualMoveArmThenGripper(
|
| 61 |
+
BimanualEndEffectorPoseViaPlanning(absolute_mode=True, frame="world", collision_checking=False),
|
| 62 |
+
BimanualDiscrete(),
|
| 63 |
)
|
| 64 |
+
env = Environment(
|
| 65 |
action_mode=action_mode,
|
| 66 |
obs_config=obs_config,
|
| 67 |
headless=headless,
|
| 68 |
+
robot_setup="dual_panda",
|
|
|
|
| 69 |
)
|
| 70 |
|
| 71 |
try:
|
| 72 |
env.launch()
|
| 73 |
task = env.get_task(task_cls)
|
| 74 |
descriptions, obs = task.reset()
|
| 75 |
+
next_obs, reward, done = task.step(_noop_bimanual_action(obs))
|
| 76 |
payload = {
|
| 77 |
"display": args.display or os.environ.get("DISPLAY"),
|
| 78 |
"headless": headless,
|
| 79 |
"task": task_cls.__name__,
|
| 80 |
"description": descriptions[0] if descriptions else "",
|
| 81 |
+
"front_rgb_shape": _camera_shape(obs, "front"),
|
| 82 |
+
"wrist_left_rgb_shape": _camera_shape(obs, "wrist_left"),
|
| 83 |
+
"wrist_right_rgb_shape": _camera_shape(obs, "wrist_right"),
|
| 84 |
+
"right_pose_shape": list(obs.right.gripper_pose.shape),
|
| 85 |
+
"left_pose_shape": list(obs.left.gripper_pose.shape),
|
| 86 |
+
"stepped_mode": "bimanual_noop",
|
| 87 |
"reward": float(reward),
|
| 88 |
"done": bool(done),
|
| 89 |
+
"front_rgb_shape_after_step": _camera_shape(next_obs, "front"),
|
| 90 |
}
|
| 91 |
print(json.dumps(payload, indent=2))
|
| 92 |
finally:
|
code/reveal_vla_bimanual/sim_rlbench/obs_adapter.py
CHANGED
|
@@ -5,7 +5,7 @@ from typing import Any
|
|
| 5 |
|
| 6 |
import numpy as np
|
| 7 |
|
| 8 |
-
from sim_rlbench.camera_spec import RLBenchThreeCameraSpec,
|
| 9 |
|
| 10 |
|
| 11 |
@dataclass
|
|
@@ -31,50 +31,44 @@ class CanonicalBimanualObservation:
|
|
| 31 |
|
| 32 |
|
| 33 |
def _camera_rgb(obs: Any, camera_name: str) -> np.ndarray:
|
| 34 |
-
|
| 35 |
-
for key in
|
| 36 |
if hasattr(obs, key):
|
| 37 |
return np.asarray(getattr(obs, key), dtype=np.uint8)
|
| 38 |
perception_data = getattr(obs, "perception_data", None)
|
| 39 |
if isinstance(perception_data, dict):
|
| 40 |
-
for key in
|
| 41 |
if key in perception_data:
|
| 42 |
return np.asarray(perception_data[key], dtype=np.uint8)
|
| 43 |
raise KeyError(f"Observation does not expose RGB for camera '{camera_name}'")
|
| 44 |
|
| 45 |
|
| 46 |
def _camera_point_cloud(obs: Any, camera_name: str) -> np.ndarray:
|
| 47 |
-
|
| 48 |
-
for
|
| 49 |
-
f"{
|
| 50 |
-
|
| 51 |
-
f"{camera_name}_point_cloud",
|
| 52 |
-
f"{camera_name}_pointcloud",
|
| 53 |
-
):
|
| 54 |
if hasattr(obs, key):
|
| 55 |
return np.asarray(getattr(obs, key), dtype=np.float32)
|
| 56 |
perception_data = getattr(obs, "perception_data", None)
|
| 57 |
if isinstance(perception_data, dict):
|
| 58 |
-
for key in
|
| 59 |
-
f"{upstream_name}_point_cloud",
|
| 60 |
-
f"{upstream_name}_pointcloud",
|
| 61 |
-
f"{camera_name}_point_cloud",
|
| 62 |
-
f"{camera_name}_pointcloud",
|
| 63 |
-
):
|
| 64 |
if key in perception_data:
|
| 65 |
return np.asarray(perception_data[key], dtype=np.float32)
|
| 66 |
raise KeyError(f"Observation does not expose point clouds for camera '{camera_name}'")
|
| 67 |
|
| 68 |
|
| 69 |
def _camera_misc(obs: Any, camera_name: str, field_name: str) -> np.ndarray:
|
| 70 |
-
upstream_name = canonical_to_upstream_camera(camera_name)
|
| 71 |
misc = getattr(obs, "misc", {})
|
| 72 |
-
|
| 73 |
-
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
|
|
|
|
|
|
|
|
|
|
| 78 |
if key in misc:
|
| 79 |
return np.asarray(misc[key], dtype=np.float32)
|
| 80 |
raise KeyError(f"Observation misc does not expose {field_name} for camera '{camera_name}'")
|
|
|
|
| 5 |
|
| 6 |
import numpy as np
|
| 7 |
|
| 8 |
+
from sim_rlbench.camera_spec import RLBenchThreeCameraSpec, camera_aliases
|
| 9 |
|
| 10 |
|
| 11 |
@dataclass
|
|
|
|
| 31 |
|
| 32 |
|
| 33 |
def _camera_rgb(obs: Any, camera_name: str) -> np.ndarray:
|
| 34 |
+
candidate_keys = [f"{alias}_rgb" for alias in camera_aliases(camera_name)]
|
| 35 |
+
for key in candidate_keys:
|
| 36 |
if hasattr(obs, key):
|
| 37 |
return np.asarray(getattr(obs, key), dtype=np.uint8)
|
| 38 |
perception_data = getattr(obs, "perception_data", None)
|
| 39 |
if isinstance(perception_data, dict):
|
| 40 |
+
for key in candidate_keys:
|
| 41 |
if key in perception_data:
|
| 42 |
return np.asarray(perception_data[key], dtype=np.uint8)
|
| 43 |
raise KeyError(f"Observation does not expose RGB for camera '{camera_name}'")
|
| 44 |
|
| 45 |
|
| 46 |
def _camera_point_cloud(obs: Any, camera_name: str) -> np.ndarray:
|
| 47 |
+
candidate_keys = []
|
| 48 |
+
for alias in camera_aliases(camera_name):
|
| 49 |
+
candidate_keys.extend([f"{alias}_point_cloud", f"{alias}_pointcloud"])
|
| 50 |
+
for key in candidate_keys:
|
|
|
|
|
|
|
|
|
|
| 51 |
if hasattr(obs, key):
|
| 52 |
return np.asarray(getattr(obs, key), dtype=np.float32)
|
| 53 |
perception_data = getattr(obs, "perception_data", None)
|
| 54 |
if isinstance(perception_data, dict):
|
| 55 |
+
for key in candidate_keys:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 56 |
if key in perception_data:
|
| 57 |
return np.asarray(perception_data[key], dtype=np.float32)
|
| 58 |
raise KeyError(f"Observation does not expose point clouds for camera '{camera_name}'")
|
| 59 |
|
| 60 |
|
| 61 |
def _camera_misc(obs: Any, camera_name: str, field_name: str) -> np.ndarray:
|
|
|
|
| 62 |
misc = getattr(obs, "misc", {})
|
| 63 |
+
candidate_keys = []
|
| 64 |
+
for alias in camera_aliases(camera_name):
|
| 65 |
+
candidate_keys.extend(
|
| 66 |
+
[
|
| 67 |
+
f"{alias}_camera_{field_name}",
|
| 68 |
+
f"{alias}_{field_name}",
|
| 69 |
+
]
|
| 70 |
+
)
|
| 71 |
+
for key in candidate_keys:
|
| 72 |
if key in misc:
|
| 73 |
return np.asarray(misc[key], dtype=np.float32)
|
| 74 |
raise KeyError(f"Observation misc does not expose {field_name} for camera '{camera_name}'")
|
code/reveal_vla_bimanual/sim_rlbench/obs_config.py
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from rlbench.observation_config import CameraConfig, ObservationConfig
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
def build_obs_config(
|
| 7 |
+
cameras: list[str],
|
| 8 |
+
resolution: int,
|
| 9 |
+
*,
|
| 10 |
+
rgb: bool = True,
|
| 11 |
+
depth: bool = False,
|
| 12 |
+
point_cloud: bool = False,
|
| 13 |
+
mask: bool = False,
|
| 14 |
+
) -> ObservationConfig:
|
| 15 |
+
camera_configs = {
|
| 16 |
+
camera: CameraConfig(
|
| 17 |
+
rgb=rgb,
|
| 18 |
+
depth=depth,
|
| 19 |
+
point_cloud=point_cloud,
|
| 20 |
+
mask=mask,
|
| 21 |
+
image_size=(resolution, resolution),
|
| 22 |
+
)
|
| 23 |
+
for camera in cameras
|
| 24 |
+
}
|
| 25 |
+
return ObservationConfig(
|
| 26 |
+
camera_configs=camera_configs,
|
| 27 |
+
joint_velocities=True,
|
| 28 |
+
joint_positions=True,
|
| 29 |
+
joint_forces=True,
|
| 30 |
+
gripper_open=True,
|
| 31 |
+
gripper_pose=True,
|
| 32 |
+
gripper_matrix=False,
|
| 33 |
+
gripper_joint_positions=False,
|
| 34 |
+
gripper_touch_forces=False,
|
| 35 |
+
wrist_camera_matrix=False,
|
| 36 |
+
record_gripper_closing=False,
|
| 37 |
+
task_low_dim_state=True,
|
| 38 |
+
record_ignore_collisions=True,
|
| 39 |
+
robot_name="dual_panda",
|
| 40 |
+
)
|
code/reveal_vla_bimanual/sim_rlbench/peract2_runner.py
CHANGED
|
@@ -40,7 +40,7 @@ def resolve_upstream_root(upstream_root: Path) -> Path:
|
|
| 40 |
|
| 41 |
@dataclass
|
| 42 |
class BenchmarkRunSpec:
|
| 43 |
-
upstream_root: Path = Path("/workspace/third_party/
|
| 44 |
demo_path: Path = Path("/workspace/data/rlbench2")
|
| 45 |
replay_path: Path = Path("/workspace/replays/rlbench2")
|
| 46 |
logdir: Path = Path("/workspace/logs/rlbench2")
|
|
|
|
| 40 |
|
| 41 |
@dataclass
|
| 42 |
class BenchmarkRunSpec:
|
| 43 |
+
upstream_root: Path = Path("/workspace/third_party/peract2_bimanual_probe_20260324")
|
| 44 |
demo_path: Path = Path("/workspace/data/rlbench2")
|
| 45 |
replay_path: Path = Path("/workspace/replays/rlbench2")
|
| 46 |
logdir: Path = Path("/workspace/logs/rlbench2")
|
code/reveal_vla_bimanual/sim_rlbench/smoke_test.py
CHANGED
|
@@ -12,7 +12,7 @@ from sim_rlbench.peract2_runner import BenchmarkRunSpec, resolve_upstream_root
|
|
| 12 |
def main() -> None:
|
| 13 |
parser = argparse.ArgumentParser()
|
| 14 |
parser.add_argument("--demo-path", default="/workspace/data/rlbench2")
|
| 15 |
-
parser.add_argument("--upstream-root", default="/workspace/third_party/
|
| 16 |
parser.add_argument("--print-train-command", action="store_true")
|
| 17 |
args = parser.parse_args()
|
| 18 |
|
|
|
|
| 12 |
def main() -> None:
|
| 13 |
parser = argparse.ArgumentParser()
|
| 14 |
parser.add_argument("--demo-path", default="/workspace/data/rlbench2")
|
| 15 |
+
parser.add_argument("--upstream-root", default="/workspace/third_party/peract2_bimanual_probe_20260324")
|
| 16 |
parser.add_argument("--print-train-command", action="store_true")
|
| 17 |
args = parser.parse_args()
|
| 18 |
|
code/reveal_vla_bimanual/sim_rlbench/task_resolver.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from __future__ import annotations
|
| 2 |
+
|
| 3 |
+
from rlbench.backend.utils import task_file_to_task_class
|
| 4 |
+
|
| 5 |
+
|
| 6 |
+
def is_bimanual_task_name(task_name: str) -> bool:
|
| 7 |
+
return task_name.startswith("bimanual_")
|
| 8 |
+
|
| 9 |
+
|
| 10 |
+
def resolve_task_class(task_name: str):
|
| 11 |
+
return task_file_to_task_class(task_name, bimanual=is_bimanual_task_name(task_name))
|
environment/run_peract2_13_rollouts.sh
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
#!/usr/bin/env bash
|
| 2 |
+
set -euo pipefail
|
| 3 |
+
|
| 4 |
+
ROOT_DIR="${ROOT_DIR:-/workspace}"
|
| 5 |
+
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
| 6 |
+
BUNDLE_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
|
| 7 |
+
PROJECT_DIR="${PROJECT_DIR:-${ROOT_DIR}/reveal_vla_bimanual}"
|
| 8 |
+
MAMBA_BIN="${ROOT_DIR}/.tools/micromamba/bin/micromamba"
|
| 9 |
+
MAMBA_ROOT_PREFIX="${ROOT_DIR}/.micromamba"
|
| 10 |
+
ENV_PREFIX="${ROOT_DIR}/envs/rlbench"
|
| 11 |
+
DISPLAY_NUM="${DISPLAY_NUM:-99}"
|
| 12 |
+
DISPLAY=":${DISPLAY_NUM}"
|
| 13 |
+
COPPELIA_DIR="${COPPELIASIM_ROOT:-${ROOT_DIR}/assets/coppeliasim_v4_1_0}"
|
| 14 |
+
RUNTIME_DIR="${ROOT_DIR}/runtime"
|
| 15 |
+
CHECKPOINT="${CHECKPOINT:-${BUNDLE_ROOT}/artifacts/outputs/interaction_debug/proxy_interaction_state_clip_actionhist/checkpoint_best.pt}"
|
| 16 |
+
OUTPUT_ROOT="${OUTPUT_ROOT:-${BUNDLE_ROOT}/artifacts/outputs/interaction_debug}"
|
| 17 |
+
RUN_NAME_PREFIX="${RUN_NAME_PREFIX:-peract2_13_rollout}"
|
| 18 |
+
|
| 19 |
+
mkdir -p "${RUNTIME_DIR}"
|
| 20 |
+
chmod 700 "${RUNTIME_DIR}"
|
| 21 |
+
|
| 22 |
+
ensure_rlbench_display() {
|
| 23 |
+
if DISPLAY="${DISPLAY}" xdpyinfo >/dev/null 2>&1; then
|
| 24 |
+
return 0
|
| 25 |
+
fi
|
| 26 |
+
ROOT_DIR="${ROOT_DIR}" DISPLAY_NUM="${DISPLAY_NUM}" "${PROJECT_DIR}/scripts/start_rlbench_x.sh"
|
| 27 |
+
}
|
| 28 |
+
|
| 29 |
+
run_in_rlbench_env() {
|
| 30 |
+
local driver_version=""
|
| 31 |
+
local driver_branch=""
|
| 32 |
+
local shim_ld=""
|
| 33 |
+
if command -v nvidia-smi >/dev/null 2>&1; then
|
| 34 |
+
driver_version="$(nvidia-smi --query-gpu=driver_version --format=csv,noheader | head -n1 || true)"
|
| 35 |
+
driver_branch="${driver_version%%.*}"
|
| 36 |
+
if [[ -n "${driver_branch}" && -d "${ROOT_DIR}/system_shims/nvidia${driver_branch}/usr/lib/x86_64-linux-gnu" ]]; then
|
| 37 |
+
shim_ld="${ROOT_DIR}/system_shims/nvidia${driver_branch}/usr/lib/x86_64-linux-gnu"
|
| 38 |
+
fi
|
| 39 |
+
fi
|
| 40 |
+
env \
|
| 41 |
+
DISPLAY="${DISPLAY}" \
|
| 42 |
+
COPPELIASIM_ROOT="${COPPELIA_DIR}" \
|
| 43 |
+
XDG_RUNTIME_DIR="${RUNTIME_DIR}" \
|
| 44 |
+
LD_LIBRARY_PATH="${COPPELIA_DIR}${shim_ld:+:${shim_ld}}${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}" \
|
| 45 |
+
QT_QPA_PLATFORM_PLUGIN_PATH="${COPPELIA_DIR}" \
|
| 46 |
+
"${MAMBA_BIN}" run -r "${MAMBA_ROOT_PREFIX}" -p "${ENV_PREFIX}" "$@"
|
| 47 |
+
}
|
| 48 |
+
|
| 49 |
+
ensure_rlbench_display
|
| 50 |
+
|
| 51 |
+
run_in_rlbench_env python -m eval.run_peract2_task_sweep \
|
| 52 |
+
--checkpoint "${CHECKPOINT}" \
|
| 53 |
+
--output-root "${OUTPUT_ROOT}" \
|
| 54 |
+
--run-name-prefix "${RUN_NAME_PREFIX}" \
|
| 55 |
+
--headless \
|
| 56 |
+
--chunk-commit-steps 4 \
|
| 57 |
+
"$@"
|
environment/setup_same_machine.sh
CHANGED
|
@@ -8,6 +8,7 @@ BUNDLED_PROJECT_DIR="${BUNDLE_ROOT}/code/reveal_vla_bimanual"
|
|
| 8 |
PROJECT_DIR="${PROJECT_DIR:-${ROOT_DIR}/reveal_vla_bimanual}"
|
| 9 |
THIRD_PARTY_DIR="${ROOT_DIR}/third_party"
|
| 10 |
INSTALL_ENV_B="${INSTALL_ENV_B:-1}"
|
|
|
|
| 11 |
|
| 12 |
echo "Using ROOT_DIR=${ROOT_DIR}"
|
| 13 |
echo "Using BUNDLE_ROOT=${BUNDLE_ROOT}"
|
|
@@ -39,10 +40,16 @@ mkdir -p "${THIRD_PARTY_DIR}"
|
|
| 39 |
ensure_project_dir
|
| 40 |
|
| 41 |
echo "1/6 Sync pinned third-party repos"
|
| 42 |
-
sync_repo "${THIRD_PARTY_DIR}/
|
| 43 |
-
sync_repo "${THIRD_PARTY_DIR}/
|
| 44 |
-
sync_repo "${THIRD_PARTY_DIR}/
|
| 45 |
-
sync_repo "${THIRD_PARTY_DIR}/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
echo "2/6 Install or update Env A (RLBench / PerAct2)"
|
| 48 |
ROOT_DIR="${ROOT_DIR}" "${PROJECT_DIR}/scripts/setup_env_a_rlbench.sh"
|
|
@@ -67,6 +74,7 @@ echo " INSTALL_ISAACSIM=1 ${PROJECT_DIR}/scripts/setup_env_b_reveal.sh"
|
|
| 67 |
echo
|
| 68 |
echo "Recommended validation commands:"
|
| 69 |
echo " DISPLAY=:99 glxinfo -B"
|
| 70 |
-
echo " /workspace/.tools/micromamba/bin/micromamba run -r /workspace/.micromamba -p /workspace/envs/rlbench python -m sim_rlbench.launch_smoke --headless"
|
|
|
|
| 71 |
echo " /workspace/.tools/micromamba/bin/micromamba run -r /workspace/.micromamba -p /workspace/envs/rlbench python -m sim_reveal.isaac_smoke"
|
| 72 |
echo " ${BUNDLE_ROOT}/environment/validate_same_machine.sh"
|
|
|
|
| 8 |
PROJECT_DIR="${PROJECT_DIR:-${ROOT_DIR}/reveal_vla_bimanual}"
|
| 9 |
THIRD_PARTY_DIR="${ROOT_DIR}/third_party"
|
| 10 |
INSTALL_ENV_B="${INSTALL_ENV_B:-1}"
|
| 11 |
+
INSTALL_LEGACY_LAYOUT="${INSTALL_LEGACY_LAYOUT:-0}"
|
| 12 |
|
| 13 |
echo "Using ROOT_DIR=${ROOT_DIR}"
|
| 14 |
echo "Using BUNDLE_ROOT=${BUNDLE_ROOT}"
|
|
|
|
| 40 |
ensure_project_dir
|
| 41 |
|
| 42 |
echo "1/6 Sync pinned third-party repos"
|
| 43 |
+
sync_repo "${THIRD_PARTY_DIR}/peract2_bimanual_probe_20260324" "https://github.com/markusgrotz/peract_bimanual.git" "bb0232a6ba3fe116566e9568f0c7af980ed6703d"
|
| 44 |
+
sync_repo "${THIRD_PARTY_DIR}/RLBench_peract2_20260324" "https://github.com/markusgrotz/RLBench.git" "8af748c51287989294e00c9c670e3330a0e35ed5"
|
| 45 |
+
sync_repo "${THIRD_PARTY_DIR}/PyRep_peract2_20260324" "https://github.com/markusgrotz/PyRep.git" "b8bd1d7a3182adcd570d001649c0849047ebf197"
|
| 46 |
+
sync_repo "${THIRD_PARTY_DIR}/YARR_peract2_20260324" "https://github.com/markusgrotz/YARR.git" "6822ff78602c77878b27d4cfe759ce029c67bffb"
|
| 47 |
+
if [[ "${INSTALL_LEGACY_LAYOUT}" == "1" ]]; then
|
| 48 |
+
sync_repo "${THIRD_PARTY_DIR}/peract_bimanual" "https://github.com/markusgrotz/peract_bimanual.git" "1cc074b1730f52a7fd35d069d8c9099d18718bca"
|
| 49 |
+
sync_repo "${THIRD_PARTY_DIR}/RLBench" "https://github.com/markusgrotz/RLBench.git" "02720bba4c73fe02eb75df946b8791b806028a9d"
|
| 50 |
+
sync_repo "${THIRD_PARTY_DIR}/PyRep" "https://github.com/markusgrotz/PyRep.git" "b8bd1d7a3182adcd570d001649c0849047ebf197"
|
| 51 |
+
sync_repo "${THIRD_PARTY_DIR}/YARR" "https://github.com/markusgrotz/YARR.git" "6822ff78602c77878b27d4cfe759ce029c67bffb"
|
| 52 |
+
fi
|
| 53 |
|
| 54 |
echo "2/6 Install or update Env A (RLBench / PerAct2)"
|
| 55 |
ROOT_DIR="${ROOT_DIR}" "${PROJECT_DIR}/scripts/setup_env_a_rlbench.sh"
|
|
|
|
| 74 |
echo
|
| 75 |
echo "Recommended validation commands:"
|
| 76 |
echo " DISPLAY=:99 glxinfo -B"
|
| 77 |
+
echo " /workspace/.tools/micromamba/bin/micromamba run -r /workspace/.micromamba -p /workspace/envs/rlbench python -m sim_rlbench.launch_smoke --task bimanual_push_box --headless"
|
| 78 |
+
echo " ${BUNDLE_ROOT}/environment/run_peract2_13_rollouts.sh --episodes-per-task 1 --episode-length 20"
|
| 79 |
echo " /workspace/.tools/micromamba/bin/micromamba run -r /workspace/.micromamba -p /workspace/envs/rlbench python -m sim_reveal.isaac_smoke"
|
| 80 |
echo " ${BUNDLE_ROOT}/environment/validate_same_machine.sh"
|
environment/upstream_revisions.txt
CHANGED
|
@@ -1,11 +1,27 @@
|
|
| 1 |
-
/workspace/third_party/
|
| 2 |
repo_url=https://github.com/markusgrotz/peract_bimanual.git
|
| 3 |
commit=bb0232a6ba3fe116566e9568f0c7af980ed6703d
|
| 4 |
|
| 5 |
-
/workspace/third_party/
|
| 6 |
repo_url=https://github.com/markusgrotz/RLBench.git
|
| 7 |
commit=8af748c51287989294e00c9c670e3330a0e35ed5
|
| 8 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
/workspace/third_party/PyRep
|
| 10 |
repo_url=https://github.com/markusgrotz/PyRep.git
|
| 11 |
commit=b8bd1d7a3182adcd570d001649c0849047ebf197
|
|
|
|
| 1 |
+
/workspace/third_party/peract2_bimanual_probe_20260324
|
| 2 |
repo_url=https://github.com/markusgrotz/peract_bimanual.git
|
| 3 |
commit=bb0232a6ba3fe116566e9568f0c7af980ed6703d
|
| 4 |
|
| 5 |
+
/workspace/third_party/RLBench_peract2_20260324
|
| 6 |
repo_url=https://github.com/markusgrotz/RLBench.git
|
| 7 |
commit=8af748c51287989294e00c9c670e3330a0e35ed5
|
| 8 |
|
| 9 |
+
/workspace/third_party/PyRep_peract2_20260324
|
| 10 |
+
repo_url=https://github.com/markusgrotz/PyRep.git
|
| 11 |
+
commit=b8bd1d7a3182adcd570d001649c0849047ebf197
|
| 12 |
+
|
| 13 |
+
/workspace/third_party/YARR_peract2_20260324
|
| 14 |
+
repo_url=https://github.com/markusgrotz/YARR.git
|
| 15 |
+
commit=6822ff78602c77878b27d4cfe759ce029c67bffb
|
| 16 |
+
|
| 17 |
+
/workspace/third_party/peract_bimanual
|
| 18 |
+
repo_url=https://github.com/markusgrotz/peract_bimanual.git
|
| 19 |
+
commit=1cc074b1730f52a7fd35d069d8c9099d18718bca
|
| 20 |
+
|
| 21 |
+
/workspace/third_party/RLBench
|
| 22 |
+
repo_url=https://github.com/markusgrotz/RLBench.git
|
| 23 |
+
commit=02720bba4c73fe02eb75df946b8791b806028a9d
|
| 24 |
+
|
| 25 |
/workspace/third_party/PyRep
|
| 26 |
repo_url=https://github.com/markusgrotz/PyRep.git
|
| 27 |
commit=b8bd1d7a3182adcd570d001649c0849047ebf197
|
environment/validate_same_machine.sh
CHANGED
|
@@ -62,8 +62,8 @@ DISPLAY="${DISPLAY}" glxinfo -B
|
|
| 62 |
|
| 63 |
echo
|
| 64 |
echo "RLBench import smoke"
|
| 65 |
-
run_in_rlbench_env python -m sim_rlbench.smoke_test --print-train-command
|
| 66 |
|
| 67 |
echo
|
| 68 |
-
echo "RLBench launch smoke"
|
| 69 |
-
run_in_rlbench_env python -m sim_rlbench.launch_smoke --task
|
|
|
|
| 62 |
|
| 63 |
echo
|
| 64 |
echo "RLBench import smoke"
|
| 65 |
+
run_in_rlbench_env python -m sim_rlbench.smoke_test --print-train-command --upstream-root "${ROOT_DIR}/third_party/peract2_bimanual_probe_20260324"
|
| 66 |
|
| 67 |
echo
|
| 68 |
+
echo "RLBench launch smoke: bimanual_push_box"
|
| 69 |
+
run_in_rlbench_env python -m sim_rlbench.launch_smoke --task bimanual_push_box --resolution 128 --headless
|