Nobody Is Operating These Cameras

I built a robot soccer field. Then I discovered the boring truth about robot soccer: the matches are fun to be at and nearly unwatchable on video. One fixed camera in the corner of the room turns a fast, scrappy game into eight indistinguishable dots milling around a beige rectangle. The interesting thing is always happening somewhere the camera isn't pointed.

The obvious fix is a camera operator. The problem with a camera operator is that it's me, and I'd rather be running the match.

So I wrote Auto Producer: a single Python process that watches the field, physically aims two pan-tilt cameras at the ball, decides which camera should be on air, tells OBS to cut to it, and renders the scoreboard, with nobody in the chair. It's about 8,500 lines across 26 files, and it has taught me more about control loops and the gap between "the math says" and "the servo does" than anything else I've built.