engineering

The Collision Curve: Why Coordination Gets Harder Faster Than You Think

2026-07-24 · 6 min

There is a comforting intuition that a fleet of ten robots is just twice as hard to run as a fleet of five. It is wrong, and the way it is wrong is the whole reason coordination is a product and not a feature.

The number of robots grows linearly. The number of pairs of robots that can occupy the same space at the same time grows with the square. Ten agents have 45 pairs; twenty agents have 190. Every one of those pairs is a place a collision can happen, a place two paths can cross, a place someone has to yield. You do not feel this at three drones in a demo. You feel it hard at twenty in a warehouse.

We wanted the number, not the intuition. So we ran the same set of missions at four fleet sizes, twice each: once with no coordination layer (agents plan for themselves and hope), and once through our deterministic coordination stack — same map, same start and goal positions, same random seed. We counted collisions.

0 10 20 30 40 50 2 0 6 agents 11 0 10 agents 36 0 16 agents 51 0 20 agents Uncoordinated Coordinated (same seed)
Collisions per mission set, identical scenarios. Uncoordinated fleets: 2 → 11 → 36 → 51. Coordinated: 0 at every size.

The red bars are the point

Read the red bars left to right: 2, 11, 36, 51. That is not a line. Double the fleet from 10 to 20 and collisions do not double — they roughly quintuple. The curve bends upward exactly the way the pair-count math says it should, because the failure mode is not "a robot," it is "two robots wanting the same square inch at the same instant," and those opportunities pile up faster than the robots themselves.

This is why fleets that run beautifully in a three-unit pilot fall apart at scale. The pilot never touched the part of the curve that hurts. The bend is real, it is quadratic-shaped, and it is waiting past whatever fleet size your demo used.

The cyan bars are the product

Now read the cyan bars: 0, 0, 0, 0. Same maps, same seeds, same start and goal positions — the only variable changed is that a coordination layer sat between intent and motion and refused to hand out a path that conflicts with one already reserved.

The mechanism is deliberately unglamorous. Before any agent moves, it reserves the cells of space-time its path will occupy. If a cell is taken, the planner routes around it or the agent waits. It is a reservation table, not a negotiation, and that is the whole trick: there is no round of agents arguing, no model to prompt, no probability that two of them independently decide the same gap is theirs. The conflict is resolved before it can occur, so the collision count does not rise with fleet size — it stays pinned at the floor.

Why not just let each robot avoid the others?

Because local avoidance is exactly what produced the red bars. Every uncoordinated agent in that run was trying to avoid the others — it just did so with only its own view of the world. Two agents can each make a locally sensible dodge that puts them on a new collision course, then dodge again, and deadlock in a doorway. Reactive avoidance does not have the global picture, so it cannot guarantee the global property. It degrades precisely when you need it most: dense space, many agents, tight timing.

A coordination layer has the one thing each robot lacks — the whole plan, all agents at once — and it commits the joint schedule up front. That is the difference between "everyone tries their best" and "no two paths were ever allowed to cross."

What this means if you are about to scale a fleet

Three things fall out of this curve:

We built Cascade Dynamics to be the layer that keeps the cyan bars flat. You type the mission in plain language; the platform compiles it, reserves the space-time up front, and returns evidence you can check. The collision curve is real. The point of a coordination layer is to make sure your fleet never rides up it.

Want to see the flat line for yourself? The open beta runs simulated fleets you can scale up in the browser, and the claims ledger shows how every number here was measured.

See it in 60 seconds

Type a mission in plain English; a fleet coordinates itself, and every run ends in signed, verifiable evidence. The demo runs with zero setup.

Join the open beta → Zero-dependency demo: github.com/Cascade-Dynamics-AI/hello-swarm
Every claim, measured: cascadedynamics.ai/claims