Each choice is a constraint from the challenge, not a default stack.
Detection, not a single label
YOLOv5, one box per hand
A classifier would score the whole frame. The hand is not centered, and a hard case we cared about puts two hands in one image doing different things.
A detector localizes each hand and labels it on its own. The published examples show two skip boxes in a single frame, at 0.88 and 0.86.
Poses instead of a video model
Still frames of the swipe, not a temporal network
Skip is a motion. A video model would have needed a longer window and more of the latency budget, and we had two days.
A swipe is a sequence of pointing poses. If those poses are in the dataset, a per-frame detector can fire on the gesture without waiting for a clip.
That is also why a sideways thumb works as a backup skip when a full swipe is awkward while holding weight.
Edge Impulse, because the example model was the wrong gestures
Train on the floor, export .eim, load it in App Lab
Qualcomm’s Uno Q example showed how to get a detector onto this board. Its weights did not include palm, swipe, or thumbs-up.
We kept the deployment path and replaced the model. Edge Impulse was the route that turned a labeled set into the aarch64 impulse the video brick already knew how to run.
Split the board on purpose
Python for vision, the sketch for actuators
The Uno Q is a Linux computer attached to a microcontroller. The camera and YOLO belong on Linux. The matrix, buzzer, and pixels belong on the MCU, where the music state machine can run without waiting on Python for every note.
Calling across the bridge, instead of only notifying, makes the latency number include the moment the command is actually accepted.
Light and sound, not a screen
Onboard matrix, Modulino buzzer, Modulino pixels
The worker’s hands are full, and the point of the device is that they do not look down at a panel.
The matrix is the command echo (thumbs-up, pause bars, fast-forward). The buzzer is the same echo in sound. The pixel strip is a running display of the note, so skip is visible as the lights flushing to the next tune.
Failures picked the next photos
About a 30-minute loop: train, deploy, find the miss, shoot that miss, retrain
Adding random hands did not fix the confusions we could already name.
Swipe and thumbs-up collided, so we photographed both in the same frame and the mix-up dropped.
Open palm was next: missed entirely, or called swipe, or called thumbs-up. The following batches were palms at new angles, distances, people, and backgrounds.
Eleven-plus retrains, not one big collect-and-train.
A hotspot, because the hall Wi-Fi would not
SSH from the laptop to the Uno Q
We did not have the USB hub the bring-up assumed, and the venue network blocked device-to-device traffic.
Terek’s phone hotspot put the laptop and the board on one network so we could deploy and read logs without the hub. That is what kept the 30-minute loop possible on the show floor.