SEQUENT ROBOTICS
Training logRev 2026.06
Training log

What we changed, what broke, what we fixed.

A running record of the skill-learning work on a Unitree G1 in MuJoCo — newest first. Times are wall-clock per run; results are deterministic evals measured against the simulator state, not the policy’s own claim.

Jul 3–5 2026 · The finale: ticket → brain → robot

The loop closes. An operator ticket in plain words goes to the trained retriever over the 1,012-SOP corpus (R@1 0.584 reproduced locally on this machine), the faithful planner turns the retrieved SOP into a skill chain, and the same robot executes it in one continuous simulation — with every step verified against measured physics and the verdict reported honestly, including the step that failed.

G6 · one takeall criteria pass
one-take walk, pick, carry, place, press
G7 · ticket → robotSOP retrieved rank 1
ticket retrieved over 1,012 SOPs, robot walks and presses
g6 one-take
The full loco-manipulation chain in a single unbroken simulation: walk to the table → pick (force-gated latch) → carry 2.8 m with a 180° turn → place at the panel → RL press 34.5 mm, PUMPS=0 → return to rest. Box never dropped, robot never fell, every criterion measured in-run. The take also surfaced a real bug (a stale carry force corrupting the place) — which is why gates are run as takes, not stitched from clips.
one take · all pass
walk→pick→carry→place→press
gate 7
First ticket-to-robot run: a plain-language ticket → the trained 1,012-SOP retriever (semantic MiniLM interleaved with lexical TF-IDF) → faithful plan → the robot walks up and executes the RL press. Non-embodied SOP steps (wait, read, notify) are captioned on screen rather than mimed.
R@1 0.584 reproduced
ticket → walk + press
finale
An authored workstation SOP (SOP-1013, written for the demo and disclosed as such) is retrieved at rank 1 (score 0.897) over the full corpus and its five-action plan runs in one take: pick, carry, place, press 33.8 mm all PASS — and the lever fails honestly: best of 4 stance variants drove it 0.883→0.443 rad against a <0.25 success bar. The verdict card says PARTIALLY RESOLVED, on camera, because that is what happened.
4/5 steps pass · lever fail
verdict: partially resolved

Problem solved: the thesis loop exists end to end — ticket → retrieval → plan → verified execution → honest verdict, on one robot in one simulation. The remaining gap is named and queued: the lever’s ~50% reliability traces to a per-episode arm bias the policy cannot observe; the obs fix + retrain is next. A system that reports its own failed step is the whole point.

Jul 2–3 2026 · The action-envelope wall, press-once, and the lever’s first throw

A day of root causes. The biggest: the policy’s action envelope (±0.5 rad) was smaller than the reach itself — from the rest pose the arm physically could not command the button’s contact pose, which had silently capped every far-start attempt. Widening it (0.8 press / 1.2 lever) unblocked both skills. The rest of the day was closing the gap between “the metric says pressed” and “a human watching agrees” — the operator kept catching behaviors the numbers missed.

walk → press oncePUMPS=0 measured
walk up and press the button once
lever · BC→PPO51° throw · ~50% det.
first full deterministic lever pull-down
press-once
Three operator-caught failures, three fixes: the policy pump-cycled the button (per-step depth income made re-pressing profitable → success now terminates the episode); then it air-swung after the press (motion was free → post-press stillness cost + a dip-tolerant hold counter); and the walk→press seam twitched scene objects (the handoff reset touched world state → full-pose snapshot/restore, settle rendered on camera). The pump count is now measured inside the demo: PUMPS=0.
press once · hold · stop
one-take walk→press
lever
Redesigned to a breaker-style pull-down (rests latched up; gravity assists) after the up-throw read as fake. Pure PPO never completed the 0.63-rad arc (12 iterations: reward parking, seat-income farming, exploration noise flinging the latch). The unlock: BC warm-start from scripted IK arc-follow demos, then PPO — the same recipe that cracked the original press — plus an entropy crush to consolidate. First full deterministic throw: 51° into the success band. Honest state: ~50% reliable and the motion is jerky; root cause identified (the arm’s per-episode bias isn’t observable to the policy) and queued.
BC → PPO → ent-crush
1/2 det. seeds · WIP

