S

Loading

Back to portfolio

Space Robotics

Earth-evolved body plans are a bad prior for space, so let search find better ones

The Thesis

Almost every robot we send to space has a body borrowed from Earth. Wheels, arms, and legs all solve problems that gravity and ground contact created. In orbit there is no ground, sunlight is the only energy source, and mass is the thing you pay for. I think those body plans are a bad starting guess, and that a search can find better ones.

The project runs two tracks toward that. The first is directed: a task-conditioned search over morphology and control together. The second is undirected, and it is where the work is right now.

The Soup

The second track drops a set of engineering parts into one shared zero-gravity scene around a star. Struts, motors, solar panels, batteries, oscillators, and photosensors, all in the same box. There is no reward function. Nothing in the simulation knows what a good robot looks like.

What exists instead is an energy economy. Panels harvest flux, which falls off with the square of distance and is blocked by whatever sits in the way. Everything costs energy to run. When a body's ledger reaches zero it dies, and its parts are released back into the scene as debris. When a body has surplus energy and free parts nearby, it replicates with mutation, physically pulling those parts together during a construction window. Matter is conserved throughout, so nothing is created or destroyed, only rearranged.

Selection pressure comes from the geometry rather than from a score. Inner orbits are rich in flux but lethal, because radiation wear grows with it. Outer orbits are safe and poor. Structure earns its keep for physical reasons: struts extend gathering reach, photosensors wired to motors let a body point its panels at the star, motors and oscillators together produce movement, and batteries buffer an eclipse.

24 simulated hours in 10 seconds. 1,182 births, ending at 46 organisms across 13 species. The counters are raw run statistics, not annotations.
Phase diagram over bond-affinity matrices
Left: 24 random chemistries, all sustaining life. Right: as forbidden pairings rise from 0% to 95%, mean births fall 353 to 48 and peak complexity 21.3 to 6.3.

Chemistry, Not Just Creatures

A bond-affinity matrix decides which parts stick to which. It is the chemistry of the world, and it shapes what random genomes can grow into before selection ever acts. The interesting experiment is not evolving organisms inside one chemistry. It is selecting over the chemistries themselves, and asking which sets of rules make open-ended structure likely at all. The code is built around that second level.

Two Tiers, One Genome

Evolution needs far more time than rigid-body physics can give. So the same world exists twice. The physics tier runs in MuJoCo at roughly real time, with welds, contacts, and momentum all geometrically true. The fast tier is pure numpy at 450 to 530 times real time, and it keeps the same causal structure: identical genome and chemistry code, flux rings, conserved parts, gather-and-build replication, and death.

Evolution happens in the fast tier. Anything it discovers gets verified in the physics tier, where a body that only worked because the fast model was forgiving will fail. The split is what makes the runtime affordable without letting the results drift into fiction.

Measured, the fast tier ran 24 simulated hours in 178 seconds on one core, which is 485 times real time. That figure is a floor rather than a headline: it was taken while twelve other cores were busy, and it moves with population size.

The dominant species of a 12-hour run, compiled into rigid-body physics. Six parts, welds holding, and the body reorienting 39 degrees by internal momentum exchange alone.
Energy harvested against cost over a run
The energy economy that stands in for a reward function.

Where It Stands

The soup runs and the machinery is in place: parts compiled up front, bonds pre-allocated as weld constraints and retargeted at runtime, articulation only inside motor parts, and control wired from oscillators and photosensors rather than from any neural network. A proto-nervous-system has to evolve if it is going to exist at all.

The directed track has a roadmap and is not implemented yet. I would rather report what the undirected one actually produces first.

Three results so far. Chemistry constrains complexity long before it kills anything: across 36 runs with progressively sparser bond rules, worlds kept surviving while peak complexity fell by two thirds. Only 24 of 79 random chemistries passed a founder-viability screen at all. And in a 24-replicate paired experiment, evolution that builds its own module library reached mean peak complexity 78.9 against 65.1 for a control given the same mutation dose, at p = 0.0075. The dose match is in the mean rather than the trajectory, which is the part I would attack first.

Back to all projects