Arthur Petron → Work 02

02Work

2.1 Tools & experiments

2.2 What I do

I design electromechanical systems that work when they are built.

I remember being excited during my first C++ class in grade school when the code that I would write compiled on the first try. If it didn't, no matter -- just read the error message and fix the bug. When it comes to hardware systems, errors can't be fixed by just changing two lines of code. A robot is a few hundred parts that have to function together both mechanically and electrically while meeting a performance target. The expensive part is never the first build — it is the second, and the third, after the first one did not work. Revision loops are where hardware schedules go. I have a tendency to design hardware systems that "compile on the first try."

I have spent sixteen years getting better at spending those loops on paper and digital tools instead: in notebooks, in simulation, in benchmarks that tell me early and cheaply when I am wrong. The work is just electromechanical design, controls and the mathematics underneath, but the throughline is that one habit.

Full disclosure: “compiles on the first try” should not be taken as 100% the case. There are also times when this is not true as well. Context and complexity dependent -- and AI has really increased the capacity for increases in both.

2.3 From the notebooks

Section 2.2 claims that the way to make hardware work on the first build is to spend the revision loops on paper. This is what that looks like.

The question is whether to cut parts from stock we already hold or buy stock to size. It is a purchasing question, so it arrives sounding like admin — but the cost is set by how much metal ends up as chips, and that is a geometry problem with an answer and it also is a very large ops question. Storage, cutting machinery, increased chip recycling and transport all matter here.

Constraints first: about 5 kg, 20 cm in width and depth, 20 cm tall. Then the densities, because a 12 cm cube of aluminium and an 8.5 cm cube of steel are the same 5 kg and that sets the size of the problem. Then the actual question: if we hold s different stock sizes, how much metal do we waste on average?

Waste in one dimension averages d/4s, so summing the three faces of a w × l × h piece gives 7⁄16 · wlh/s. Spread the sizes evenly up to dmax and the total becomes a sum over i — one expression for how much a stocking policy costs, before anything is ordered.

The page ends on “how much does this cost?”, which needs parameterization based on the specifics of the situation. One may notice that this analysis does not include the recursive (to depth d) case for material reuse. True.

The three isometric sketches down the right margin are the same block at three stock sizes — checking that the algebra matches something you could hold.
Notebook page 38. The boxed page numbers, the marginal figures and the rules across the top of this website are all taken from the way these pages are laid out — see arthur-tex-style.
Fig. 2.3.1 — cut or buy. Constraints, densities, the waste derivation, and the question that was actually being asked. Click to enlarge.

2.4 Keeping current

Below are a few side project that I found interesting. Each attempt to find out whether an abstraction, discovered while learning math, improves some concrete mechanism — a robot arm, a proof assistant, a benchmark — which sometimes it does not.

Source is linked where the repository is public. The most interesting output of any of these is a number I did not expect.

Sensor fusion as a sheaf

Real sensors arrive at different rates, with latency, jitter, drift and the occasional dropout, and the state you want is usually on a manifold rather than in a vector space. codynamic-sensor-data treats fusion the way a sheaf does — local observations that agree on their overlaps, glued into a global state — so a late measurement is not dropped but rewound into place, and sensors that genuinely disagree raise an error instead of averaging into a plausible lie.

This work supports all other sensor fusion techniques as well because it is based on a higher level of abstraction. Imagine if your robot design or control system didn't have to be a fight with the hardware, firmware, and software to make sure your data streams are perfectly synchronized? This code allows for that.

Full write-up, with interactive demonstrations →

The application on top of it drives a UR5e from a head-mounted IMU, which is the test that matters.

Math that actually compiles

A Bishop-style constructive real analysis library for Lean 4, built against Lean core only — no Mathlib, no Batteries, no dependencies at all. Every existence claim carries a witness; every limit carries an explicit, Type-level Cauchy modulus.

Every load-bearing theorem is gated by #print axioms to propext and Quot.sound only: no Classical.choice, no excluded middle, no native_decide, no sorry. The rationals are rebuilt from scratch because Lean's own Rat smuggles in Classical.choice through its decidable equality.

