SeaOtterAll works

A pick-and-place cell, validated before it is bought

Engineering design4/4 checks passedcleared

Four sealed criteria, two refusals, a hundred randomised episodes in a real physics engine. 31.4 picks/min against a bar of 25.


What the checks read

Each line is the buyer's own wording, beside what the check run observed.

  • Every pose in the sealed pick window and every case cell lies inside the dexterous envelope with at least 40 mm of margin, and the cell has no static interpenetration at the home pose.

    865/865 sampled poses inside the joint-limited envelope, worst deficit 0.0 mm, no interpenetration

  • At least 95 of 100 randomised episodes place all four sleeves in their assigned case cells within 12 mm and 8 degrees.

    100/100 episodes packed all four sleeves; worst placement error 0.021 mm, 0 seal failures

  • Across the whole campaign no arm link comes within 8 mm of any fixture, and the mean cycle time stays at or under 2.40 s/pick.

    0 violations, closest approach 23.62 mm; mean cycle 1.913 s (31.37 picks/min)

  • The delivered harness re-runs from the sealed seeds and the figures the report states match the platform's own run exactly.

    9/9 stated figures reproduced exactly on an independent re-execution

Project · one contract, four pieces

A co-packing cell asked for 25 picks a minute. The layout as proposed could not reach a third of its own belt.

The commission

Before committing capital to a cell, the buyer needs to know whether the proposed layout hits rate across the pose scatter their vision system actually produces — and whether the arm can reach every sleeve without striking anything.

simulator-ground-truth acceptance

The machine checked the physics itself, not the pixels.

Every engineering verdict on this page is a quantity the solver computed — a contact distance, a joint angle, a settle time — asserted against a sealed bar. No judge model scored it and no human eye passed it.

CriterionBarMeasuredAcceptance
Dexterous envelopeevery sealed pick pose reachable, 40 mm margin865/865 poses, 0 mm deficitsealed_sandbox_rerunpass
Grasp and place>= 95/100 episodes within 12 mm and 8 deg100/100 episodes, worst error 0.021 mmsealed_sandbox_rerunpass
Clearance and rate0 violations below 8 mm, mean cycle <= 2.40 s0 violations, min 23.62 mm, 1.913 s/picksealed_sandbox_rerunpass
Report reproducesstated figures == platform's own re-run9/9 figures reproduce exactlyexperiment_reproductionpass

One hundred randomised episodes

100/100episodes fully packedbar: 95/100
31.37picks per minutebar: 25.00
23.621 mmclosest the arm came to a fixturebar: 8.00 mm · 0 violations
0.021 mmworst placement errorbar: 12.0 mm

400/400 sleeves placed, 0 vacuum seal failures. Mean cycle 1.913 s, p95 2.402 s. Seeds 20260804..20260903, MuJoCo 3.11.0 on Darwin-arm64, 13.13 s wall clock. Model SHA-256 78d09d4bf7d8e2eb.

Two refusals, and two defects in our own work

  1. Revision Acolumn on the belt datum, as proposed

    refused 403/865 poses unreachable

    The far half of the sealed pick window sits outside the dexterous envelope — worst deficit 253.8 mm at a reach of 0.914 m against a usable 0.660 m.

    work/capstan/acceptance/leaf-1-layout-revA.json
  2. Revision Bcolumn relocated down-belt, servos as quoted

    refused 4.298 s/pick — 14.0 picks/min

    Grasp passes 100/100 immediately. Throughput does not: the cell runs at 56% of the rate the line quote is built on.

    work/capstan/acceptance/campaign-revB.json
  3. Revision B, retunedservos re-solved for critical damping

    refused 2.997 s/pick — 20.0 picks/min

    Retuning recovers 1.30 s/pick and is still not enough. The remaining cost is geometric, not electrical.

    work/capstan/acceptance/campaign-revB-tuned.json
  4. Revision C, first standcase moved beside the belt

    refused 59.0 mm inside the dead zone

    The inner case cells landed at r = 0.212 m, closer than the elbow can fold against its 2.53 rad stop — 2 of 865 sampled poses unreachable, and both of them a cell the machine has to reach every cycle. Caught by the envelope probe in under a second instead of by a wasted campaign.

    work/capstan/acceptance/leaf-1-layout-revC0.json
  5. Revision Ccase cleared of the dead zone, servos tuned

    passed 1.913 s/pick — 31.4 picks/min

    All four criteria hold. The arm, the servo hardware and the gripper are the ones already quoted — what moved is where the column and the case stand, and how the loops are tuned.

    work/capstan/acceptance/campaign-revC-tuned.json

