Rolling Buffer Capture and Spin Detection¶
OpenFlight uses the OPS243-A rolling buffer for production shot capture. Spin estimation from that capture remains experimental.
Capture pipeline¶
- The SEN-14262 detects impact and triggers the OPS243-A through
HOST_INT. - The radar freezes and returns 4,096 I samples and 4,096 Q samples.
RollingBufferProcessorextracts ball and club speed from short FFT windows.- An overlapping timeline separates the club, impact, and ball regions.
- An ungated multitaper estimator records an experimental spin candidate.
The normal kiosk command uses this pipeline:
One-time radar setup¶
The OPS243-A firmware changes the HOST_INT behavior when rolling-buffer mode
is entered at runtime, so the mode has to be saved to flash once and the radar
power-cycled — see Rolling buffer setup.
The runtime then starts in the persisted GC rolling-buffer mode without
re-entering it. See Sound trigger wiring for the
recommended direct hardware trigger.
Current defaults¶
| Setting | Value |
|---|---|
| OPS243-A mode | Persisted rolling buffer (GC) |
| Sample rate | 30,000 samples/s |
| Capture | 4,096 I + 4,096 Q samples |
| Capture duration | About 136.5 ms |
| Pre-trigger split | 16 of 32 blocks |
| Speed window | 128 samples |
| FFT size | 4,096 |
| Overlap step | 32 samples (937.5 windows/s) |
| Production trigger | SEN-14262 GATE to OPS243-A HOST_INT |
Use --buffer-split post-heavy when more post-impact data is needed, or
--buffer-split pre-heavy when the club approach matters more:
Experimental spin output¶
Every valid capture runs the ungated multitaper estimator. Its candidate:
- is labeled EXPERIMENTAL in the UI;
- is logged as
spin_method: "multitaper_ungated"; - is constrained to 1,500–11,000 RPM; and
- does not drive spin-adjusted carry.
Treat individual values as evaluation data, not ground truth. Multipath and capture geometry can produce plausible but incorrect candidates, and current blind validation is not accurate enough for production carry calculations.
For offline comparison and estimator work, use Spin Replay and Diagnostics. Raw captures are stored in the session JSONL logs described in the observability guide.