The detector paints its own diagnostic overlay on every frame — box, centre dot, four labels and a
translucent status bar. Below, that overlay is rebuilt from the exact cv2 calls in the
node, so you can drag the range and watch the moment it declares itself positioned.
Every element here is drawn where the node draws it: the box turns green only when
|distance_error| < 0.1, the labels stack upward from y1 − 10 in 20 px
steps, and the status line flips only when the range and the horizontal offset are both
inside tolerance.
The background is schematic. The overlay geometry, colours, text format and thresholds are taken from realsense_basket_detector.py:333–431; the scene behind it is drawn to give the overlay something to sit on.
Positive means the hoop is to the left — the sign is flipped on :315.
target_distance. See finding 1.
Each clip carries a timed annotation track: boxes and captions appear over the video as playback reaches them, and the chapter buttons seek straight to a moment.
Boxes and captions are keyed to timestamps taken from the footage itself, so they appear as playback reaches them. The chapter buttons under each clip jump straight to a moment. Where a clip carries its own on-screen caption — “SHOOTING FROM 2POINT ZONE” and the like — the annotation ties it back to the constant in the firmware that produces it.
Wide arena shot, 22 s. Bot 1 works the court in front of the crowd and puts up a shot at the far hoop around the 15-second mark.
Practice room, 23 s. The clip labels its own two segments — the 2-point zone up close, then the 3-point zone from across the room. That is the distinction the three PWM presets exist to serve.
31 s, front on. The clearest look at the build: the octagonal chassis deck, the mast, the launcher head, and the second robot that feeds it.
Tracks are inline JSON inside each figure. Coordinates are percentages of the video frame, so they survive any resize. Add, edit or retime an annotation by editing this block — no build step.
{
"annotations": [
{
"start": 4, // seconds
"end": 9,
"label": "Approach", // chapter button text
"note": "Closing on the hoop…",
"boxes": [
{ "x": 44, "y": 22, "w": 18, "h": 20,
"label": "hoop", "colour": "cyan" }
]
}
]
}
colour accepts cyan, green, violet or is
omitted for the default orange. Boxes with no label render without a tag.