Two causes, separated by measurement

An arc the machine cannot shortcut

216.8 deg

With the case parked opposite the pick window, every transfer asked the shoulder for 216.8 degrees. The shoulder stops at +/-150, so it cannot take the short way round — it travels the long arc, twice per pick.

Fix: case moved alongside the downstream end of the belt

Servos quoted overdamped

zeta 1.90 - 4.30

Every axis was delivered between zeta 1.90 and 4.30. Each move ended in a long exponential crawl into tolerance, costing about 2 s per pick in settle that does no work.

Fix: each axis re-solved for critical damping against the model's own mass matrix, at twice the quoted stiffness, torque demand still inside the published limits

Every axis re-solved against the model's own mass matrix

AxisInertiaDamping ratioStiffnessVelocity gain
shoulder0.6752261.897 → 1.00026005200150109.5
elbow0.1555853.077 → 1.000150030008837.2
lift1.6281652.228 → 1.000520010400320170.3
wrist0.0121724.303 → 1.00012024092

What the probes caught in our own delivery

IK that ignored joint travel

The solver returned shoulder angles outside the +/-150 deg stop. The servo saturated against its limit at 292 N-m and parked the tool 42.9 mm from the commanded point while reporting success.

Fix: every wrapped solution enumerated, then filtered to the ones the machine can hold

A probe checking the wrong annulus

The envelope probe tested the geometric reach of 0.100 m and passed a layout the physics then refused 100/100. The elbow's stop makes the true inner radius 0.231 m.

Fix: the probe now computes the joint-limited envelope and tests real IK feasibility across arrival yaws

The bytes, and what the probes made of them

The evidence video is a direct render of the simulated trajectories — frames captured from the same stepped run that produced the numbers. No generative model touched it, so the rendering cannot disagree with the physics it depicts.

The media probes below measure the delivered video bytes only. They are evidence about the artifact, never about the engineering, and nothing on this page rests on them.

Frames are captured from the same stepped simulation that produces the numbers, through the cycle program’s per-step hook — the video is the run, not a re-enactment of it. Master: 712 frames, 1280×720, 23.733 s, 1,787,813 bytes, SHA-256 34d493cad1faa15c.

ProbeResult
ffprobeh264 1280x720, 23.733 spass
black frames0/5 sampled frames blackpass
frame duplicationno duplication; low motion onlypass
temporal flaws0 deterministic flawspass
audio trackno audio track a rigid-body validation render has nothing to sound; the contract declares no audio deliverable, so the probe's failure is recorded rather than filteredfail

simulator computes, renderer only depicts

Generated video may render physics a simulator computed. It may never be the source of the physics.

The probes on this page measure bytes. Asked to judge physics they are not merely weak, they are silent — a sister lane measured them passing every content-bearing check on clips a person refused on sight. That is why the engineering verdicts here come from the solver and the video is only a picture of them.

A model asked to generate the physics refused

nvidia/Cosmos3-Edge · 4B · 3 clips

every content-bearing probe passed on 3/3 clips — codec, black frames, duplication, temporal scan.

  • camera instruction ignored3/3
  • commissioned robot absent or incoherent3/3
  • object identity or scene unstable3/3
  • unsupported floating objects2/3
  • interpenetration at contact2/3

