Φferromotion · textbook · chapter 16 rust → wasm · on-device
Turning to fit
Modern robots increasingly see the world as a cloud of little 3D Gaussians, the native output of splat reconstruction. FOCI checks collision directly on that map: the overlap between two Gaussians has a closed form, and because the robot's own Gaussians rotate with it, an elongated body can turn to slip through a gap it would smash into head-on. This page runs that overlap-integral collision on your device.
01: the map is Gaussians
A 3D Gaussian-splat reconstruction represents a scene as thousands of small anisotropic blobs. Rather than meshing that into boxes and spheres, throwing away the very shape information the splats encode: FOCI keeps the Gaussians and asks a cleaner question: how much do two Gaussian density fields overlap? That overlap integral has an exact closed form, a single Gaussian in the separation of their means under their summed covariance. It is smooth, cheap, and, the key property: it knows about shape and orientation, not just distance between centers.
02: orientation is a control input
Below, two obstacle Gaussians wall off a corridor, leaving a narrow slot in the middle. The robot is a single Gaussian, deliberately long and thin. Drag it toward the slot and rotate it with the slider. Its colour is its collision cost, green is clear, red is jammed. Pushed in broadside, the long axis spans the walls and the cost flares red; rotate it to line up with the corridor and it threads through, green.
a conservative box or sphere around this robot could never fit, only its true orientation-aware shape does
03: why a box would fail here
The usual shortcut is to wrap the robot in a bounding box or a sphere and keep that clear of obstacles. But a bounding box of a long thin robot is nearly as wide as it is long: it can never fit through a slot narrower than the robot's length, no matter how you turn it. The robot physically fits; the conservative model says it doesn't. FOCI avoids that by scoring the actual Gaussian overlap, so the planner is free to use orientation as a way through, exactly what lets a legged robot slip sideways between two rocks.
04: the checkHead-on vs turned
On load, this page measured the collision cost of entering the slot broadside (yaw 0°) versus turned to align with it (yaw 90°), at the slot's center:
| collision cost head-on (yaw 0°) | … |
| collision cost turned to align (yaw 90°) | … |
| turning cuts the cost by | … |
| verdict | … |
Same position, same robot, same obstacles, only the orientation changed, and the collision cost collapsed. A model that scored collision from position alone would report the same value for both and never find the way through.
05: the pointCollision belongs to the pose
Score collision as the overlap of the actual Gaussians, the map's and the robot's, and orientation stays in the cost where a planner can exploit it. A tight slot is not a wall; it is an invitation to rotate.
FOCI closes the geometry side of the book the way the planning chapters closed the optimization side: keep the real structure of the problem instead of a conservative surrogate, and the solutions hiding in that structure become reachable. On a real Gaussian-splat map of a room, the same overlap integral scores a whole robot against hundreds of thousands of splats, and the robot turns to fit.
What you just drove: the foci overlap-integral collision from ferromotion-core, compiled to WebAssembly, the same code the native tools link against. Every frame sums the closed-form overlap of the robot's Gaussian against each obstacle Gaussian at the current pose; nothing precomputed.
Verified in the library: the closed-form overlap integral matches Monte-Carlo integration of the product of the two Gaussian densities (rel err <1%); the kernel is 1 at coincident means and decays monotonically to ~0; its gradient matches finite differences; and turning an elongated robot to align with a slot cuts its collision cost to under a quarter of the head-on value. Each is a test in cargo test, not a claim in prose. See also ch.15, landing a rocket · the full textbook.
Institute for Physical AI · the Rust library · crates.io