Tracking

Current SS-TWR, scheduling and sensor fusion, measured limits, and the future TDoA migration.

Tracking — current prototype and next architecture

The prototype uses SS-TWR multi-poll UWB position + BMI270 IMU aim. Gateway-driven anchor selection and approximate Wi-Fi TDMA run today; uplink TDoA is the future migration. Reviewed 14 November 2026.

2
Wands in the recorded physical tests
5
Anchors in the latest recorded list
200 ms
Current TDMA superframe · 8 × 25 ms
12–16
Product target · capacity unverified
Latest evidence, 13 November: both wands run ESP 2.3.23-imu and DWM v1.7.1. Movement and static tests recorded no reboot, but DF18 still lost frames and changed relative heading; some ranges were inconsistent with anchor geometry. These results do not establish absolute accuracy, reliable aim or 12–16-wand capacity. Static results · Movement analysis.

Current data path

The wand computes distances from anchor replies and uploads them. The gateway filters position; gyro-based orientation supplies aim. The wand samples IMU at 200 Hz, decimates tracking samples to 100 Hz and batches them into 30 UDP datagrams/s. These rates are distinct from UWB cycles.

Future TDoA

Wands would send blinks; synchronized anchors would timestamp reception and report those records to a new gateway correlation/solver path. Current anchors do not do this. PoE splitters provide power; management data remains Wi-Fi.

Canonical reference: docs/UWB_TDMA_PLAN.md; wiring and status: anchor and wand. Both tested wands contain the shared ten-class BMI270 model; a missing/incompatible model disables gesture casting. Training and model state are documented in docs/GESTURE_LEARNING.md.

Capacity — measure the whole cycle

What the current map means

The checked-in map is 200 ms, eight 25 ms cycle-start slots, with nominal 5 Hz UWB updates. The current scheduler explicitly pauses surplus assignments instead of sharing start slots. Its two-wand deployment does not validate physical capacity or over-capacity behavior with a larger fleet. The scheduler cannot stop a radio exchange at a slot boundary, and Wi-Fi delivery jitter can overlap starts.

The old 100 ms / 16 × 6 ms / 8–10 Hz model assumed an exchange time that later hardware measurements did not support. It is not a measured capacity curve.

Installed versus ranged anchors

The latest test uses five anchors per wand. Geometry, redundancy and NLOS resilience must be balanced against airtime; automatic selection uses a geometry heuristic. More physical anchors are a coverage option, not a promise of free capacity.

Measure 1/2/4/8/12/16 physical wands: distinct cycle rate, reply success, position error, p95/p99 gaps, latency and moving behavior. Twelve to sixteen players remains a product target.

Future scaling work: uplink TDoA. It can reduce tag airtime, but needs synchronized anchor radio clocks, receive-timestamp reporting and a gateway time-difference solver. No TDoA capacity figure is validated yet.

Source: docs/UWB_TDMA_PLAN.md and the later deployment sections of docs/testing/2026-11-05-offline-incident-notes.md.

TDMA + CSMA — sharing UWB airtime

SS-TWR defines how distance is measured. TDMA and CSMA define when a wand may transmit. The current prototype supports them together.

TDMA: approximate start times

Gateway assigns 8 × 25 ms slots in a 200 ms superframe and sends a Wi-Fi time reference every 1 s. Installed wand firmware atomically claims at most one cycle per assigned superframe and pauses new ranging without fresh Wi-Fi sync. With the current 1 s sync cadence, the freshness limit is 5 s. Two-wand starts remain 100 ms apart. An in-flight cycle may continue beyond its start slot; this is not a hard airtime reservation.

CSMA: listen before the poll

DWM v1.6.0 added channel listening with bounded random backoff, up to six attempts. In v1.7.0 it guards the single multi-poll. It can reduce some collisions but adds variable delay and cannot eliminate hidden terminals or nearly simultaneous starts.

Multi-poll: one poll, ordered replies

DWM v1.7.0 lists the anchors in one poll; each responds in its assigned response slot. The wand still calculates a separate SS-TWR distance for every reply. These anchor response slots are distinct from gateway-assigned wand start slots.