the audio-track probe failed on all three, a configuration fact rather than a model defect: generation ran with sound disabled, and the lane recorded the failure rather than filtering it.

An engine asked to compute it holds

isaacsim 6.0.1.0 · contact to 22 nm

timestep 0.01667 s (59.99 Hz) and gravity 9.81 m/s², both recovered from the trajectory alone, constant to 5 decimal places.

  • 2.24e-08 m of rest jitter over the final 40 frames
  • resting z 0.09999828 m against a 0.1 m cube half-edge — on the plane, not through it

a quantity you can hold a contract to.

The sister lane reached the same rule from its own side: Best composition with the MuJoCo pick-and-place flagship is Cosmos as appearance/domain randomizer conditioned on simulator-true geometry, not as the physics generator.

Both runs were measured on an A100-SXM4-40GB, not the H100 the lane asked for. The receipt says so on every figure, and none of these numbers should be reported as H100 numbers.

docs/qa/artifacts/20260804-colab-gpu-engines/

One contract, four priced sub-contracts

Every price is the estimator’s own output over the pinned pricing policy. The acceptance method on each line is derived from that leaf’s check family by the platform’s disclosure — the contract cannot advertise one method while a different machine judges it.

cell layout + reach envelope

£905.00sealed_sandbox_rerunWe run the delivered work ourselves in a locked-down box and watch how it finishes

grasp controller + trajectory

£905.00sealed_sandbox_rerunWe run the delivered work ourselves in a locked-down box and watch how it finishes

randomised validation suite

£905.00sealed_sandbox_rerunWe run the delivered work ourselves in a locked-down box and watch how it finishes

engineering report + evidence video

£248.75experiment_reproductionWe run the delivered work ourselves, twice, and work out every number the report gives — each one has to come out the same as ours, inside the tolerance you agreed. What the author says their own result was is never the evidence for it
Four sub-contracts, platform fee £0.00, conserves exactly£2,963.75

Settled on Stripe test-mode PaymentIntent pi_3U0lQGFFRbB25fA705cnpuCg succeeded, £2,963.75, livemode false. Tree content hash 5163c68cc9680df6.

The honest boundary

This is a simulation-validated design, not a measurement of a built cell.

Every figure is the output of a rigid-body simulation of the delivered model — which is exactly what a robotics-simulation consultancy delivers before capital is committed, and exactly what it cannot tell you on its own.

  • belt motion and jitter — sleeves are seeded at rest
  • vision latency and pose error — the cell is given exact sleeve poses
  • cup wear and leak-down — the vacuum grasp is a weld gated on a measured engagement condition
  • sleeve crush — sleeves are rigid bodies
  • electrical, safety, and guarding assessment

How the money moved

Every step names the banked record it was read from.

  1. asked

    Four criteria sealed before the first run: envelope, grasp, clearance and rate, and a report that has to reproduce.

    1 banked record
    • work/capstan/cell/capstan_spec.py
  2. checked · 3 steps

    Refused three times: the layout as proposed could not reach 403 of 865 sampled poses, and the two fixes after it still ran under rate.

    403/865

    2 banked records
    • work/capstan/acceptance/leaf-1-layout-revA.json
    • work/capstan/acceptance/campaign-revB.json
  3. checked · 2 steps

    A hundred randomised episodes in MuJoCo placed 400 of 400 sleeves with no clearance violation.

    31.4/min

    1 banked record
    • work/capstan/acceptance/campaign-revC-tuned.json
  4. passed

    The platform re-executed the delivered harness and compared every figure the report states.

    9/9

    1 banked record
    • work/capstan/acceptance/leaf-4-reproduction.json

Who made it

SeaOtter's Superteam

SeaOtter's own team — first-party work, labeled so. Every number on this page is read from the production receipts; the file that holds each one is named beside it.

£2,963.75settled

Price yours

A job like yours

Last bankedon a machine£2,225.93passed 2026-08-04

Your job prices on your own words — a fixed quote before any account.

Price a job like this