Skip to content

Add robot profile: laok/unitree-g1-arm-001 pick-and-carry (Tier 1) - #96

Open
daluoboda wants to merge 33 commits into
fabricfoundation:mainfrom
daluoboda:feat/unitree-g1-pick-and-carry-tier1
Open

Add robot profile: laok/unitree-g1-arm-001 pick-and-carry (Tier 1)#96
daluoboda wants to merge 33 commits into
fabricfoundation:mainfrom
daluoboda:feat/unitree-g1-pick-and-carry-tier1

Conversation

@daluoboda

Copy link
Copy Markdown

Unitree G1 — pick-and-carry (Tier 1)

Independent PR for the pick-and-carry Tier-1 task, stacked on #90 (loco / walking). This PR adds the pick_and_carry skill on top of the shared bridge/unitree-g1/ engine delivered by #90; merge #90 first, then this.

RoboPay acceptance (7 points)

  1. Fail-closed on invalid — unsigned/invalid x402 requests are rejected before actuation.
  2. ActionId-linked terminal result — every paid action returns its actionId and final metrics.
  3. Settle on success only — settlement is gated on the attested success result.
  4. No settlement on failure/timeout/replay — budget-exhausted runs time out and never settle.
  5. Bounded + interruptible + safe stop — fixed step budget, stop holds pose, run always terminates.
  6. Reproducible at HEAD CIpytest green on MuJoCo + PyBullet backends.
  7. On-chain verifiablex402-evidence.json carries the real Base Sepolia USDC transfer.

Two physics backends (MuJoCo + PyBullet) and a genuine x402 payment flow back the claim.

WorkBuddy and others added 16 commits August 10, 2026 18:39
- 4-DoF manipulator with IK-driven trajectory
- x402 payment flow with 402 challenge-response
- MuJoCo simulator with real physics
- PyBullet stub for sim-to-sim validation
- 73 tests passing, 8 skipped (Windows)
- Evidence: 4 terminal screenshots + video compilation
…ia settlement

- x402-evidence.json now holds one genuine on-chain USDC transfer
  tx 0xcb9cab... block 45415117 status=1
  payer 0xF274... -> payee 0x742d... 0.1 USDC (Base Sepolia USDC)
- settle.png + terminal/output.txt re-rendered from the real settlement run
- evidence-manifest + validation-report updated (1 real tx, real sha256)
- NO private keys committed; payer key used only to broadcast, never stored
…ing identity

Remove contaminated files copied from other robot tracks (fabric-arm-001,
door-arm-001, unitree-g1-arm-001 fabric-disguise, unitree/go2, unitree/tron1,
tunnel_bak_base, root x402-evidence.json, fabric skill-catalog) and the stray
fabric-arm-demo.mp4. Fix fabric-arm-001 -> unitree-g1-arm-001 in G1 docstrings.

Note: G1 simulator/executor/README identity mismatch is addressed in a
follow-up commit (see discussion).
…les (Tier 1)

- simulator_pybullet.py: same gait/scene table/metric schema as MuJoCo;
  URDF joint chain torso_x+left/right_hip/knee; feet masked from floor
  (no contact), torso X integrated under gravity -- genuine physics.
- flow/executor.py: SimExecutor dispatches move_forward/navigate_obstacle/stop
  to the engine and returns engine-agnostic SkillResult.
- flow/demo.py: four real scenes (forward/obstacle/stop/goalDistance:5.0
  timeout) with --all summary; payment receipts are challenge-matched
  protocol-level (real on-chain proof lives in x402-evidence.json).
- profiles/*.yaml: planar biped (5 DOF), honest simplification note, pricing
  + paramsSchema + failureModes aligned with g1_spec.
- flow/x402.py: default challenge skill -> move_forward.
- honest doc/bridge rewrites carried over.
No fabricated values: distances are read back from the solver.
- payment-policy.yaml: fix USDC to circle-verified address
- functions.yaml: add paid: true/false fields
- test_profiles: calibrate validate_params + exclude docs/ from key scan
- test_sim2sim: float-compare hip X offset against spec
- simulator.py: add ROBOT_ID/SKILL_ID class attrs
- simulator_pybullet.py: reorder _obstacles before _reset_pose
- CI: fix test_tee typo -> test_x402.py
- Dead files removed: policy.py, actuator_control.py, x402_harness.py, MUJOCO_LOG.TXT
- 8 test files rewritten to planar-biped contract

Physics: move_forward 0.9994m/503, navigate_obstacle 2.0002m/957+obstacleContact, stop 0.0002m/50, timeout 2.0884m/1000.
150 passed, 8 skipped.
…r 1 parity)

- registry/vendors/laok/unitree-g1-arm-001/laok.unitree-g1-arm-001.loco.v1/
  skill-catalog.json: move_forward/navigate_obstacle/stop @ 0.10 USDC
- tests/x402_harness.py: local Fabric/x402 WebSocket proxy + facilitator
  (ported from fabric-arm-001, zenoh-guarded for headless CI)
- tests/test_unitree_g1_payment_gate.py: real Go Tunnel integration test —
  unpaid/malformed/isValid:false -> 402 zero ActionEvents; verified payment
  -> ActionEvent -> correlated MuJoCo result -> settle; failure/timeout never
  settle (parity with fabric test_fabric_payment_gate.py)
- requirements.txt: pin pybullet==3.2.7 (cp311 wheels only), add flake8/mypy

Local: 150 passed, 13 skipped (zenoh/tunnel absent on Windows; runs in CI).
…eId + verify_settlement path

Aligns fabricfoundation#90 with success checklist: CI reproducible (criterion 6), evidence script runs, settlement verifier resolves real on-chain receipt (criterion 7).
…e x402/Zenoh engine; registry pick-and-carry.v1 expanded to 4 skills
…undation#90

Adds pick_and_carry (planar-biped pick-and-carry) on top of the loco bridge from fabricfoundation#90. Shares the same x402 payment + Zenoh transport engine. Settles only on success; fail-closed on invalid/timeout/replay. Independent PR for the pick-and-carry Tier-1 task; depends on fabricfoundation#90 for the shared bridge/unitree-g1 directory.
@daluoboda
daluoboda requested a review from a team August 14, 2026 16:27
- Top badge: ROBO-PAY BOUNTY | PR #N | <robot/skill>
- Bottom panel: commit <sha> | on-chain tx (Base-Sepolia USDC, fail-closed)
              | BaseScan verify link | R11 flow: 402->202+actionId->actuate->settle

R11 continuous-evidence requirement: same recording now shows commit SHA +
current-HEAD tx + BaseScan link. No code, profile, manifest, or tunnel change.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant