What it does

SOAR flies a pursuit mission whose flight controller is a wiring diagram measured out of a fruit fly's brain rather than designed or trained. A fixed-wing aircraft orbits with a gimballed camera, a classical detector finds a moving ground target in the greyscale frames, and the resulting bearing is re-expressed in a ground rover's body frame. That bearing is pushed through a circuit extracted from Janelia's public Drosophila connectome. 275 LC10a visual projection neurons, a two-cell GABAergic AOTU019 comparator, DNa02/DNp09 descending neurons, 70 leg motor neurons, and the descending output is sent to the rover as MAVLink motor commands. One decision costs 3,859 multiply-accumulates. The entire brain is an 11 KB file. There is no training step anywhere.

How we built it Step 1 — we downloaded it instead of writing it. We sent ten database queries to Janelia's public server and got back the synapse counts between those cell types. No password needed. Those raw counts are the weights of our controller. In a normal AI system you'd start with random numbers and train for hours until they're useful. We skipped that entirely — the numbers came pre-set by evolution, and we didn't adjust a single one. There is no training step in this project.

Step 2 — we arranged them into a grid of numbers (a matrix). The connection from 275 LC10a cells to the 2 AOTU019 cells is just a 275×2 table of synapse counts. Running the "brain" means multiplying incoming numbers by that table. That's it. The whole brain file is 11 KB. Smaller than a phone photo, smaller than this message.

Step 3 — here's the beautiful part, the bit nobody designed. When we looked at the actual wiring, three facts fell out:

  1. The eyes don't cross. Left-eye cells send 6,615 synapses to the left comparator and exactly zero to the right one. Right eye: 7,595 to the right, zero to the left.
  2. The next step crosses completely. Left comparator → right steering neuron: 289 synapses. Right comparator → left steering neuron: 297. Same-side connections: zero.
  3. The output is a differential drive — like a tank. The right steering neuron drives the right legs hard (887 synapses) and the left legs barely (53).

Now follow a target that appears on the right:

right eye lights up → drives the right comparator → that comparator is inhibitory, and it crosses over, so it silences the left steering neuron → the right steering neuron wins by default → right leg pool dominates → the vehicle turns right.

A working steering controller, built out of nothing but "which cell wires to which". We didn't invent that logic. We measured it, and then checked there were no wrong-side connections anywhere — there are none. An engineer would call this cross-inhibition and be pleased with themselves for thinking of it. The fly has been doing it for a few hundred million years.

Step 4 — plumbing. The aircraft's camera spots something and reports a direction. We convert that into "where is the target, from the rover's point of view" — because the fly circuit expects to see the world from the body doing the chasing. That angle goes into the matrix, numbers come out the other side, and we send them to the rover as throttle and turn commands over MAVLink.

The good:

  • Absurdly cheap. One decision costs 3,859 MACs. A small standard vision model (YOLOv8n) costs about 4.35 billion. That's roughly a million times less arithmetic — about 18 nanojoules per decision.
  • No training, no dataset, no GPU. The weights arrived already correct. Nothing to overfit, nothing to collect.
  • It's inspectable. You can read the entire controller and understand why it turns right. Most neural networks are a wall of meaningless numbers; this one has an explanation you just read in four lines.
  • The wiring result is genuinely a finding, not a demo. Zero wrong-side connections is a real, checkable claim about a real animal.
  • Real interfaces. Genuine MAVLink on standard ports — a real drone could be dropped in.

The bad:

  • The eye is the weak link, and right now it's broken. The fly circuit gets fed by an ordinary camera detector, and that detector assumes a stationary camera. Ours is bolted to a circling aircraft, so the entire image moves and the detector sees terrain as "movement" everywhere. 37 to 58 false blobs at once. Across three test runs it correctly locked onto the target 0%, 58%, and 9% of the time. The brain is fine; it's being handed the wrong target most of the time. (Good news: it never chases our own rover. that was 0% in every run. And this is fixable: cancel out the camera's own motion before comparing frames.)
  • It's pure pursuit, not interception. It steers at where the target is, not where it's going. It doesn't lead the target like a quarterback. Earlier versions of our pitch claimed "predictive intercept vector". That was false and we cut it.
  • It only does one thing. This is a steering reflex. It can't plan, can't avoid obstacles, can't recognise what it's chasing.
  • Two sets of numbers exist and only one is honest. There's a shortcut mode that feeds the brain perfect target positions, and it produces lovely results (intercepts within 1–2 m). That mode is labelled dishonest in our own code, because it skips the camera entirely. The real numbers are the ugly ones above.

The one-sentence version: we replaced a trained AI steering controller with a wiring diagram copied out of a fly, it works and costs a millionth of the compute, and the current bottleneck isn't the fly brain. It's the camera software feeding it.

Challenges we ran into

The hardest one was the camera. Background subtraction is the right tool for a fixed sensor and the wrong one for a sensor on an orbiting aircraft. Every pixel moves, the frame fills with dozens of spurious tracks, and the label logic hands "target" to whichever piece of terrain is brightest. Measuring that honestly meant building a pixel-space test against ground truth, because the bearing reported over telemetry is in a different frame from the one the detector works in, and I got that wrong twice before catching it.

The second was distinguishing a real result from a plausible one. There are two sensor paths, and the flattering numbers come from the oracle. Keeping those straight, and labelling the oracle as dishonest in the code's own help text, mattered more than any single fix.

Accomplishments that we're proud of

The steering architecture was measured, not designed, and it turned out to be a textbook cross-inhibition controller with exactly zero wrong-side connections: left-eye LC10a send 6,615 synapses to AOTU019_L and zero to AOTU019_R; AOTU019_L→DNa02_R is 289 synapses while both same-side connections are zero. Because AOTU019 is GABAergic, those signs compose into a working differential drive with no design input at all. Nobody chose that. It was read off a fly.

The other thing worth being proud of is docs/FACTCHECK.md, which marks four of the original pitch's own claims False. including "perfect tracking accuracy" and "predictive intercept vector". and rewrites the pitch accordingly.

What we learned

That a verification harness will tell you what you asked, not what you meant. The self-test passes 7/7 and the intercepts are real, but it exercises the oracle sensor; the honest camera path fails most of the time, and nothing in a green test run says so. The useful check was always the one that compared against ground truth in the sensor's own coordinates.

Also that "is it real?" and "is it right?" are separate questions. The detector is unambiguously real. No ground truth reaches it, which is exactly why it fails. A fake one would have looked better.

What's next for this project

Egomotion compensation in the detector: fit the frame-to-frame homography from tracked corners, warp the background before differencing, and the clutter tracks collapse. Then re-run the pixel-space test across seeds and report the lock rate as a headline number rather than a footnote. After that, fold the same connectome controller into the Arctic vessel-tracking work, where the discriminator problem — telling a moving hull from drifting ice is the same shape as telling a target from terrain.

Built With

Share this project:

Updates

Submission history