200 ms superframe · 8 × 25 ms cycle-start slots0–25 ms25–50 ms50–75 ms75–100 ms100–125 ms125–150 ms150–175 ms175–200 msCycle starts are spread across the frame; Wi-Fi jitter and overruns can still cause overlap.
Profile verified again on 12 November: both wands use CSMA and multi-poll on UWB channel 9 with five anchors. DWM defaults remain off until the ESP applies its saved settings. The earlier two-wand A/B test compared TDMA, TDMA+CSMA and CSMA without separated start slots; it did not establish a fleet-scale winner.
Limits: Wi-Fi slot timing is not TDoA radio-clock sync. A UWB sync beacon is not implemented. Adaptive half-rate/anchor-count fields remain advisory; explicitly pausing surplus assignments does not implement adaptive rate or anchor-list control. The former 16-wand ≥8 Hz Gate B is unpassed.
Installed updates: DWM v1.7.1 was verified on both wands and five anchors on 12 November; both wand ESPs now have 2.3.23-imu. A full slot map sends enabled: false to surplus wands. Since installed 2.3.22, advancing sync references within the tolerated 1 s delay band renew liveness without moving the best slot phase; replayed/stale queued references do not. The 20-minute USB static comparison recorded no ≥1 s new-RF gaps after the fix; this is not accuracy or fleet acceptance. Freshness fix and measurements.

Future TDoA needs new anchor sync, timestamp/backhaul records and solver work. Source: docs/UWB_TDMA_PLAN.md.

Tracking fusion — current range filter and future optical correction

Checked 2026-11-14. Current position comes from SS-TWR UWB ranges + gateway range-domain Kalman filtering; BMI270 provides relative aim and fast inertial input. The prototype operates without cameras. Current tracking and TDoA migration reference.

IMU and aim

One 200Hz BMI270 sampler, 100Hz tracking samples, 30Hz UDP batches. Gyro bias learning, rest detection/ZUPT and explicit arena alignment help, but six-axis sensing has no absolute yaw reference. Position accuracy and aim drift are separate problems.

UWB and position

DWM v1.7 multi-poll SS-TWR, up to five anchors per wand. Current configured start schedule is 200 ms / eight 25ms slots: nominal 5 cycles/s, not a guaranteed radio/frame rate. CSMA can additionally guard transmission. Neither is TDoA or precise anchor clock synchronization.

Current estimation

The gateway already uses range-domain Kalman prediction/correction, range gating, uncertainty and recovery handling. It is not merely a confidence-weighted average waiting for its first estimator. NLOS, correlated range bias, survey geometry and sparse corrections remain material limits.

Measured does not mean fleet-qualified. Real stationary/walking tests exist. In the 13 November static test, DF18 lost 2.24% of frame sequences; its longest arrival gap was 1,187ms versus 403ms between recorded new RF timestamps. Relative heading changed −7.34° on DF18 / −0.70° on DE54 between the first/last 60s windows of 13 minutes of nominal rest; physical stillness was not independently instrumented. Do not extrapolate this to 12–16 moving players or repeat the old 8–10Hz-at-16-wands forecast. Fixed-height overrides only describe physically constrained tests.

Future optical yaw correction

Passive retroreflective bands on the wand, read by camera-side 850nm illumination, remain a future design. No active IR electronics on the wand. Sparse camera trials must establish detection, ID separation, aim error, haze behavior and capture-time integration before arena purchasing or an optical-accuracy claim. More advanced optical/inertial fusion remains future work; the implemented range filter does not prove it.

Future retro band concept: tip double-band and spacing identity

Concept illustration, not a validated camera installation. The tip double-band and registered band spacing are proposed roll-tolerant orientation/identity cues.

TDoA is a separate migration

Tags would blink; anchors would timestamp reception and forward observations in a shared radio-time model. Current anchors reply to TWR polls and do not stream that timestamp data. New synchronization, backhaul/firmware and a TDoA solver need design and validation. A PoE power splitter supplies none of those automatically.

Optics and effects

Camera-side IR needs its own installation assessment. Dense haze can reduce optical visibility; UWB/IMU operation and validated degradation behavior matter independently. The finished visible laser assembly has no established Class 1 classification from a seller label or attenuation cover alone.

Coordinate/calibration reference · Optical design and gates · Evidence and risk register