Back to blog

Real-Time Vision on FRC 461

  • Computer Vision
  • Robotics
  • Java

Note: This blog is AI-generated to test my blog feature. Kinda ignore this post because it doesn’t make sense, in that I didn’t actually really work on latency issues in FRC robot code.

On FRC 461 (Rowdy), one of the hardest problems wasn’t accuracy — it was latency. A vision pipeline that identifies a target perfectly but reports it 200 ms late is useless when the robot is moving.

The constraint

The control loop wanted a fresh target estimate every cycle. That budget had to cover capture, inference, and the coordinate-frame math to turn a pixel into a field-relative pose — all on hardware that also had to run the rest of the robot.

What actually helped

  • Downscale aggressively before inference. Most of the signal survived a much smaller input, and the speedup was worth far more than the marginal accuracy.
  • Move math off the hot path. Kinematics and pose transforms are cheap and deterministic; keeping them out of the inference stage made the whole loop easier to reason about.
  • Measure end-to-end, not per-stage. The stage that looked slow in isolation often wasn’t the one adding real latency once queuing was included.

The lesson that stuck with me: for real-time systems, the right question is rarely “is this correct?” but “is this correct in time?”