Why constructive: if every existence proof carries a witness, then a theorem is already an algorithm. That is the property I want when the maths has to end up controlling something.

Structure in a world model

A policy trained in simulation learns the simulator as much as it learns the task, and the places it fails on real hardware are usually the places the simulator was wrong. The question I care about is what structure a world model has to carry for that gap to be small — and whether that structure can be stated in advance rather than hoped for.

Structure Is All You Need is the attempt: a network that restructures its own graph as it learns, instead of fixing the architecture up front and pushing everything into the weights. Related to it, I think distributed machine learning is the right shape for robotics. The sensing and the acting are already distributed, and forcing otherwise costs latency and synchronization issues that don't need to exist.

This is the part of my work I am least able to prove. It is a preprint, there is no number here I would defend, and I am including it because it is what I actually argue for in client work rather than because it is finished. Stay tuned for some code and writeups in this space.

If category theory earns its place anywhere, it is here: a claim about what structure a model must have is exactly the kind of claim that framework is for.

Where a good idea lost

Shortest paths are the substrate under most motion planning, so a method that preserves exact distances while cutting the edge count would be worth having. I built one — run Δ-stepping on a sparse skeleton of each node’s nearest outgoing edges, then patch a band on the full graph to keep the distances exact — and benchmarked it in C++ against two baselines.

MethodTimevs baseline
Dijkstra, multi-source 25.0 ms 1.00×
Δ-stepping, full graph 14.8 ms 1.69×
Skeleton + codynamic patch 25.4 ms 0.99×

My method came in slower than the plain baseline it was supposed to beat, while ordinary Δ-stepping won comfortably. At this size, on this graph family, with these parameters, the skeleton does not pay for itself.

Random geometric graphs in the unit square, n = 200,000, average degree 12, 8 sources, skeleton factor L = 3. The skeleton held 17.7% of the edges.
The premise needs much larger graphs before a skeleton factor of (log n)1/3 can matter. Not tested there yet, so the honest reading is “not at this size,” not “the idea is wrong.”

A hand-centric manifold

A keyboard laid out on a manifold parameterised by the hand rather than by the desk: key orientation per finger, dish and fillet geometry, tenting contours, and a thumb that gets its own plane because it does not live in the same frame as the fingers.

It is a keyboard. It is also the problem of fitting a gripper to a task — reachability, orientation fields, contact patches, and one digit whose workspace has to be described separately. Same geometry, much cheaper failure mode.

What I do to check that I have understood something: build the smallest object that would be wrong if I hadn’t.
Fig. 2.4.1 — key orientation, dishes and fillets, tenting contours and the thumb plane, on a manifold parameterised by the hand. Click to enlarge.

2.5 Papers & patents

IJRR 2019 · arXiv:1808.00177
OpenAI · arXiv:1910.07113
Asymmetric self-play for automatic goal discovery in robotic manipulation
ICLR 2021
Simulation environments · 2021
Multi-indenter device for in vivo biomechanical tissue measurement
IEEE TNSRE 2017
Structure Is All You Need: self-learning neural networks as codynamic systems
Preprint 2025

Patents

  • US9032635 — Physiological measurement device, with Hugh Herr2015
  • US8801569 — Flexure-based torque sensor in a bicycle, sole inventor2014
  • USD596084 — Motorcycle, design patent2009

Full list on Google Scholar and Google Patents.

I also directed MASLAB at MIT in 2013 — forty students and fifteen staff building autonomous vision-based robots in a month — and advised a master’s thesis on a robotic device for CNC machining in 2022–23.

2.6 Working together

I take on a small number of advisory and engineering engagements through Darthur LLC, and currently work with several robotics companies in the Bay Area.

Concretely, that has meant mechanism and actuator design, simulation, design review, advising, and systems and ops specification. Much of the process involves quantitatively determining what the functional requirements have to be for any given context/system using long-term thinking.

There is a separate page for the film and television work — robots on screen — which is the same knowledge pointed at a different problem. Reach out if you're making a film and need a science guy.

Reachable on Linkedin or on GitHub.

Based in San Francisco and working mostly with teams there. Travel is possible depending on the situation (including internationally).