Problem solved (mostly): the press is a finished, verified skill — walk up, press once, done. The lever crossed from “never completes” to “completes half the time, ugly” — real, but not shippable; reliability + smoothness are next. The deeper lesson repeated all day: watch the video, not the metric — every reward hack was caught by human eyes first.

Jun 26–Jul 2 2026 · One robot, honest RL — the reach becomes learned

Three arcs in one week. First: one unified robot — the walking AMO humanoid with the Robotiq gripper grafted onto its right wrist — replaces the two separate rigs, and every skill moves onto it. Second: the press gets honest — smooth, collision-real, same-side. Third, the headline: the reach itself becomes RL. Until now the arm was IK-servoed onto the target at episode start and RL only learned the final push — a thin slice. A success-gated curriculum now trains the whole reach-and-press from the rest pose.

pick · IK + latchheld lift
unified robot picks a block from the table
press · low-passjerk 0.83→0.001
smooth RL button press
RL reach+press19 cm → 31 mm
curriculum policy reaches from rest pose and presses
unified
One embodiment for everything: gripper grafted on the walking humanoid (collision masks, AMO reads re-addressed), pick moved from a floating pedestal to the real workstation table. The pick is a controller — DLS-IK reach + force-gated latch. Fixing the close (clamp a fixed target instead of chasing the block) cut the block’s slide from 13 cm to 2 cm and stopped it phasing into the tabletop.
controller, not RL
held lift · jitter 0.12 mm
press
The anti-jerk reward penalty got reward-hacked — the policy flailed fast and the depth metric called the accidental bumps “presses.” Fix at the control level instead: a low-pass on the arm command makes flailing physically impossible (jerk 0.83→0.001, press held 165+ steps). Then a real find: the blue button was a cross-body reach — with true arm↔torso collision enabled the arm simply can’t get there. Switched to the same-side yellow button; the collision stays on as a hard guarantee. Base recoil rock damped 10.4→6.6 cm with a base-stability term.
2.5M / run · ~30 min
25.9 mm held · upright
curriculum
The overnight result. Arm starts interpolated between the contact pose (trivial) and the rest pose (full reach); the start distance grows every time recent success clears the gate. Two fixes made it converge: the reach reward must target the button’s cap face, not its body origin (a hidden 7.7 cm offset that flattened the gradient), and an anti-parking band — the first run learned to reach, then hovered 5 cm short farming proximity. After both: the deterministic policy reaches ~19 cm from the true rest pose and presses 28–31 mm, every curriculum level, no IK seed.
10.2M · overnight, 64-core CPU
reach+press, all levels

Problem solved: the “RL” in the stack is no longer a thin slice on top of IK — the reach is learned. It also answered the infrastructure question with data: MuJoCo on CPU can train this; the Isaac Lab move is a choice, not an escape. In flight: a hold + stance-robustness retrain (so the press survives wherever the walk lands, no reset at handoff) and the same curriculum ported to the lever.

Jun 22–24 2026 · Grasp rebuild — Robotiq 2F-85

The earlier grasp attempts failed on embodiment, not method: a rigid hand with no actuated fingers, and a reward that paid for proximity. We rebuilt from the gripper up — a real Robotiq 2F-85 parallel gripper on a fixed base, and a reward gated on a true two-sided grip plus a sustained lift. First we proved the tool was reachable and a clean grasp pose existed; then we trained.

