FixTheRobot Explore Robotics / Perception / P7 / P7-L2

This lab works on phones, but writing code is much easier on a laptop.

Perception · Multi-Object Tracking and Temporal Perception · P7-L2 · Intermediate

Repair an Object-Association Algorithm

The tracker works with two objects and falls apart with six: every time two tracks compete for one detection, the one that goes first wins and the other is left with something far away.

You will size the gate, make the assignment optimal, and gate with each track’s own uncertainty.

Your task

    Simulation
    solution.pyLoading Python…
    Ctrl+Enter runs
    What Python can I use?

    Plain Python with math (and slamkit for small matrix helpers: matmul, transpose, solve, inverse, identity). Images, point clouds and detections arrive as lists inside the dictionary D; an image is a list of rows, each row a list of pixels. There is no NumPy or OpenCV: you write the algorithm yourself, which is the point of the lab. Print with print().

    Hints

    What this lab teaches

    Stage 1 sizes a fixed gate. Stage 2 writes an optimal assignment that first maximises the number of pairs and then minimises the cost. Stage 3 builds a statistical-distance cost with per-track uncertainty. All positions are simulated. Your code is graded on hidden cost matrices and cases.

    Theory for this lab

    Multi-Object Tracking and Temporal Perception labs

    1. P7-L1: Track Moving Objects Across Simulated Frames
    2. P7-L2: Repair an Object-Association Algorithm: this lab.
    3. P7-L3: Investigate How Noisy Detections Affect Track Quality
    4. P7-L4: Recover from Temporary Occlusion

    Educational simplification: points in the plane, independent Gaussian noise, diagonal covariance, and a brute-force assignment for at most seven rows and columns. Production trackers use the Hungarian algorithm or similar polynomial methods, full covariance matrices, and appearance cues. All data in this lab are simulated.

    Get the next lab

    Get notified when new robotics labs are released. One email per new lab, nothing else.