Project

FutBot Tracker

FutBot Tracker helps robot-soccer video analysts inspect robot and ball tracks, possession states, annotated footage, and movement heatmaps.

Period
June 2026
Status
Competition entry
Stack
Python 3.12SAM 3UltralyticsOpenCVNumPyPyYAML

The pipeline

Two seconds of robot soccer. Every frame accounted for.

Source clip, 60 frames at 30 fps · overlay drawn from the exported tracks
Frame 0 / 600.00 s
  1. 1 · Detection0 objects this frameOpenCV boxes refined by SAM 3 masks
  2. 2 · Confidenceno objects this frameper-object detection score
  3. 3 · Tracker0 robots · ball lostclass-aware, velocity-predicted
  4. 4 · Possessionunknown · no owner yetobserved · inferred · free · unknown
Ball #1
Team B #2
Team A #3
Team B #4
Possession
Observed 43Inferred 16Unknown 1Not detected

What it does

Robot-soccer video in, robots, ball and possession out.

  • Detects and tracks every robot and the ball, frame by frame.
  • Says who has the ball, and how sure it is.
  • Exports annotated video, heatmaps and data files.
97.7%of frames with the ball in view found, with no false hits when it's hidden
43 · 16 · 1possession states: observed, inferred, unknown

01Context

The problem,and my part in it.

The problem

Robot-soccer footage combines small moving objects, dark robot bodies, colored team markers, an orange ball, and intermittent occlusion. A useful output needs both object locations and continuity: a sequence of boxes alone does not tell a viewer which robot is moving or which robot is nearest to the ball.

What I did

I designed and built the whole pipeline, from raw video to tracked robots, ball and possession, and submitted the entry.

  • Ran fast colour-and-shape proposals first and let SAM 3 refine only those boxes, which keeps the heavy model cheap.
  • Wrote a custom tracker that keeps each robot's team and identity through occlusions.
  • Built a possession estimator that says when it's guessing: observed, inferred or unknown.
  • Delivered annotated video, heatmaps, data exports and automated tests.

02Decisions

How it was built,and why.

Decision 01Use OpenCV proposals before SAM 3

Candidate boxes make the boundary between domain rules and mask refinement inspectable. Full-frame independent model discovery is an alternative architecture; this implementation refines regions selected by color and geometry.

03Occlusion

When the ball hides behind a robot,the tracker says so.

Observed · 43

The ball is visible: possession goes to the nearest robot within reach.

Inferred · 16

The ball is hidden: the last owner is carried forward, marked as an estimate.

Unknown · 1

No owner yet: it says so instead of picking one.

04Next

Where it goesfrom here.

  1. 01

    Make it run on new footage without retuning the color ranges by hand.

  2. 02

    Evaluate on longer matches and several camera setups.

  3. 03

    Compare the custom tracker with established tracking methods.

Next projectInteractive MATLAB European Option Pricer