gr-v0flings it
gr-v0 flings the tool
gr-v1holds 16/25
gr-v1 lifts and holds
gr-v260% held
gr-v2 verified sustained hold
gr-v0
Pure RL from scratch, 1.5M steps, no demo and no curriculum. Learned to reach and grip on its own — then flung the tool 22 cm up ballistically, contact flickering. The reward paid for height, so it maximised height.
1.5M · ~33 min
grasp 90% / hold 0%
gr-v1
Anti-yank reward redesign (resume gr-v0): cap the lift reward at 10 cm, make a steady hold pay more than height, pay out only after the grip is continuous, penalise ballistic tool velocity. The fling disappeared — it lifts to ~8 cm and holds 16 of the 25 steps a verified success needs.
1.5M · ~25 min
grasp 100% / hold 16/25
gr-v2
Same reward, just +2.5M more training. The grip now holds the tool aloft for the full half-second in 60% of episodes — a real, measured grasp on the rebuilt gripper.
2.5M · ~40 min
grasp 100% / hold 60%

Retracted: these gr-v0–v2 numbers were on a BROKEN sim — the arm drove the gripper 7.5 cm through the solid pedestal and the block spawned mid-air, so the “grasp” was a phase-through-and-jam exploit. gr-v2 (60% hold) scores 0% on the fixed sim. We fixed the contact + tool settle and rebaselined: gr-v4 learns a real 95% grip (no phasing) but won’t lift yet; a softened grip-stability reward + lift run (gr-v5) is training. See the research log for the video.

Jun 2026 · Button press

Pressing an e-stop button on the machine. The long-blamed “the base falls over” turned out to be already fixed — the real blocker was geometric: at the spawn point the hand maxed out ~0.48 m short of the button.

bp-v0–v2
Made the button reachable (spawn + reach bias), then reshaped the reward to reward press depth, not a threshold graze. Reward tuning alone stalled: hover → 1 cm → hover again.
2M each · ~22 min
deterministic hover
bp-v5
Switched to a protruding mushroom e-stop and a closed-loop IK demo to seed behaviour cloning, then PPO. The base recoil was the real problem; with that handled the press held.
5.3 cm press
held 79 steps · 10/10

Problem solved: stopped debugging a phantom (“balance”) and fixed the actual blockers — reachability, then base recoil. Full NL → SOP → walk + press demo runs verified.

Earlier 2026 · First grasp & the verifier — “policies lie”

The first grasp work (rigid hand) is where the core lesson came from: a policy’s reported success is not the truth. Scaling the same reward 25× on cloud compute made it better at the score and worse at the job.

v5.5
Best honest skill of that era — a real grasp-and-hold. Claimed 60% grasped; the verifier confirmed 55% as a sustained hold.
claim 60% → verified 55%
v5.6
10M steps on the cloud. Grasped 45% (a record) but refused to lift — it farmed the grasp and circled its hand. The policy claimed 30% success; the verifier confirmed 0%.
claim 30% → verified 0%
verifier
We stopped patching the reward and built a verifying executor: every skill carries machine-checked pre/postconditions, and a step counts only if the physics agrees it happened. It also exposed that an early “success” logged momentary lifts — fixed with a no-early-stop eval window.
measured vs sim state

Problem solved: a way to tell a real skill from a reward hack — the thing the whole project is built on. It also told the uncomfortable truth that our own best grasp only held ~1 in 3 times, which is what drove the gripper rebuild above.

Foundation · Feasibility & SOP study

The earliest result, and the reason the planner can trust the body: a calibrated balance-margin threshold that predicts whether the real AMO-controlled G1 will stay up.

predictor
Across a payload × reach grid (n=24 rollouts of the real controller), a single balance-margin threshold of −0.066 m separated every configuration that fell from every one that stood.
100% separation
n = 24
planner
A typed SOP planner reasons over that calibrated contract: a step it predicts infeasible is re-planned (more conservative reach) or aborted before the robot ever moves — closed loop on feasibility, not on a language model’s opinion.
re-plan / abort

Problem solved: grounding — a checkable, physical contract between the planner and the body, instead of asking a model “did that work?”

All MuJoCo simulation, single operator, proof-of-concept · not yet hardware · the SOP planner is not yet wired into the skill executor · ← back to the work