Cube stacking: an integration example#
Cube stacking exercised the reusable G1 tools together: calibrated perception, qualified grasp candidates, CuRobo planning, continuous control, contact checks, recovery and recording. The task is useful here as evidence of that integration. A new research project need not reproduce cube pickup to use the control or recording infrastructure.
Physical demonstration#
This clip provides visible evidence of pickup, placement and release in one trial. It does not display the controller’s ownership state or recording completion. The matching bag/run ID has not yet been attached to the footage, so it is not used to infer a success rate or a verified software handback.
What another project can reuse#
Component exercised by the demo |
Transferable behavior |
Read the implementation chapter |
|---|---|---|
Control ownership |
Acquire from measured state, keep holding during slow work, verify handback |
|
Recording |
Preserve signals through success or fault cleanup; keep outcome distinct from completeness |
|
Perception and camera state |
Match target/profile and refresh observations after support loads change |
|
Grasp qualification |
Separate candidate proposals, supported access and achieved physical contact |
|
Planning |
Join the current command continuously and include checked recovery routes |
August 25 demo baseline#
Five retained August 25 runs span 15:06–15:17 Minnesota time and record source
commit d1b0103. The
published main
preserves that commit’s runtime code, tests, configuration and dependency pins.
The run metadata also flags a dirty worktree without identifying a runtime-code
change, so the recorded commit is a baseline rather than proof of every file’s
bytes during execution.
All five run records report completed episodes, supported returns and complete recording, with control retained between episodes. Those statuses do not supply an independently scored five-of-five success rate. The LeRobot export contains these five runs; it is separate from the older dataset shown in the viewer walkthrough.
September changes remain on their own experimental branch. The coordinator linked here is demo main; other chapters label the later
implementation they discuss.
Direct two-cube transfer#
The demonstration uses two 60 mm cubes with distinct marker ID ranges, 10–15 and 20–25. At clearance, the coordinator considers both source/destination assignments and both arms, then selects one complete pick/place route. Only one task arm moves at a time. A candidate must work at the grasp endpoint, placement endpoint and along the connecting transfer.
Intersecting endpoint-feasible pools rejected one 0/57 case in roughly 12 s, compared with an earlier eight-minute nested route search. This illustrates a useful planning decision: reject incompatible endpoints before spending time on full transfers. It is a measurement for that candidate set, not a general planner speed claim.
The stack route is planned completely at clearance. A separate single-cube experiment introduced a pregrasp camera-state correction; that behavior is explained in the state-estimation chapter and is not part of the demonstrated direct-stack route.
Failures that shaped the reusable tools#
Observation |
Change carried into the implementation |
|---|---|
The arm reached the intended pose but the physical close failed |
Use a fixed closing command and measured empty-close references; simulated achieved fingers can encode object motion |
A lift/replacement occurred but the run failed afterward |
Validate the complete return sequence, including |
A grasp attempt was rejected |
Permit a bounded retry only after the frozen recovery, a fresh scene and exclusion of the failed candidate |
An episode completed while the process retained control |
Record episode completion and final ownership handback as different events |
The recorded arm default reached 0.2 rad/s after physical commissioning. That setting and the cube-specific contact/clearance thresholds describe this configuration; they are not a ready-made operating envelope for another task.
Plan visualization and recorded outcomes#
Use this visualization to understand the geometric phases. Measured contact, physical placement and normal control release require the recorded hardware evidence described on this page; a rendered plan does not establish those outcomes.
Retained sessions keep control/resources between episodes. SPACE starts a new episode; Ctrl+C between episodes requests clean handback, while interruption inside an episode follows its fault/recovery handling. See recording for preserving those boundaries.
Follow the code#
Start with hardware_stack.py::run_stack.
Follow _find_direct_stack_plan for candidate/route selection and
_execute_pick_place for execution. The component chapters above explain the
interfaces those functions rely on; use the code index
for their pinned symbols.
Checks and evidence to inspect#
test_tabletop_workflow.py and test_stack_workflow.py (demo main) encode boundary, return and retry regressions. Inspect recorded close/retention evidence and cleanup outcome separately from task completion. The August runs above are the physical record; source tests alone cannot establish grasp success.