# High Speed Multi barcode tracking lab notes

**URL:** <https://talk.observablehq.com/t/high-speed-multi-barcode-tracking-lab-notes/10764>\
**Category:** Show and tell\
**Created:** [August 14, 2026, 6:58am UTC](https://talk.observablehq.com/t/high-speed-multi-barcode-tracking-lab-notes/10764 "2026-08-14T06:58:36Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![tomlarkworthy](https://yyz2.discourse-cdn.com/flex030/user_avatar/talk.observablehq.com/tomlarkworthy/32/5940_2.png) [@tomlarkworthy](https://talk.observablehq.com/u/tomlarkworthy)\
**Post date:** [August 14, 2026, 6:58am UTC](https://talk.observablehq.com/t/high-speed-multi-barcode-tracking-lab-notes/10764/1 "2026-08-14T06:58:36Z")

</div>

> **[Fast Multi-Target Circular Barcode Pose Tracking](https://observablehq.com/@tomlarkworthy/coded-landmark-tracking)**
>
> Part V of a super long \\\\ , 2012\\\\ and infrequently worked on project for fast optical localization. In this installment I added Detect multiple circular barcodes in the scene Decode them so each has an unambiguous code for matching Compile into WASM...

I been working on Optical tracking on and (mostly) off for 14 years now. I finally have the algorithm in my head more or less working. The killer feature is recognizing a circular barcode from a single pixel row scan, so unlike QR codes that have to buffer a full frame, this can recognize as the bits as they stream off the sensor, and some sensors allow customization of that so you can choose to scan less rows at a higher framerate (actually putting it in hardware would be next step).

Quite a big (16Mb) but interactive notebook trying to explain all the tricks we can use to quickly recognize a circular barcode under perspective shift. As this is for robotics, it detects barcodes at different angles, each barcode carries a label which make registration with a template for fusion across barcodes easier. It was for this notebook I added an assembly script compiler so we can do parallel scan line detection without JS optimization warmup. Its fast out of the gate, so it might one day be used in a control loop for a robot arm.
