diff --git a/tech-review/CONVENTIONS.md b/tech-review/CONVENTIONS.md index ed226e6..62316a4 100644 --- a/tech-review/CONVENTIONS.md +++ b/tech-review/CONVENTIONS.md @@ -1,188 +1,215 @@ -# Contributing to the Technology Review - -This document is written to grow — from its current ~60 pages toward a -textbook-scale reference — and to be edited by many people and agents over time, -eventually published on the AffineDrift site. These conventions exist so that -independent edits compose cleanly instead of colliding. - -**Read this before editing any `.tex` file.** - -## 1. Repository layout - -``` -tech-review/ -├── main.tex # skeleton only: \input lines, nothing else -├── preamble.tex # packages, styling, macros — shared by all files -├── references.bib # the single bibliography database -├── build.ps1 # local build (Windows/MiKTeX) -├── CONVENTIONS.md # this file -├── README.md # reader-facing summary of the report -├── sections/ # one file per chapter or appendix -│ ├── abstract.tex -│ ├── 01-introduction.tex … 10-openflight-implications.tex -│ └── appendix-a-references.tex … appendix-d-patent-compendium.tex -└── research/ # raw research dossiers (provenance, not published) -``` - -**One chapter per file.** This is the core rule that makes parallel editing safe: -two agents working on different chapters never touch the same file. `main.tex` -holds only `\input` lines, so adding a chapter is a one-line change plus a new -file. - -## 2. Adding a chapter or appendix - -1. Create `sections/NN-slug.tex` (chapters) or `sections/appendix-X-slug.tex`. -2. Start it with `\chapter{Title}` and `\label{ch:slug}` (or `\label{app:slug}`). -3. Add one `\input{sections/NN-slug.tex}` line to `main.tex` in reading order. -4. Do **not** renumber existing files to make room — numeric prefixes are for - human sorting only, and gaps are fine. Renaming files breaks concurrent - branches. - -## 3. Labels and cross-references - -Always cross-reference by label, never by a literal number ("see Chapter 4" goes -stale the moment a chapter is inserted). Use `\cref{...}`, which supplies the -word ("Chapter 4", "Section 4.2") automatically. - -| Prefix | Used for | Example | -|--------|----------|---------| -| `ch:` | chapters | `\label{ch:radar}` | -| `app:` | appendices | `\label{app:patents}` | -| `sec:` | sections and subsections | `\label{sec:radarspin}` | -| `eq:` | equations | `\label{eq:sidebands}` | -| `tab:` | tables | `\label{tab:hierarchy}` | -| `fig:` | figures | `\label{fig:dplane}` | - -Label slugs are descriptive, not positional: `sec:radarspin`, not `sec:4-3-2`. -**Never change an existing label** — other chapters and future web anchors depend -on it. If a label's name becomes misleading, add the better one alongside it. - -## 4. Citations and the bibliography - -`references.bib` is the single source of truth. Never hand-write a bibliography -entry inside a section file. - -**Citation keys** -- Patents: `usNNNNNNN` — the US number without commas, e.g. `us8845442`. -- Everything else: a short lowercase slug, vendor or author first, then topic: - `trackmanoert`, `tutelmangear`, `an029`, `leach2017`. -- Keys are permanent. Renaming one silently breaks every `\cite` that uses it. - -**Every entry needs exactly one `keywords` value** from this list: - -| Keyword | Contents | -|---------|----------| -| `literature` | Peer-reviewed papers, books, conference proceedings | -| `patent` | Patents, portfolio indexes, IP and litigation records | -| `vendor` | Manufacturer technical documentation and product literature | -| `hardware` | Datasheets, application notes, protocols, standards, FCC filings | -| `community` | Independent testing, engineering references, forums, open-source projects | - -The printed bibliography is assembled from five keyword-filtered blocks in -`main.tex`, so **an entry with no keyword — or a typo'd one — silently vanishes -from the document.** After adding entries, confirm the counts match: - -```bash -grep -c '^@' references.bib && grep -c '\\entry{' main.bbl -``` - -**Web sources** need `url` and `urldate`. Prefer a DOI when one exists. Append -new entries to the end of their keyword section so concurrent additions don't -conflict in the same lines. - -## 5. Prose style - -- **One sentence per line.** Start each sentence on a new line and let it run - long rather than hard-wrapping mid-sentence. Diffs then show which *sentence* - changed instead of a reflowed paragraph, which makes review and merge far - cleaner. (Older text predates this rule; convert paragraphs to - sentence-per-line as you edit them, but don't reflow files you aren't - otherwise touching — that creates noise diffs.) -- Write in full sentences and define terms on first use. This is a reference - document that people will read out of order. -- Use the parameter definitions and coordinate conventions fixed in - `02-parameters.tex` (TrackMan conventions). Do not introduce a competing - convention in a later chapter. -- Tag every reported quantity as **measured**, **derived**, or **estimated** - when discussing what a system produces — this distinction is the spine of the - whole document (see `\cref{tab:hierarchy}`). -- Units go through `siunitx` (`\SI{24}{\giga\hertz}`) or the shorthand macros - below. American spelling. - -## 6. Available macros - -Defined in `preamble.tex` — use these instead of ad-hoc formatting: - -| Macro | Purpose | -|-------|---------| -| `\patent{US8845442B2}` | Patent number that hyperlinks to Google Patents | -| `\degs` | Degree symbol (`\si{\degree}`) | -| `\mph`, `\rpm` | Speed and spin units with correct spacing | -| `\vect{v}` | Bold vector | -| `\uvec{n}` | Unit vector (hat + bold) | -| `\begin{implication}…\end{implication}` | Green callout: what this means for OpenFlight | -| `\begin{keypoint}…\end{keypoint}` | Blue callout: a load-bearing conclusion | - -Add new macros to `preamble.tex`, never inline in a section. Watch for name -collisions with loaded packages: `\unit` was already claimed by `siunitx`, which -is why the unit-vector macro is `\uvec`. - -## 7. Evidence standard - -Every substantive technical claim must be traceable to either: -1. a `\cite` to an entry in `references.bib`, or -2. a source URL recorded in the matching dossier under `research/`. - -When new research is done, archive the raw dossier in `research/` in the same -pass that adds the prose. Distinguish clearly between what a source *states*, -what is *measured* in published testing, and what is *inferred* in this -document — vendor marketing routinely blurs the measured/derived boundary and -the report's value depends on not repeating that. - -## 8. Building - -**Locally (Windows/MiKTeX):** - -```bash -pwsh tech-review/build.ps1 -``` - -**Locally (TeX Live / Linux / macOS):** - -```bash -cd tech-review && latexmk -pdf main.tex -``` - -`latexmk` runs biber automatically. The manual sequence is -pdflatex → biber → pdflatex → pdflatex; a single pass will show `[?]` citation -marks and a stale table of contents. - -**In CI:** `.github/workflows/tech-review.yml` compiles the document on every -push and pull request that touches `tech-review/`, fails on LaTeX errors and on -undefined citations or references, and uploads the built PDF as a workflow -artifact. If you cannot build locally, open a pull request and read the CI log — -that is the authoritative check. - -**Do not commit build artifacts.** `.aux`, `.bbl`, `.bcf`, `.log`, `.out`, -`.toc`, `.run.xml`, `.fdb_latexmk` and `.fls` are gitignored. (`main.pdf` is -currently still tracked for convenience; once the document is published from the -AffineDrift site it should be dropped from version control and taken from the CI -artifact instead, since a binary that changes on every edit is a guaranteed -merge conflict between parallel contributors.) - -## 9. Growth path - -Planned evolution, recorded here so contributors build in a compatible direction: - -- **Document class.** When the chapter count outgrows a flat `sections/` - directory, switch `report` to `book` and group chapters under `\part` - divisions with per-part subdirectories. Stable labels (§3) make this - mechanical. -- **Web publication.** LaTeX stays canonical. The AffineDrift site will be fed - by a CI-generated HTML rendition (`make4ht` or LaTeXML — both handle this - document's math, tables, and hyperlinks). Two consequences for authors: keep - math in real LaTeX environments rather than images, and keep tables - semantically simple so they convert well. -- **Splitting.** If a chapter passes roughly 25 pages, split it into a - subdirectory of `\input` fragments rather than letting one file grow - unbounded — long files are where concurrent edits start colliding again. +# Contributing to the Technology Review + +This document is written to grow — from its current ~60 pages toward a +textbook-scale reference — and to be edited by many people and agents over time, +eventually published on the AffineDrift site. These conventions exist so that +independent edits compose cleanly instead of colliding. + +**Read this before editing any `.tex` file.** + +## 1. Repository layout + +``` +tech-review/ +├── main.tex # skeleton only: \input lines, nothing else +├── preamble.tex # packages, styling, macros — shared by all files +├── references.bib # the single bibliography database +├── build.ps1 # local build (Windows/MiKTeX) +├── CONVENTIONS.md # this file +├── README.md # reader-facing summary of the report +├── sections/ # one file per chapter or appendix +│ ├── abstract.tex +│ ├── 01-introduction.tex … 10-design-guidance.tex +│ └── appendix-a-references.tex … appendix-d-patent-compendium.tex +└── research/ # raw research dossiers (provenance, not published) +``` + +**One chapter per file.** This is the core rule that makes parallel editing safe: +two agents working on different chapters never touch the same file. `main.tex` +holds only `\input` lines, so adding a chapter is a one-line change plus a new +file. + +## 2. Adding a chapter or appendix + +1. Create `sections/NN-slug.tex` (chapters) or `sections/appendix-X-slug.tex`. +2. Start it with `\chapter{Title}` and `\label{ch:slug}` (or `\label{app:slug}`). +3. Add one `\input{sections/NN-slug.tex}` line to `main.tex` in reading order. +4. Do **not** renumber existing files to make room — numeric prefixes are for + human sorting only, and gaps are fine. Renaming files breaks concurrent + branches. + +## 3. Labels and cross-references + +Always cross-reference by label, never by a literal number ("see Chapter 4" goes +stale the moment a chapter is inserted). Use `\cref{...}`, which supplies the +word ("Chapter 4", "Section 4.2") automatically. + +| Prefix | Used for | Example | +|--------|----------|---------| +| `ch:` | chapters | `\label{ch:radar}` | +| `app:` | appendices | `\label{app:patents}` | +| `sec:` | sections and subsections | `\label{sec:radarspin}` | +| `eq:` | equations | `\label{eq:sidebands}` | +| `tab:` | tables | `\label{tab:hierarchy}` | +| `fig:` | figures | `\label{fig:dplane}` | + +Label slugs are descriptive, not positional: `sec:radarspin`, not `sec:4-3-2`. +**Never change an existing label** — other chapters and future web anchors depend +on it. If a label's name becomes misleading, add the better one alongside it. + +## 4. Citations and the bibliography + +`references.bib` is the single source of truth. Never hand-write a bibliography +entry inside a section file. + +**Citation keys** +- Patents: `usNNNNNNN` — the US number without commas, e.g. `us8845442`. +- Everything else: a short lowercase slug, vendor or author first, then topic: + `trackmanoert`, `tutelmangear`, `an029`, `leach2017`. +- Keys are permanent. Renaming one silently breaks every `\cite` that uses it. + +**Every entry needs exactly one `keywords` value** from this list: + +| Keyword | Contents | +|---------|----------| +| `literature` | Peer-reviewed papers, books, conference proceedings | +| `patent` | Patents, portfolio indexes, IP and litigation records | +| `vendor` | Manufacturer technical documentation and product literature | +| `hardware` | Datasheets, application notes, protocols, standards, FCC filings | +| `community` | Independent testing, engineering references, forums, open-source projects | + +The printed bibliography is assembled from five keyword-filtered blocks in +`main.tex`, so **an entry with no keyword — or a typo'd one — silently vanishes +from the document.** After adding entries, confirm the counts match: + +```bash +grep -c '^@' references.bib && grep -c '\\entry{' main.bbl +``` + +**Web sources** need `url` and `urldate`. Prefer a DOI when one exists. Append +new entries to the end of their keyword section so concurrent additions don't +conflict in the same lines. + +## 5. Prose style + +- **One sentence per line.** Start each sentence on a new line and let it run + long rather than hard-wrapping mid-sentence. Diffs then show which *sentence* + changed instead of a reflowed paragraph, which makes review and merge far + cleaner. (Older text predates this rule; convert paragraphs to + sentence-per-line as you edit them, but don't reflow files you aren't + otherwise touching — that creates noise diffs.) +- Write in full sentences and define terms on first use. This is a reference + document that people will read out of order. +- Use the parameter definitions and coordinate conventions fixed in + `02-parameters.tex` (TrackMan conventions). Do not introduce a competing + convention in a later chapter. +- Tag every reported quantity as **measured**, **derived**, or **estimated** + when discussing what a system produces — this distinction is the spine of the + whole document (see `\cref{tab:hierarchy}`). +- Units go through `siunitx` (`\SI{24}{\giga\hertz}`) or the shorthand macros + below. American spelling. + +## 6. Available macros + +Defined in `preamble.tex` — use these instead of ad-hoc formatting: + +| Macro | Purpose | +|-------|---------| +| `\patent{US8845442B2}` | Patent number that hyperlinks to Google Patents | +| `\degs` | Degree symbol (`\si{\degree}`) | +| `\mph`, `\rpm` | Speed and spin units with correct spacing | +| `\vect{v}` | Bold vector | +| `\uvec{n}` | Unit vector (hat + bold) | +| `\begin{implication}…\end{implication}` | Green callout: a consequence an implementer must act on | +| `\begin{keypoint}…\end{keypoint}` | Blue callout: a load-bearing conclusion | +| `\begin{warning}…\end{warning}` | Red callout: a claim that is wrong, contested, or untraceable | + +### Neutrality + +This document is vendor- and project-neutral. Name a product only as +**evidence** — a published definition, a measured tolerance, a patent claim — +never as a design target or an endorsement. Write guidance for "an +implementer" or "a radar-first system", not for any particular project. If a +section can only be written by assuming one specific architecture, it belongs +in Chapter 10 as a capability tier, not in the body chapters. + +Add new macros to `preamble.tex`, never inline in a section. Watch for name +collisions with loaded packages: `\unit` was already claimed by `siunitx`, which +is why the unit-vector macro is `\uvec`. + +## 7. Evidence standard + +Every substantive technical claim must be traceable to either: +1. a `\cite` to an entry in `references.bib`, or +2. a source URL recorded in the matching dossier under `research/`. + +When new research is done, archive the raw dossier in `research/` in the same +pass that adds the prose. Distinguish clearly between what a source *states*, +what is *measured* in published testing, and what is *inferred* in this +document — vendor marketing routinely blurs the measured/derived boundary and +the report's value depends on not repeating that. + +## 8. Building + +**Locally (Windows/MiKTeX):** + +```bash +pwsh tech-review/build.ps1 +``` + +**Locally (TeX Live / Linux / macOS):** + +```bash +cd tech-review && latexmk -pdf main.tex +``` + +`latexmk` runs biber automatically. The manual sequence is +pdflatex → biber → pdflatex → pdflatex; a single pass will show `[?]` citation +marks and a stale table of contents. + +**Verify with the same flags CI uses, and check the exit code.** CI passes +`-halt-on-error`. Without it, pdflatex recovers from a fatal error, continues, +and still emits a PDF — so a log-grep for error strings can come back clean on a +build that CI will reject. Check `$LASTEXITCODE` (or `$?`) rather than trusting +a grep: + +```bash +pdflatex -halt-on-error -file-line-error -interaction=nonstopmode main.tex +``` + +Two failure modes worth knowing. An **undefined colour or macro** only surfaces +where it is *used*, which may be a chapter away from the definition you edited — +rename theme colours across `preamble.tex` *and* every `sections/*.tex` in the +same commit. And on Windows, an **open PDF viewer file-locks `main.pdf`**, which +makes pdflatex fail with "I can't write on file" and leaves a stale PDF in +place; build with `-jobname=verify` to check without touching the locked file. + +**In CI:** `.github/workflows/tech-review.yml` compiles the document on every +push and pull request that touches `tech-review/`, fails on LaTeX errors and on +undefined citations or references, and uploads the built PDF as a workflow +artifact. If you cannot build locally, open a pull request and read the CI log — +that is the authoritative check. + +**Do not commit build artifacts.** `.aux`, `.bbl`, `.bcf`, `.log`, `.out`, +`.toc`, `.run.xml`, `.fdb_latexmk` and `.fls` are gitignored. (`main.pdf` is +currently still tracked for convenience; once the document is published from the +AffineDrift site it should be dropped from version control and taken from the CI +artifact instead, since a binary that changes on every edit is a guaranteed +merge conflict between parallel contributors.) + +## 9. Growth path + +Planned evolution, recorded here so contributors build in a compatible direction: + +- **Document class.** When the chapter count outgrows a flat `sections/` + directory, switch `report` to `book` and group chapters under `\part` + divisions with per-part subdirectories. Stable labels (§3) make this + mechanical. +- **Web publication.** LaTeX stays canonical. The AffineDrift site will be fed + by a CI-generated HTML rendition (`make4ht` or LaTeXML — both handle this + document's math, tables, and hyperlinks). Two consequences for authors: keep + math in real LaTeX environments rather than images, and keep tables + semantically simple so they convert well. +- **Splitting.** If a chapter passes roughly 25 pages, split it into a + subdirectory of `\input` fragments rather than letting one file grow + unbounded — long files are where concurrent edits start colliding again. diff --git a/tech-review/README.md b/tech-review/README.md index 4e2cc95..ed42a3a 100644 --- a/tech-review/README.md +++ b/tech-review/README.md @@ -1,41 +1,41 @@ -# Launch Monitor Technology Review - -A comprehensive LaTeX technology review of how commercial golf launch monitors -work — radar physics, camera photogrammetry, patent landscape, and the -club/ball parameter calculations — written to guide OpenFlight development. - -> **Contributing?** Read **[CONVENTIONS.md](CONVENTIONS.md)** first — it covers file -> layout, labels, citation keys, prose style, and the build. This document is -> designed to grow toward a textbook-scale reference edited by many hands. - -- **[main.pdf](main.pdf)** — the compiled report (~65 pages) -- `main.tex` + `sections/` — LaTeX source (10 chapters + 5 appendices), one file per chapter -- `references.bib` — the bibliography database (80 entries, grouped by source category) -- `build.ps1` — local build; CI builds every PR via `.github/workflows/tech-review.yml` -- `research/` — the four raw research dossiers the report was synthesized from - (radar systems, camera systems, patents, physics/algorithms), with source - URLs for every claim -- `build.ps1` — compile script (MiKTeX pdflatex, 3 passes) - -## Report contents - -1. Introduction — sensing families, market convergence -2. Parameter definitions — TrackMan conventions, the measured/derived/estimated hierarchy -3. Impact physics — D-plane, face/path weighting, smash factor, spin generation, gear effect -4. Doppler radar systems — CW/FMCW, phase interferometry, harmonic-sideband spin, spin-axis inversion, OERT -5. Photometric systems — stereo photogrammetry, dimple-registration spin, fiducial club tracking, PiTrac -6. Commercial survey — architecture table for every major device -7. Patent landscape — TrackMan/Tuxen, Foresight/Wintriss, FlightScope/EDH, Acushnet, with freedom-to-operate map -8. Ball flight models — Smits–Smith / Quintavalla aerodynamics, EKF trajectory estimation -9. Accuracy — Leach 2017 and the validation literature -10. Implications for OpenFlight — phased roadmap (radar hardening → optical spin/impact module → fusion) - -Appendix A — Live reference library: every source as a clickable link, organized by category (patents, FCC filings, manufacturer docs, peer-reviewed literature, engineering references, DIY projects, comparative testing) - -Appendix C — Sensor hardware and integration reference: OPS243-A specs/API/rolling buffer + the AN-029 vendor golf recipe (which cites OpenFlight by name), K-LD7 datasheet + UART protocol, IWR6843 FMCW specifics, Pi Global Shutter XTR triggering, the full GSPro Open Connect schema, USGA equipment constants, and CFAR selection guidance - -Appendix D — Patent portfolio compendium: every identified US patent for TrackMan (all 45 on their legal page + 7 more), Topgolf Sweden/Toptracer, FlightScope/EDH, Full Swing (US11311789 grant), Garmin, Rapsodo, Foresight/Wintriss, Creatz/Uneekor, Golfzon, Acushnet (back to the ancestral 1977 US4136387), plus prior art (Sports Sensors, Weibel, Stalker) — each number hotlinked to Google Patents, with two attribution corrections (US10596416 family = Toptracer, not TrackMan) - -Appendix E — Clubhead kinematics from radar velocities: a screw-theoretic how-to — why Doppler measurements are exactly linear in the club's twist (reciprocal product of sight line and screw), what each OpenFlight sensor can observe (OPS243-A = 1D velocity distribution only; K-LD7 = wrong envelope; IWR6843 = full rigid-body estimation with custom chirps), a seven-step estimation recipe (OS-CFAR → segmentation → per-frame twist least squares → observability/SVD truncation → SE(3) smoothing with low-pitch and hub priors → impact-time evaluation → parameter projections including closure rate and ISA swing plane), and a four-stage validation plan; notes that ISA theory is established in golf biomechanics (Vena et al.) but no vendor publicly uses the screw formalism - -Appendix B — Detailed implementation guidance: OPS243-A DSP parameters (Doppler scaling, window/chirp trade-offs, comb spin estimation), K-LD7 interferometry + EKF/RTS smoother design, alignment calibration procedures, D-plane inversion with priors and gear-effect bounds, Phase-2 optical module design parameters (strobe timing, dimple registration), and the MLM2PRO validation protocol +# Launch Monitor Technology Review + +A comprehensive LaTeX technology review of how commercial golf launch monitors +work — radar physics, camera photogrammetry, patent landscape, and the +club/ball parameter calculations — a vendor-neutral technical reference. + +> **Contributing?** Read **[CONVENTIONS.md](CONVENTIONS.md)** first — it covers file +> layout, labels, citation keys, prose style, and the build. This document is +> designed to grow toward a textbook-scale reference edited by many hands. + +- **[main.pdf](main.pdf)** — the compiled report (~65 pages) +- `main.tex` + `sections/` — LaTeX source (10 chapters + 5 appendices), one file per chapter +- `references.bib` — the bibliography database (80 entries, grouped by source category) +- `build.ps1` — local build; CI builds every PR via `.github/workflows/tech-review.yml` +- `research/` — the four raw research dossiers the report was synthesized from + (radar systems, camera systems, patents, physics/algorithms), with source + URLs for every claim +- `build.ps1` — compile script (MiKTeX pdflatex, 3 passes) + +## Report contents + +1. Introduction — sensing families, market convergence +2. Parameter definitions — TrackMan conventions, the measured/derived/estimated hierarchy +3. Impact physics — D-plane, face/path weighting, smash factor, spin generation, gear effect +4. Doppler radar systems — CW/FMCW, phase interferometry, harmonic-sideband spin, spin-axis inversion, OERT +5. Photometric systems — stereo photogrammetry, dimple-registration spin, fiducial club tracking, PiTrac +6. Commercial survey — architecture table for every major device +7. Patent landscape — TrackMan/Tuxen, Foresight/Wintriss, FlightScope/EDH, Acushnet, with freedom-to-operate map +8. Ball flight models — Smits–Smith / Quintavalla aerodynamics, EKF trajectory estimation +9. Accuracy — Leach 2017 and the validation literature +10. Design guidance for implementers — capability tiers (radar hardening → optical spin/impact module → fusion → measured club delivery) + +Appendix A — Live reference library: every source as a clickable link, organized by category (patents, FCC filings, manufacturer docs, peer-reviewed literature, engineering references, DIY projects, comparative testing) + +Appendix C — Sensor hardware and integration reference: OPS243-A specs/API/rolling buffer + the AN-029 vendor golf recipe (a vendor-published golf configuration), K-LD7 datasheet + UART protocol, IWR6843 FMCW specifics, Pi Global Shutter XTR triggering, the full GSPro Open Connect schema, USGA equipment constants, and CFAR selection guidance + +Appendix D — Patent portfolio compendium: every identified US patent for TrackMan (all 45 on their legal page + 7 more), Topgolf Sweden/Toptracer, FlightScope/EDH, Full Swing (US11311789 grant), Garmin, Rapsodo, Foresight/Wintriss, Creatz/Uneekor, Golfzon, Acushnet (back to the ancestral 1977 US4136387), plus prior art (Sports Sensors, Weibel, Stalker) — each number hotlinked to Google Patents, with two attribution corrections (US10596416 family = Toptracer, not TrackMan) + +Appendix E — Clubhead kinematics from radar velocities: a screw-theoretic how-to — why Doppler measurements are exactly linear in the club's twist (reciprocal product of sight line and screw), what each OpenFlight sensor can observe (OPS243-A = 1D velocity distribution only; K-LD7 = wrong envelope; IWR6843 = full rigid-body estimation with custom chirps), a seven-step estimation recipe (OS-CFAR → segmentation → per-frame twist least squares → observability/SVD truncation → SE(3) smoothing with low-pitch and hub priors → impact-time evaluation → parameter projections including closure rate and ISA swing plane), and a four-stage validation plan; notes that ISA theory is established in golf biomechanics (Vena et al.) but no vendor publicly uses the screw formalism + +Appendix B — Detailed implementation guidance: OPS243-A DSP parameters (Doppler scaling, window/chirp trade-offs, comb spin estimation), K-LD7 interferometry + EKF/RTS smoother design, alignment calibration procedures, D-plane inversion with priors and gear-effect bounds, Phase-2 optical module design parameters (strobe timing, dimple registration), and the MLM2PRO validation protocol diff --git a/tech-review/main.tex b/tech-review/main.tex index e7168a9..fb2214c 100644 --- a/tech-review/main.tex +++ b/tech-review/main.tex @@ -1,52 +1,52 @@ -\documentclass[11pt,letterpaper,oneside]{report} -\input{preamble} - -\title{\Huge\bfseries Golf Launch Monitor Technology Review\\[8pt] -\Large Measurement Principles, Patent Landscape, and Club/Ball Parameter Estimation\\[6pt] -\large A technical foundation for the OpenFlight open-source launch monitor} -\author{OpenFlight Development} -\date{July 30, 2026} - -\begin{document} -\maketitle - -\begin{abstract} -\input{sections/abstract} -\end{abstract} - -\tableofcontents - -\input{sections/01-introduction} -\input{sections/02-parameters} -\input{sections/03-impact-physics} -\input{sections/04-radar-systems} -\input{sections/05-camera-systems} -\input{sections/06-commercial-survey} -\input{sections/07-patents} -\input{sections/08-ball-flight-models} -\input{sections/09-accuracy} -\input{sections/10-openflight-implications} - -\appendix -\input{sections/appendix-a-references} -\input{sections/appendix-b-implementation} -\input{sections/appendix-c-hardware} -\input{sections/appendix-d-patent-compendium} -\input{sections/appendix-e-screw-kinematics} - -% Bibliography, grouped by source category (keywords field in -% references.bib). Every entry carries exactly one of these keywords, so -% the five sub-bibliographies together print the complete database. -\printbibheading[title={Bibliography}] -\printbibliography[heading=subbibliography,keyword=literature, - title={Peer-reviewed literature and books}] -\printbibliography[heading=subbibliography,keyword=patent, - title={Patents, portfolios, and IP records}] -\printbibliography[heading=subbibliography,keyword=vendor, - title={Manufacturer technical documentation}] -\printbibliography[heading=subbibliography,keyword=hardware, - title={Datasheets, protocols, and standards}] -\printbibliography[heading=subbibliography,keyword=community, - title={Independent testing, engineering references, and open source}] - -\end{document} +\documentclass[11pt,letterpaper,oneside]{report} +\input{preamble} + +\title{\Huge\bfseries Golf Launch Monitor Technology Review\\[8pt] +\Large Measurement Principles, Patent Landscape, and Club/Ball Parameter Estimation\\[6pt] +\large A comprehensive technical reference} +\author{} +\date{August 3, 2026} + +\begin{document} +\maketitle + +\begin{abstract} +\input{sections/abstract} +\end{abstract} + +\tableofcontents + +\input{sections/01-introduction} +\input{sections/02-parameters} +\input{sections/03-impact-physics} +\input{sections/04-radar-systems} +\input{sections/05-camera-systems} +\input{sections/06-commercial-survey} +\input{sections/07-patents} +\input{sections/08-ball-flight-models} +\input{sections/09-accuracy} +\input{sections/10-design-guidance} + +\appendix +\input{sections/appendix-a-references} +\input{sections/appendix-b-implementation} +\input{sections/appendix-c-hardware} +\input{sections/appendix-d-patent-compendium} +\input{sections/appendix-e-screw-kinematics} + +% Bibliography, grouped by source category (keywords field in +% references.bib). Every entry carries exactly one of these keywords, so +% the five sub-bibliographies together print the complete database. +\printbibheading[title={Bibliography}] +\printbibliography[heading=subbibliography,keyword=literature, + title={Peer-reviewed literature and books}] +\printbibliography[heading=subbibliography,keyword=patent, + title={Patents, portfolios, and IP records}] +\printbibliography[heading=subbibliography,keyword=vendor, + title={Manufacturer technical documentation}] +\printbibliography[heading=subbibliography,keyword=hardware, + title={Datasheets, protocols, and standards}] +\printbibliography[heading=subbibliography,keyword=community, + title={Independent testing, engineering references, and open source}] + +\end{document} diff --git a/tech-review/preamble.tex b/tech-review/preamble.tex index d592129..f041ab0 100644 --- a/tech-review/preamble.tex +++ b/tech-review/preamble.tex @@ -1,84 +1,85 @@ -% Shared preamble for the OpenFlight launch monitor technology review -\usepackage[T1]{fontenc} -\usepackage[utf8]{inputenc} -\usepackage{lmodern} -\usepackage{microtype} -\usepackage[margin=1in]{geometry} -\usepackage{amsmath,amssymb,bm} -\usepackage{siunitx} -\usepackage{graphicx} -\usepackage{booktabs} -\usepackage{longtable} -\usepackage{array} -\usepackage{multirow} -\usepackage{caption} -\usepackage{subcaption} -\usepackage{enumitem} -\usepackage{xcolor} -\usepackage{tikz} -\usetikzlibrary{arrows.meta,positioning,calc,angles,quotes} -\usepackage{fancyhdr} -\usepackage{titlesec} -\usepackage[hidelinks,pdfusetitle]{hyperref} -\usepackage[capitalise,noabbrev]{cleveref} - -% Bibliography: structured BibTeX database (references.bib), biber backend. -% Entries are grouped in the printed bibliography by their `keywords` -% field -- see CONVENTIONS.md before adding references. -\usepackage[backend=biber,style=numeric,sorting=nyt,giveninits=true, - maxbibnames=6,minbibnames=6,isbn=false,eprint=false]{biblatex} -\addbibresource{references.bib} -% Print the URL note field compactly for online/manual sources. -\setlength{\bibitemsep}{0.5ex} - -% Color scheme -\definecolor{ofblue}{RGB}{20,60,110} -\definecolor{ofgray}{RGB}{90,95,100} -\definecolor{ofgreen}{RGB}{25,110,60} - -\titleformat{\chapter}[display] - {\normalfont\huge\bfseries\color{ofblue}} - {\chaptertitlename\ \thechapter}{12pt}{\Huge} -\titlespacing*{\chapter}{0pt}{0pt}{24pt} -\titleformat*{\section}{\Large\bfseries\color{ofblue}} -\titleformat*{\subsection}{\large\bfseries\color{ofgray}} - -\pagestyle{fancy} -\fancyhf{} -\fancyhead[L]{\small\itshape OpenFlight Technology Review} -\fancyhead[R]{\small\itshape\nouppercase{\leftmark}} -\fancyfoot[C]{\thepage} -\renewcommand{\headrulewidth}{0.4pt} - -\sisetup{per-mode=symbol,range-phrase=--,range-units=single} - -% Convenience macros -\newcommand{\degs}{\si{\degree}} -\newcommand{\mph}{\,mph} -\newcommand{\rpm}{\,rpm} -\newcommand{\patent}[1]{\href{https://patents.google.com/patent/#1}{#1}} -\newcommand{\vect}[1]{\bm{#1}} -\newcommand{\uvec}[1]{\hat{\bm{#1}}} - -% Callout box for design implications -\usepackage[most]{tcolorbox} -\newtcolorbox{implication}{ - colback=ofgreen!6, colframe=ofgreen!70!black, - title=Implication for OpenFlight, fonttitle=\bfseries, - boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, - breakable -} -\newtcolorbox{keypoint}{ - colback=ofblue!5, colframe=ofblue!70, - title=Key point, fonttitle=\bfseries, - boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, - breakable -} -% Callout for widely-repeated claims that are wrong, contested, or unsourced. -% Used to flag corrections so they are not silently absorbed on later edits. -\newtcolorbox{warning}{ - colback=red!4, colframe=red!55!black, - title=Caution, fonttitle=\bfseries, - boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, - breakable -} +% Shared preamble for the launch monitor technology review +\usepackage[T1]{fontenc} +\usepackage[utf8]{inputenc} +\usepackage{lmodern} +\usepackage{microtype} +\usepackage[margin=1in]{geometry} +\usepackage{amsmath,amssymb,bm} +\usepackage{siunitx} +\usepackage{graphicx} +\usepackage{booktabs} +\usepackage{longtable} +\usepackage{array} +\usepackage{multirow} +\usepackage{caption} +\usepackage{subcaption} +\usepackage{enumitem} +\usepackage{xcolor} +\usepackage{tikz} +\usetikzlibrary{arrows.meta,positioning,calc,angles,quotes} +\usepackage{fancyhdr} +\usepackage{titlesec} +\usepackage[hidelinks,pdfusetitle]{hyperref} +\usepackage[capitalise,noabbrev]{cleveref} + +% Bibliography: structured BibTeX database (references.bib), biber backend. +% Entries are grouped in the printed bibliography by their `keywords` +% field -- see CONVENTIONS.md before adding references. +\usepackage[backend=biber,style=numeric,sorting=nyt,giveninits=true, + maxbibnames=6,minbibnames=6,isbn=false,eprint=false]{biblatex} +\addbibresource{references.bib} +% Print the URL note field compactly for online/manual sources. +\setlength{\bibitemsep}{0.5ex} + +% Color scheme +\definecolor{accentblue}{RGB}{20,60,110} +\definecolor{accentgray}{RGB}{90,95,100} +\definecolor{accentgreen}{RGB}{25,110,60} + +\titleformat{\chapter}[display] + {\normalfont\huge\bfseries\color{accentblue}} + {\chaptertitlename\ \thechapter}{12pt}{\Huge} +\titlespacing*{\chapter}{0pt}{0pt}{24pt} +\titleformat*{\section}{\Large\bfseries\color{accentblue}} +\titleformat*{\subsection}{\large\bfseries\color{accentgray}} + +\pagestyle{fancy} +\fancyhf{} +\fancyhead[L]{\small\itshape Launch Monitor Technology} +\fancyhead[R]{\small\itshape\nouppercase{\leftmark}} +\fancyfoot[C]{\thepage} +\renewcommand{\headrulewidth}{0.4pt} + +\sisetup{per-mode=symbol,range-phrase=--,range-units=single} + +% Convenience macros +\newcommand{\degs}{\si{\degree}} +\newcommand{\mph}{\,mph} +\newcommand{\rpm}{\,rpm} +\newcommand{\patent}[1]{\href{https://patents.google.com/patent/#1}{#1}} +\newcommand{\vect}[1]{\bm{#1}} +\newcommand{\uvec}[1]{\hat{\bm{#1}}} + +% Callout box for design implications. Generic by design: this box flags a +% consequence an implementer must act on, independent of any particular product. +\usepackage[most]{tcolorbox} +\newtcolorbox{implication}{ + colback=accentgreen!6, colframe=accentgreen!70!black, + title=Design implication, fonttitle=\bfseries, + boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, + breakable +} +\newtcolorbox{keypoint}{ + colback=accentblue!5, colframe=accentblue!70, + title=Key point, fonttitle=\bfseries, + boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, + breakable +} +% Callout for widely-repeated claims that are wrong, contested, or unsourced. +% Used to flag corrections so they are not silently absorbed on later edits. +\newtcolorbox{warning}{ + colback=red!4, colframe=red!55!black, + title=Caution, fonttitle=\bfseries, + boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, + breakable +} diff --git a/tech-review/sections/01-introduction.tex b/tech-review/sections/01-introduction.tex index 858e325..65ef1ff 100644 --- a/tech-review/sections/01-introduction.tex +++ b/tech-review/sections/01-introduction.tex @@ -1,89 +1,96 @@ -\chapter{Introduction} -\label{ch:intro} - -\section{Purpose and scope} - -A golf launch monitor answers two questions for every shot: \emph{what did -the club do through impact} (delivery), and \emph{what did the ball do after -impact} (launch and flight). Commercial systems answer these questions with -strikingly different sensor architectures --- continuous-wave Doppler radar, -multi-camera photogrammetry, and, increasingly, fusions of the two --- yet -they all implement the same underlying physics: an oblique-impact collision -model connecting club delivery to ball launch, and an aerodynamic model -connecting ball launch to flight. - -This review is written to support the development of -\textbf{OpenFlight}\footnote{\url{https://github.com/jewbetcha/openflight} ---- AGPL-3.0; a DIY launch monitor built on the OmniPreSense OPS243-A -24\,GHz Doppler radar, RFbeam K-LD7 angle radars, a sound-trigger board, and -a Raspberry~Pi~5.}, an open-source launch monitor. Its goals are: - -\begin{enumerate}[itemsep=2pt] - \item catalogue \emph{how each major commercial system works}, at the level - of radar physics, imaging geometry, and signal processing; - \item establish, parameter by parameter, \emph{what is measured directly, - what is inferred through a model, and what is essentially - estimated} --- especially for club-delivery data such as face angle - and club path; - \item survey the governing \emph{patent landscape}, since the strongest - public documentation of these proprietary methods is found in the - patents themselves, and since freedom-to-operate matters to an - open-source project; - \item collect the \emph{physics and algorithms} (D-plane, impact mechanics, - gear effect, aerodynamic coefficients, spectral spin estimation, - stereo triangulation, Kalman filtering) that any implementation - needs; and - \item translate all of the above into \emph{concrete design guidance} for - OpenFlight's radar-first architecture and its possible optical - extensions. -\end{enumerate} - -\section{The two sensing families} - -\textbf{Doppler radar} systems (TrackMan, FlightScope, Garmin Approach R10, -Full Swing KIT) illuminate the hitting area and downrange volume with a -microwave carrier and extract target radial velocity from the Doppler shift. -Multiple receive antennas turn a velocity sensor into a 3D tracker via phase -interferometry (\cref{ch:radar}). Radar excels outdoors: it tracks the -entire flight, so carry and curvature are \emph{observed}, not modeled. Its -weaknesses are at the club face --- radar cannot see face orientation -directly --- and indoors, where a screen truncates the observable flight. - -\textbf{Photometric (camera)} systems (Foresight GC-series, Uneekor, -SkyTrak, ProTee VX, Garmin R50) capture a burst of high-speed, IR-strobed -stereo images over the first $\sim$30\,cm of ball flight and reconstruct -position and orientation photogrammetrically (\cref{ch:camera}). They -measure launch conditions --- including 3D spin from dimple-pattern rotation ---- essentially perfectly for simulator purposes, then \emph{model} the -flight. Their weakness is the mirror image of radar's: everything downrange -of the capture volume is simulated, and club data requires either fiducial -stickers on the face or an overhead viewing geometry. - -The market's convergent evolution is the single most instructive fact for a -new design: \emph{every} high-end vendor has concluded that neither modality -suffices alone. TrackMan added cameras to its radar (OERT, \cref{sec:oert}); -FlightScope added Fusion Tracking cameras; SkyTrak added radar to its -camera; Rapsodo pairs radar with impact cameras; Full Swing feeds a camera -into its radar ML pipeline. \Cref{ch:survey} tabulates the landscape. - -\section{Reading guide} - -\Cref{ch:params} fixes terminology and coordinate conventions -(TrackMan's definitions, the de~facto industry standard). -\Cref{ch:impact} develops the impact physics connecting club delivery to -ball launch --- the D-plane model, spin generation, and gear effect --- which -every monitor uses either forward (simulation) or inverse (parameter -estimation). \Cref{ch:radar,ch:camera} treat the two sensing families in -depth. \Cref{ch:survey} surveys the commercial devices. -\Cref{ch:patents} maps the patent landscape with expiry status. -\Cref{ch:flight} covers ball-flight aerodynamics and trajectory estimation. -\Cref{ch:accuracy} reviews the independent validation literature. -\Cref{ch:implications} distills the implications for OpenFlight. - -\begin{keypoint} -Throughout, we use a right-handed coordinate system for a right-handed -golfer: $x$ down the target line, $y$ up, $z$ to the golfer's right. -Angles are positive right/up. All club-delivery values are referenced to -the moment of \emph{maximum ball compression}; all ball-launch values to -the moment of \emph{separation from the face}. -\end{keypoint} +\chapter{Introduction} +\label{ch:intro} + +\section{Purpose and scope} + +A golf launch monitor answers two questions for every shot: \emph{what did +the club do through impact} (delivery), and \emph{what did the ball do after +impact} (launch and flight). Commercial systems answer these questions with +strikingly different sensor architectures --- continuous-wave Doppler radar, +multi-camera photogrammetry, and, increasingly, fusions of the two --- yet +they all implement the same underlying physics: an oblique-impact collision +model connecting club delivery to ball launch, and an aerodynamic model +connecting ball launch to flight. + +This review is a technical reference on how launch monitors work. It is +written for engineers building or evaluating such a system, for researchers +using one as an instrument, and for anyone who needs to know what a reported +number actually represents. Its goals are: + +\begin{enumerate}[itemsep=2pt] + \item catalogue \emph{how each major commercial system works}, at the level + of radar physics, imaging geometry, and signal processing; + \item establish, parameter by parameter, \emph{what is measured directly, + what is inferred through a model, and what is essentially + estimated} --- especially for club-delivery data such as face angle + and club path; + \item survey the governing \emph{patent landscape}, since the strongest + public documentation of these proprietary methods is found in the + patents themselves, and since freedom-to-operate constrains any + new entrant; + \item collect the \emph{physics and algorithms} (D-plane, impact mechanics, + gear effect, aerodynamic coefficients, spectral spin estimation, + stereo triangulation, Kalman filtering) that any implementation + needs; and + \item translate all of the above into \emph{concrete design guidance}, + organised by sensing architecture rather than by product. +\end{enumerate} + +\begin{keypoint} +A note on neutrality. Products are named throughout, and often criticised. +That is because published vendor definitions, patent claims and measured +tolerances are the primary evidence available in this field --- the +peer-reviewed literature is thin, as \cref{ch:accuracy} documents. Naming a +system is a citation, not a recommendation, and no architecture in this +review is presented as the one to build. +\end{keypoint} + +\section{The two sensing families} + +\textbf{Doppler radar} systems (TrackMan, FlightScope, Garmin Approach R10, +Full Swing KIT) illuminate the hitting area and downrange volume with a +microwave carrier and extract target radial velocity from the Doppler shift. +Multiple receive antennas turn a velocity sensor into a 3D tracker via phase +interferometry (\cref{ch:radar}). Radar excels outdoors: it tracks the +entire flight, so carry and curvature are \emph{observed}, not modeled. Its +weaknesses are at the club face --- radar cannot see face orientation +directly --- and indoors, where a screen truncates the observable flight. + +\textbf{Photometric (camera)} systems (Foresight GC-series, Uneekor, +SkyTrak, ProTee VX, Garmin R50) capture a burst of high-speed, IR-strobed +stereo images over the first $\sim$30\,cm of ball flight and reconstruct +position and orientation photogrammetrically (\cref{ch:camera}). They +measure launch conditions --- including 3D spin from dimple-pattern rotation +--- essentially perfectly for simulator purposes, then \emph{model} the +flight. Their weakness is the mirror image of radar's: everything downrange +of the capture volume is simulated, and club data requires either fiducial +stickers on the face or an overhead viewing geometry. + +The market's convergent evolution is the single most instructive fact for a +new design: \emph{every} high-end vendor has concluded that neither modality +suffices alone. TrackMan added cameras to its radar (OERT, \cref{sec:oert}); +FlightScope added Fusion Tracking cameras; SkyTrak added radar to its +camera; Rapsodo pairs radar with impact cameras; Full Swing feeds a camera +into its radar ML pipeline. \Cref{ch:survey} tabulates the landscape. + +\section{Reading guide} + +\Cref{ch:params} fixes terminology and coordinate conventions +(TrackMan's definitions, the de~facto industry standard). +\Cref{ch:impact} develops the impact physics connecting club delivery to +ball launch --- the D-plane model, spin generation, and gear effect --- which +every monitor uses either forward (simulation) or inverse (parameter +estimation). \Cref{ch:radar,ch:camera} treat the two sensing families in +depth. \Cref{ch:survey} surveys the commercial devices. +\Cref{ch:patents} maps the patent landscape with expiry status. +\Cref{ch:flight} covers ball-flight aerodynamics and trajectory estimation. +\Cref{ch:accuracy} reviews the independent validation literature. +\Cref{ch:implications} distills the review into design guidance. + +\begin{keypoint} +Throughout, we use a right-handed coordinate system for a right-handed +golfer: $x$ down the target line, $y$ up, $z$ to the golfer's right. +Angles are positive right/up. All club-delivery values are referenced to +the moment of \emph{maximum ball compression}; all ball-launch values to +the moment of \emph{separation from the face}. +\end{keypoint} diff --git a/tech-review/sections/02-parameters.tex b/tech-review/sections/02-parameters.tex index 90b4237..76505e6 100644 --- a/tech-review/sections/02-parameters.tex +++ b/tech-review/sections/02-parameters.tex @@ -1,224 +1,224 @@ -\chapter{Parameter Definitions and Conventions} -\label{ch:params} - -Launch monitors from different vendors disagree partly because they measure -different things and partly because they \emph{define} things differently. -TrackMan's definitions~\cite{trackman40params,trackmanclubdata} are the -industry reference and are adopted here. The critical subtlety is -\emph{when} each quantity is defined: club-delivery parameters at the time -of \textbf{maximum compression}, ball parameters \textbf{immediately after -separation}. - -\section{Club-delivery parameters} -\label{sec:clubparams} - -\begin{table}[htbp] -\centering\small -\caption{Club-delivery parameters (TrackMan conventions). ``GC'' = the -geometric center of the club head.} -\label{tab:clubparams} -\begin{tabular}{@{}p{3.2cm}p{7.2cm}p{4.2cm}@{}} -\toprule -\textbf{Parameter} & \textbf{Definition} & \textbf{Notes} \\ -\midrule -Club speed & Linear speed of the GC just prior to first contact & - Not the impact-point speed; the toe moves up to $\sim$7\mph{} faster than - the heel \\ -Attack angle & Vertical direction of GC motion at maximum compression & - $+$ = hitting up. PGA Tour driver avg $\approx-1.3\degs$; - LPGA $\approx+3\degs$ \\ -Club path & Horizontal direction of GC motion at maximum compression & - $+$ = in-to-out (right of target for RH) \\ -Face angle & Horizontal direction the face normal points, at the - center-point of ball contact, at maximum compression & $+$ = open \\ -Face to path & Face angle $-$ club path & Sign controls curvature \\ -Dynamic loft & Vertical angle of the face normal at the contact point at - maximum compression & Differs from static loft via shaft lean/bend, face - roll, impact height \\ -Spin loft & 3D angle between the club-motion direction (path, attack - angle) and the face-normal direction (face angle, dynamic loft) & - $\approx$ dynamic loft $-$ attack angle only when face-to-path - $\approx 0$ \\ -Swing plane & Vertical angle of the plane traced by GC motion vs.\ the - horizon & \\ -Swing direction & Horizontal angle of that plane's base vs.\ the target - line & \\ -Low point & Distance from GC at maximum compression to the lowest point of - the swing arc & $+$ = low point ahead of the ball (ball-first contact) \\ -Impact height / offset & Vertical / horizontal strike location relative to - face center & Drives gear effect (\cref{sec:gear}) \\ -Dynamic lie & Shaft angle vs.\ horizontal at impact & \\ -Closure rate & Angular rate at which the face is closing in 3D - (\si{\degree\per\second}) & Foresight GCQuad-class only \\ -\bottomrule -\end{tabular} -\end{table} - -Two definitional choices deserve emphasis because they are common sources of -inter-device disagreement: - -\begin{enumerate} -\item \textbf{Which point on the club is tracked.} TrackMan defines club -speed at the \emph{geometric center} of the head and reconstructs that point -from the radar ``3D silhouette'' of the head~\cite{trackmanclubspeed}. A -naive Doppler processor instead locks to the strongest or fastest return --- -often the toe of a driver --- and reports a speed several mph high. This -single choice explains much of the chronic club-speed disagreement between -brands. -\item \textbf{Where on the face orientation is evaluated.} Face angle and -dynamic loft are defined at the \emph{contact point}, not the face center. -On a curved driver face (bulge and roll, \cref{sec:gear}) the local normal -at a toe strike differs from the center normal by several degrees, so -systems that measure face pose but not impact location are systematically -biased on off-center hits. -\end{enumerate} - -\subsection{Club path is reference-point dependent too --- by about -3\degs{} on a driver} -\label{sec:pathreference} - -The reference-point issue is usually discussed only for club speed, but it -applies with equal force to \emph{direction}, and the magnitude is large -enough to matter. - -For any two points on the rigid clubhead, -\begin{equation} -\label{eq:pointvel} -\vect{v}_P = \vect{v}_O + \boldsymbol{\omega}\times\vect{r}, -\qquad \vect{r} = \vect{p}_P - \vect{p}_O, -\end{equation} -so there is a \emph{velocity field} across the head rather than a single -path. A reported path is that field sampled at a chosen point. The two -candidate points are far apart on a driver: the center of gravity sits -roughly 25--50\,mm behind the face, and the geometric center that radar -tracks is typically within 6\,mm of the CG~\cite{trackmanclubspeed}. - -The industry has split along the sensing modality. Radar systems report -path at the geometric center, because that is the point the silhouette -reconstruction can locate from behind. Optical systems with face fiducials -report it at the \emph{face center}, because that is where the markers -are. TrackMan quantifies the resulting gap directly: for a driver, the -CG path and the face-center path differ by \textbf{approximately -3\degs}, with the face-center path being the more -out-to-in of the two, and the discrepancy shrinks for shorter clubs as the -CG-to-face distance falls~\cite{trackmanclubdata}. - -Two rotations drive it, both pushing the same way horizontally: the swing -arc curves leftward through impact, so a point displaced forward along the -arc has its velocity rotated further around it; and face closure about the -shaft axis swings a point ahead of the rotation center leftward. The same -geometry tilts the face-center velocity slightly \emph{upward} relative to -the CG --- a shallower attack angle --- because the face center sits ahead -of the CG on an arc that is turning upward through the bottom. - -\begin{keypoint} -Because the offset is $\boldsymbol{\omega}\times\vect{r}$, it is not a -fixed constant: it scales with closure rate and arc tightness. Two players -with identical reported path but different release rates do not have the -same face-center path. And note that TrackMan's reported face-to-path is -already a \emph{hybrid} --- face orientation evaluated at the contact -point minus velocity direction evaluated at the geometric center --- so it -is not a physically clean angle under either convention. -\end{keypoint} - -\begin{implication} -This is the sharpest available argument for the twist formulation of -\cref{app:screw}. Estimating $\xi = (\boldsymbol{\omega}, \vect{v}_O)$ -makes path at any point a projection of one fitted object, so both -conventions --- and the rotation rate that separates them --- fall out of -the same estimate. OpenFlight should report path at a -\emph{declared} reference point, state which one, and expose -$\lVert\boldsymbol{\omega}\rVert$ alongside it so the user can see how -much the choice is worth on that swing. Reporting a bare path number -without its reference point is reporting a quantity that is -$\sim$3\degs{} ambiguous on a driver. -\end{implication} - -\section{Ball-launch parameters} - -\begin{table}[htbp] -\centering\small -\caption{Ball-launch parameters (defined immediately after separation).} -\label{tab:ballparams} -\begin{tabular}{@{}p{3.2cm}p{10.8cm}@{}} -\toprule -\textbf{Parameter} & \textbf{Definition} \\ -\midrule -Ball speed & Speed of the ball's center of gravity at separation \\ -Smash factor & Ball speed $\div$ club speed \\ -Launch angle & Vertical takeoff angle vs.\ the horizon \\ -Launch direction & Horizontal takeoff angle vs.\ the target line \\ -Spin rate & Rotation rate about the (single) spin axis, in rpm \\ -Spin axis & Tilt of the rotation axis relative to the horizon; - $-$ = tilted left $\Rightarrow$ draw for a right-hander \\ -Carry / side / total & Trajectory descriptors; carry is measured to the - point at launch elevation \\ -Apex, landing angle & Peak height; descent angle at landing \\ -\bottomrule -\end{tabular} -\end{table} - -A golf ball in flight has exactly one rotation vector -$\vect{\omega}$. ``Backspin'' and ``sidespin'' are components of that -vector, not separate spins. Systems that report sidespin (SkyTrak-style) -and systems that report spin axis (TrackMan-style) are related by -\begin{equation} -\label{eq:spincomponents} -S_{\mathrm{side}} = S \sin\theta_{\mathrm{axis}}, \qquad -S_{\mathrm{back}} = S \cos\theta_{\mathrm{axis}}, \qquad -\theta_{\mathrm{axis}} = \operatorname{atan2}\!\left( - S_{\mathrm{side}}, S_{\mathrm{back}}\right). -\end{equation} -A useful rule of thumb from TrackMan's data: $1\degs$ of spin-axis tilt -produces roughly $0.7\%$ of carry as side-curve (about -$0.7$\,yd per 100\,yd)~\cite{perfectgolfswing}. - -\section{The directness hierarchy} -\label{sec:hierarchy} - -For any launch monitor, each reported parameter falls somewhere on a -hierarchy from directly measured to purely modeled. Anticipating the -detailed treatment in \cref{ch:radar,ch:camera}, the hierarchy for the two -sensing families is summarized in \cref{tab:hierarchy}. This table is the -skeleton of this whole review. - -\begin{table}[htbp] -\centering\small -\caption{Measured vs.\ derived, by architecture. ``M'' = measured directly, -``D'' = derived through a physical model, ``E'' = estimated/model-fit, -``--'' = not available.} -\label{tab:hierarchy} -\begin{tabular}{@{}lcccc@{}} -\toprule -\textbf{Parameter} & \textbf{Radar (outdoor)} & \textbf{Radar (indoor)} & -\textbf{Camera (photometric)} & \textbf{Hybrid} \\ -\midrule -Ball speed & M & M & M & M \\ -Launch angles & M & M & M & M \\ -Spin rate & M$^{a}$ & M/E$^{a}$ & M$^{b}$ & M \\ -Spin axis & D$^{c}$ & E & M$^{b}$ & M \\ -Carry & M & E$^{d}$ & E$^{d}$ & E$^{d}$ \\ -Club speed & M$^{e}$ & M$^{e}$ & M$^{f}$ & M \\ -Club path / attack & M & M & M$^{f}$ & M \\ -Face angle & D$^{g}$ & D$^{g}$ & M$^{f}$ & M \\ -Dynamic loft & D$^{g}$ & D$^{g}$ & M$^{f}$ & M \\ -Impact location & -- & -- & M$^{f}$ & M$^{h}$ \\ -\bottomrule -\end{tabular} - -\smallskip -\raggedright\footnotesize -$^{a}$ Doppler harmonic sidebands; requires surface asymmetry and -sufficient flight (\cref{sec:radarspin}). -$^{b}$ Dimple-pattern registration (\cref{sec:dimplespin}). -$^{c}$ Inverted from trajectory curvature via the Magnus constraint -(\cref{sec:spinaxis}). -$^{d}$ Trajectory model integration from measured launch -(\cref{ch:flight}). -$^{e}$ Reference-point dependent; silhouette reconstruction on TrackMan. -$^{f}$ Requires face fiducials (Foresight/Garmin R50) or overhead -geometry (Uneekor/ProTee). -$^{g}$ D-plane inversion from ball launch + path on radar-only units; -optically assisted on OERT-class hardware (\cref{sec:faceangle}). -$^{h}$ Markerless via camera on TrackMan~4/iO. -\end{table} +\chapter{Parameter Definitions and Conventions} +\label{ch:params} + +Launch monitors from different vendors disagree partly because they measure +different things and partly because they \emph{define} things differently. +TrackMan's definitions~\cite{trackman40params,trackmanclubdata} are the +industry reference and are adopted here. The critical subtlety is +\emph{when} each quantity is defined: club-delivery parameters at the time +of \textbf{maximum compression}, ball parameters \textbf{immediately after +separation}. + +\section{Club-delivery parameters} +\label{sec:clubparams} + +\begin{table}[htbp] +\centering\small +\caption{Club-delivery parameters (TrackMan conventions). ``GC'' = the +geometric center of the club head.} +\label{tab:clubparams} +\begin{tabular}{@{}p{3.2cm}p{7.2cm}p{4.2cm}@{}} +\toprule +\textbf{Parameter} & \textbf{Definition} & \textbf{Notes} \\ +\midrule +Club speed & Linear speed of the GC just prior to first contact & + Not the impact-point speed; the toe moves up to $\sim$7\mph{} faster than + the heel \\ +Attack angle & Vertical direction of GC motion at maximum compression & + $+$ = hitting up. PGA Tour driver avg $\approx-1.3\degs$; + LPGA $\approx+3\degs$ \\ +Club path & Horizontal direction of GC motion at maximum compression & + $+$ = in-to-out (right of target for RH) \\ +Face angle & Horizontal direction the face normal points, at the + center-point of ball contact, at maximum compression & $+$ = open \\ +Face to path & Face angle $-$ club path & Sign controls curvature \\ +Dynamic loft & Vertical angle of the face normal at the contact point at + maximum compression & Differs from static loft via shaft lean/bend, face + roll, impact height \\ +Spin loft & 3D angle between the club-motion direction (path, attack + angle) and the face-normal direction (face angle, dynamic loft) & + $\approx$ dynamic loft $-$ attack angle only when face-to-path + $\approx 0$ \\ +Swing plane & Vertical angle of the plane traced by GC motion vs.\ the + horizon & \\ +Swing direction & Horizontal angle of that plane's base vs.\ the target + line & \\ +Low point & Distance from GC at maximum compression to the lowest point of + the swing arc & $+$ = low point ahead of the ball (ball-first contact) \\ +Impact height / offset & Vertical / horizontal strike location relative to + face center & Drives gear effect (\cref{sec:gear}) \\ +Dynamic lie & Shaft angle vs.\ horizontal at impact & \\ +Closure rate & Angular rate at which the face is closing in 3D + (\si{\degree\per\second}) & Foresight GCQuad-class only \\ +\bottomrule +\end{tabular} +\end{table} + +Two definitional choices deserve emphasis because they are common sources of +inter-device disagreement: + +\begin{enumerate} +\item \textbf{Which point on the club is tracked.} TrackMan defines club +speed at the \emph{geometric center} of the head and reconstructs that point +from the radar ``3D silhouette'' of the head~\cite{trackmanclubspeed}. A +naive Doppler processor instead locks to the strongest or fastest return --- +often the toe of a driver --- and reports a speed several mph high. This +single choice explains much of the chronic club-speed disagreement between +brands. +\item \textbf{Where on the face orientation is evaluated.} Face angle and +dynamic loft are defined at the \emph{contact point}, not the face center. +On a curved driver face (bulge and roll, \cref{sec:gear}) the local normal +at a toe strike differs from the center normal by several degrees, so +systems that measure face pose but not impact location are systematically +biased on off-center hits. +\end{enumerate} + +\subsection{Club path is reference-point dependent too --- by about +3\degs{} on a driver} +\label{sec:pathreference} + +The reference-point issue is usually discussed only for club speed, but it +applies with equal force to \emph{direction}, and the magnitude is large +enough to matter. + +For any two points on the rigid clubhead, +\begin{equation} +\label{eq:pointvel} +\vect{v}_P = \vect{v}_O + \boldsymbol{\omega}\times\vect{r}, +\qquad \vect{r} = \vect{p}_P - \vect{p}_O, +\end{equation} +so there is a \emph{velocity field} across the head rather than a single +path. A reported path is that field sampled at a chosen point. The two +candidate points are far apart on a driver: the center of gravity sits +roughly 25--50\,mm behind the face, and the geometric center that radar +tracks is typically within 6\,mm of the CG~\cite{trackmanclubspeed}. + +The industry has split along the sensing modality. Radar systems report +path at the geometric center, because that is the point the silhouette +reconstruction can locate from behind. Optical systems with face fiducials +report it at the \emph{face center}, because that is where the markers +are. TrackMan quantifies the resulting gap directly: for a driver, the +CG path and the face-center path differ by \textbf{approximately +3\degs}, with the face-center path being the more +out-to-in of the two, and the discrepancy shrinks for shorter clubs as the +CG-to-face distance falls~\cite{trackmanclubdata}. + +Two rotations drive it, both pushing the same way horizontally: the swing +arc curves leftward through impact, so a point displaced forward along the +arc has its velocity rotated further around it; and face closure about the +shaft axis swings a point ahead of the rotation center leftward. The same +geometry tilts the face-center velocity slightly \emph{upward} relative to +the CG --- a shallower attack angle --- because the face center sits ahead +of the CG on an arc that is turning upward through the bottom. + +\begin{keypoint} +Because the offset is $\boldsymbol{\omega}\times\vect{r}$, it is not a +fixed constant: it scales with closure rate and arc tightness. Two players +with identical reported path but different release rates do not have the +same face-center path. And note that TrackMan's reported face-to-path is +already a \emph{hybrid} --- face orientation evaluated at the contact +point minus velocity direction evaluated at the geometric center --- so it +is not a physically clean angle under either convention. +\end{keypoint} + +\begin{implication} +This is the sharpest available argument for the twist formulation of +\cref{app:screw}. Estimating $\xi = (\boldsymbol{\omega}, \vect{v}_O)$ +makes path at any point a projection of one fitted object, so both +conventions --- and the rotation rate that separates them --- fall out of +the same estimate. An implementation should report path at a +\emph{declared} reference point, state which one, and expose +$\lVert\boldsymbol{\omega}\rVert$ alongside it so the user can see how +much the choice is worth on that swing. Reporting a bare path number +without its reference point is reporting a quantity that is +$\sim$3\degs{} ambiguous on a driver. +\end{implication} + +\section{Ball-launch parameters} + +\begin{table}[htbp] +\centering\small +\caption{Ball-launch parameters (defined immediately after separation).} +\label{tab:ballparams} +\begin{tabular}{@{}p{3.2cm}p{10.8cm}@{}} +\toprule +\textbf{Parameter} & \textbf{Definition} \\ +\midrule +Ball speed & Speed of the ball's center of gravity at separation \\ +Smash factor & Ball speed $\div$ club speed \\ +Launch angle & Vertical takeoff angle vs.\ the horizon \\ +Launch direction & Horizontal takeoff angle vs.\ the target line \\ +Spin rate & Rotation rate about the (single) spin axis, in rpm \\ +Spin axis & Tilt of the rotation axis relative to the horizon; + $-$ = tilted left $\Rightarrow$ draw for a right-hander \\ +Carry / side / total & Trajectory descriptors; carry is measured to the + point at launch elevation \\ +Apex, landing angle & Peak height; descent angle at landing \\ +\bottomrule +\end{tabular} +\end{table} + +A golf ball in flight has exactly one rotation vector +$\vect{\omega}$. ``Backspin'' and ``sidespin'' are components of that +vector, not separate spins. Systems that report sidespin (SkyTrak-style) +and systems that report spin axis (TrackMan-style) are related by +\begin{equation} +\label{eq:spincomponents} +S_{\mathrm{side}} = S \sin\theta_{\mathrm{axis}}, \qquad +S_{\mathrm{back}} = S \cos\theta_{\mathrm{axis}}, \qquad +\theta_{\mathrm{axis}} = \operatorname{atan2}\!\left( + S_{\mathrm{side}}, S_{\mathrm{back}}\right). +\end{equation} +A useful rule of thumb from TrackMan's data: $1\degs$ of spin-axis tilt +produces roughly $0.7\%$ of carry as side-curve (about +$0.7$\,yd per 100\,yd)~\cite{perfectgolfswing}. + +\section{The directness hierarchy} +\label{sec:hierarchy} + +For any launch monitor, each reported parameter falls somewhere on a +hierarchy from directly measured to purely modeled. Anticipating the +detailed treatment in \cref{ch:radar,ch:camera}, the hierarchy for the two +sensing families is summarized in \cref{tab:hierarchy}. This table is the +skeleton of this whole review. + +\begin{table}[htbp] +\centering\small +\caption{Measured vs.\ derived, by architecture. ``M'' = measured directly, +``D'' = derived through a physical model, ``E'' = estimated/model-fit, +``--'' = not available.} +\label{tab:hierarchy} +\begin{tabular}{@{}lcccc@{}} +\toprule +\textbf{Parameter} & \textbf{Radar (outdoor)} & \textbf{Radar (indoor)} & +\textbf{Camera (photometric)} & \textbf{Hybrid} \\ +\midrule +Ball speed & M & M & M & M \\ +Launch angles & M & M & M & M \\ +Spin rate & M$^{a}$ & M/E$^{a}$ & M$^{b}$ & M \\ +Spin axis & D$^{c}$ & E & M$^{b}$ & M \\ +Carry & M & E$^{d}$ & E$^{d}$ & E$^{d}$ \\ +Club speed & M$^{e}$ & M$^{e}$ & M$^{f}$ & M \\ +Club path / attack & M & M & M$^{f}$ & M \\ +Face angle & D$^{g}$ & D$^{g}$ & M$^{f}$ & M \\ +Dynamic loft & D$^{g}$ & D$^{g}$ & M$^{f}$ & M \\ +Impact location & -- & -- & M$^{f}$ & M$^{h}$ \\ +\bottomrule +\end{tabular} + +\smallskip +\raggedright\footnotesize +$^{a}$ Doppler harmonic sidebands; requires surface asymmetry and +sufficient flight (\cref{sec:radarspin}). +$^{b}$ Dimple-pattern registration (\cref{sec:dimplespin}). +$^{c}$ Inverted from trajectory curvature via the Magnus constraint +(\cref{sec:spinaxis}). +$^{d}$ Trajectory model integration from measured launch +(\cref{ch:flight}). +$^{e}$ Reference-point dependent; silhouette reconstruction on TrackMan. +$^{f}$ Requires face fiducials (Foresight/Garmin R50) or overhead +geometry (Uneekor/ProTee). +$^{g}$ D-plane inversion from ball launch + path on radar-only units; +optically assisted on OERT-class hardware (\cref{sec:faceangle}). +$^{h}$ Markerless via camera on TrackMan~4/iO. +\end{table} diff --git a/tech-review/sections/03-impact-physics.tex b/tech-review/sections/03-impact-physics.tex index 3143dda..066e6f7 100644 --- a/tech-review/sections/03-impact-physics.tex +++ b/tech-review/sections/03-impact-physics.tex @@ -1,269 +1,269 @@ -\chapter{Impact Physics: From Club Delivery to Ball Launch} -\label{ch:impact} - -Every launch monitor embeds a model of the club--ball collision. Camera -systems use it \emph{forward} (sanity-checking and filling gaps); radar -systems use it \emph{inverse} (recovering face angle and dynamic loft from -measured ball launch). This chapter develops that model. - -\section{The D-plane} -\label{sec:dplane} - -Jorgensen~\cite{jorgensen} observed that at impact two unit vectors -determine the collision geometry for a center strike: -\begin{itemize} - \item $\uvec{n}$, the \textbf{face normal}, built from face angle - $\varphi_f$ and dynamic loft $\lambda_d$; - \item $\uvec{p}$, the \textbf{club-head velocity direction}, built from - club path $\varphi_p$ and attack angle $\alpha$. -\end{itemize} -These two vectors span a wedge-shaped plane --- the \emph{D-plane} -(``descriptive plane''). Its two governing consequences are: - -\begin{enumerate} -\item \textbf{Launch direction lies in the D-plane}, between $\uvec{n}$ and -$\uvec{p}$, much closer to the face normal. -\item \textbf{The spin axis is normal to the D-plane}: -\begin{equation} -\label{eq:spinaxisdplane} -\hat{\vect{\omega}} \propto \uvec{p} \times \uvec{n}. -\end{equation} -The ball therefore curves \emph{away from the path, around the face} --- -the ``new ball flight laws.'' -\end{enumerate} - -\begin{figure}[htbp] -\centering -\begin{tikzpicture}[scale=1.05,>=Stealth] - % target line - \draw[ofgray,dashed,->] (0,0) -- (9.5,0) node[right] {\small target line}; - % club path vector - \draw[thick,ofgreen,->] (0,0) -- ({8*cos(-6)},{8*sin(-6)}) - node[below right] {\small club path $\uvec{p}$ ($-6\degs$)}; - % face normal - \draw[thick,ofblue,->] (0,0) -- ({8*cos(-2)},{8*sin(-2)}) - node[above right] {\small face normal $\uvec{n}$ ($-2\degs$)}; - % launch direction - \draw[very thick,red!70!black,->] (0,0) -- ({8.6*cos(-2.6)},{8.6*sin(-2.6)}) - node[right] {\small launch $\approx 0.76\varphi_f + 0.24\varphi_p$}; - % angle arcs - \draw[ofgray] (2.2,0) arc[start angle=0,end angle=-6,radius=2.2]; - \node[ofgray] at (2.9,-0.32) {\footnotesize $\varphi_p$}; - \draw[ofgray] (4.6,0) arc[start angle=0,end angle=-2,radius=4.6]; - \node[ofgray] at (5.3,-0.09) {\footnotesize $\varphi_f$}; -\end{tikzpicture} -\caption{Horizontal D-plane geometry (top view, right-handed golfer, -out-to-in ``fade'' delivery). The ball launches close to the face -direction; the face-to-path difference tilts the spin axis and curves the -ball away from the path.} -\label{fig:dplane} -\end{figure} - -\subsection{Face/path weighting of launch direction} -\label{sec:facepathweighting} - -Robot and player data (TrackMan's 2009 ball-flight-laws -analysis~\cite{trackmanballflightlaws}) give the canonical weighting of -horizontal launch direction between face angle and club path: -\begin{equation} -\label{eq:launchweight} -\varphi_{\mathrm{launch}} \;\approx\; - w_f\,\varphi_f + (1-w_f)\,\varphi_p, -\qquad -w_f \approx -\begin{cases} - 0.76 \pm 0.08 & \text{driver} \\ - 0.69 & \text{7-iron} \\ - 0.61 & \text{wedge.} -\end{cases} -\end{equation} - -\begin{warning} -The values above are the \emph{horizontal} weights measured by -Wood~et~al.~\cite{facepathstudy} across 157 golfers and 1{,}575 shots at -720\,fps, filtered to strikes within 0.25\,in of face centre; a PING~Man -robot test returned $0.63$ for the 7-iron. - -The familiar $0.85/0.15$ figure comes from TrackMan's \emph{Ten -Fundamentals}, which asserts $85\%$ in \emph{both} planes---$85\%$ dynamic -loft to launch angle, and $85\%$ face angle to initial direction. Against -Wood's measurements the two claims fare differently: the vertical claim -holds ($0.83 \pm 0.08$), the horizontal one does not ($0.76 \pm 0.08$). -This is a live vendor-versus-measurement disagreement, not a rounding -difference or a units error. - -For OpenFlight this matters directly: inverting -Eq.~\eqref{eq:launchweight} to recover face angle amplifies any bias in -measured launch direction by $1/w_f$. At $w_f = 0.76$ that is $1.32$, not -the $1.15$ implied by $0.85$---roughly twice the error sensitivity. -\end{warning} - -The weight is loft-dependent: more loft means a more oblique -impact, hence a larger tangential momentum component along the path -direction. Peer-reviewed impact modeling with normal COR plus tangential -compliance reproduces the loft dependence from first -principles~\cite{mdpifriction,facepathstudy}. - -The \emph{mechanism} is contested. TrackMan attributes the driver's higher -weight to a smoother, lower-friction titanium face; PING rejects this, -showing the loft dependence persists at constant $\mu$ and that below -$\sim20\degs$ of incidence \emph{lower} friction moves launch \emph{closer} -to the path---the opposite of the friction hypothesis~\cite{mdpifriction}. -An implementation that fits $w_f$ empirically should record which -explanation its calibration assumes. - -Tutelman~\cite{tutelman3d} gives a closed-form version calibrated to -TrackMan data. With face-to-path angle $A$ and dynamic loft $L$, define the -total obliqueness $\Phi$ (which is precisely the spin loft): -\begin{equation} -\label{eq:obliqueness} -\cos\Phi = \cos A \cos L, \qquad -f(\Phi) = 0.96 - 0.0071\,\Phi \quad (\Phi \text{ in degrees}), -\end{equation} -and the departure angles relative to the club path are -\begin{equation} -\label{eq:tutelmanlaunch} -\mathrm{DA}_{\mathrm{vert}} = L\,f(\Phi), \qquad -\mathrm{DA}_{\mathrm{horiz}} = A\,f(\Phi), -\end{equation} -with launch angles relative to the target obtained by adding attack angle -and path respectively. Note $f(\Phi)\approx0.85$ at $\Phi\approx15\degs$ -(driver) and $\approx0.75$ at $\Phi\approx30\degs$ (short iron): one -friction-calibrated function reproduces both rules of thumb. - -\subsection{Spin-axis tilt} - -For a center strike the spin-axis tilt follows from the D-plane geometry: -\begin{equation} -\label{eq:axistilt} -\tan\theta_{\mathrm{axis}} \approx - \frac{\tan(\text{face-to-path})}{\tan(\text{spin loft})}, -\end{equation} -so $1\degs$ of face-to-path tilts the axis $\approx4\degs$ with a driver -(spin loft $\sim$12--15$\degs$) but only $\approx2\degs$ with a mid-iron -(spin loft $\sim$25--30$\degs$)~\cite{perfectgolfswing}. Tuxen's -shot-shaping rule for a ball that curves back to the target line: -$\theta_{\mathrm{axis}} \approx -2.5\times$ the horizontal launch angle. - -\begin{implication} -OpenFlight measures launch direction (K-LD7 horizontal) and club -path. \Cref{eq:launchweight} then yields face angle by inversion: -$\varphi_f = (\varphi_{\mathrm{launch}} - (1-w_f)\varphi_p)/w_f$. Because -$1/w_f \approx 1.15$, any systematic launch-direction bias is -\emph{amplified} $\sim$15\% in the reported face angle --- alignment -calibration of the horizontal angle radar is the single most important -accuracy investment for club data. -\end{implication} - -\section{Ball speed and smash factor} -\label{sec:smash} - -The normal-direction collision is well modeled as a two-body impact with -coefficient of restitution $e$~\cite{cochranstobbs,penner2003}: -\begin{equation} -\label{eq:ballspeed} -v_{\mathrm{ball}} = v_{\mathrm{club}}\, - \frac{1+e}{1+m/M}\,\cos\Phi\, - \bigl(1 - 0.14\,x_{\mathrm{miss}}\bigr), -\end{equation} -with $e \approx 0.83$ at the USGA driver limit (falling with loft and -impact speed), ball mass $m = 45.93$\,g, head mass $M \approx 200$\,g -(driver), $\cos\Phi$ the obliqueness loss, and the last factor an empirical -off-center loss with $x_{\mathrm{miss}}$ in inches~\cite{tutelmansmash}. -The prefactor $(1+e)/(1+m/M)\approx1.49$ sets the theoretical driver smash -ceiling; smash factor falls with loft: - -\begin{center} -\small -\begin{tabular}{@{}lcccc@{}} -\toprule -Effective loft & $0\degs$ & $10\degs$ & $20\degs$ & $30\degs$ \\ -Max smash factor & 1.488 & 1.465 & 1.398 & 1.288 \\ -\bottomrule -\end{tabular} -\end{center} - -\begin{keypoint} -This table is a built-in sanity check: a measured smash factor above the -loft-appropriate ceiling indicates a measurement error --- most commonly a -radar unit reporting toe speed or shaft speed instead of -geometric-center club speed. OpenFlight should flag physically impossible -smash values instead of displaying them. -\end{keypoint} - -\section{Spin generation} -\label{sec:spingen} - -Friction during the oblique compression converts tangential surface speed -$v_{\mathrm{club}}\sin\Phi$ into rotation. Real impacts exhibit tangential -compliance (the contact patch sticks and stretches like a shear -spring)~\cite{mdpifriction,crossoblique}, but a practical engineering fit -calibrated to TrackMan data~\cite{tutelman3d} is simply -\begin{equation} -\label{eq:spinrate} -S_{\mathrm{total}}\ [\mathrm{rpm}] \approx - 160\, v_{\mathrm{club}}[\mathrm{mph}]\, \sin\Phi , -\end{equation} -with the back/side split following from the D-plane direction ratio -$d = \tan A/\tan L$: -$S_{\mathrm{back}} = S/\sqrt{1+d^2}$, $S_{\mathrm{side}} = d\,S_{\mathrm{back}}$. -Cross-checks: $\sim$200--300\,rpm per degree of spin loft for a driver; -the ``iron loft $\times$ 200'' rule matches PGA Tour averages. Friction -saturates near spin lofts of 45--50$\degs$ (the ``spin-loft cliff''), and -wet or grass-contaminated contact reduces spin at fixed spin -loft~\cite{trackmanspinloft}. - -\section{Gear effect and impact location} -\label{sec:gear} - -An impact at horizontal offset $x$ from the CG line torques the head about -its CG; the recoiling face ``gears'' the ball the opposite way. The -angular-impulse model~\cite{tutelmangear} gives head rotation -$\omega_{\mathrm{head}} = x\,m\,v_{\mathrm{ball}}/I_h$ and gear spin -\begin{equation} -\label{eq:gear} -s\ [\mathrm{rpm}] = 58{,}830\, - \frac{v_{\mathrm{ball}}[\mathrm{mph}]\; C[\mathrm{in}]\; - x[\mathrm{in}]}{I_h[\mathrm{g\,cm^2}]} -\;\approx\; 16.4\, v_{\mathrm{ball}}[\mathrm{mph}]\; - x[\mathrm{in}] \times 100, -\end{equation} -where $C$ is CG depth behind the face (32--47\,mm on measured OEM drivers) -and $I_h = 4000$--$5800\,\mathrm{g\,cm^2}$; the ratio $I_h/C$ is nearly -constant across modern drivers, which is why the simplified form works to -$\pm2.5\%$. A toe strike opens the head and imparts \emph{hook} gear spin; -a heel strike, slice spin. Vertical gear effect (high-face strikes reduce -backspin, low-face strikes increase it) follows the same equation with the -vertical CG offset and roll radius. - -Driver faces are built curved to exploit this: \textbf{bulge} (horizontal -radius, typically 12\,in) starts a toe miss right so the gear-effect hook -curves it back. Worked example~\cite{tutelmangear}: a 1\,in toe miss at -150\,mph ball speed gets $+1354$\,rpm of bulge-induced slice spin against -$-2192$\,rpm of gear hook spin --- net 838\,rpm hook and $\sim$10\,yd left, -versus $\sim$61\,yd offline for a flat face. Sensitivity is extreme: a -strike one dimple width ($0.14$\,in) off-center tilts the spin axis -$\sim6\degs$ on a driver ($\sim2\degs$ on a 6-iron)~\cite{perfectgolfswing}. -Irons have shallow CG depth, hence weak gear effect and flat faces. - -\begin{implication} -Gear effect is why \emph{impact location} is the most valuable club -parameter a launch monitor can add after path/face: without it, a pure -D-plane inversion misattributes gear-effect spin-axis tilt to face-to-path. -For a radar-only OpenFlight this is a fundamental, quantifiable error -source on off-center driver strikes (up to several degrees of apparent -face-to-path); \cref{eq:gear} bounds it, and an optical impact-location -add-on (\cref{ch:implications}) removes it. -\end{implication} - -\section{Vertical plane and the low-point geometry} - -The identical geometry applies vertically: launch angle sits 75--85\% of -the way from attack angle toward dynamic loft, and spin loft sets spin -magnitude via \cref{eq:spinrate}. One non-obvious coupling: for a -descending strike on an inclined swing plane, the instantaneous path points -in-to-out even when the swing direction is square --- e.g.\ hitting -$5\degs$ down on a $60\degs$ plane yields $\approx2.9\degs$ of in-to-out -path. Radar systems that measure swing plane and attack angle use this -relation (path $=f(\text{swing direction, swing plane, attack angle})$) as -a consistency constraint among the measured club parameters. +\chapter{Impact Physics: From Club Delivery to Ball Launch} +\label{ch:impact} + +Every launch monitor embeds a model of the club--ball collision. Camera +systems use it \emph{forward} (sanity-checking and filling gaps); radar +systems use it \emph{inverse} (recovering face angle and dynamic loft from +measured ball launch). This chapter develops that model. + +\section{The D-plane} +\label{sec:dplane} + +Jorgensen~\cite{jorgensen} observed that at impact two unit vectors +determine the collision geometry for a center strike: +\begin{itemize} + \item $\uvec{n}$, the \textbf{face normal}, built from face angle + $\varphi_f$ and dynamic loft $\lambda_d$; + \item $\uvec{p}$, the \textbf{club-head velocity direction}, built from + club path $\varphi_p$ and attack angle $\alpha$. +\end{itemize} +These two vectors span a wedge-shaped plane --- the \emph{D-plane} +(``descriptive plane''). Its two governing consequences are: + +\begin{enumerate} +\item \textbf{Launch direction lies in the D-plane}, between $\uvec{n}$ and +$\uvec{p}$, much closer to the face normal. +\item \textbf{The spin axis is normal to the D-plane}: +\begin{equation} +\label{eq:spinaxisdplane} +\hat{\vect{\omega}} \propto \uvec{p} \times \uvec{n}. +\end{equation} +The ball therefore curves \emph{away from the path, around the face} --- +the ``new ball flight laws.'' +\end{enumerate} + +\begin{figure}[htbp] +\centering +\begin{tikzpicture}[scale=1.05,>=Stealth] + % target line + \draw[accentgray,dashed,->] (0,0) -- (9.5,0) node[right] {\small target line}; + % club path vector + \draw[thick,accentgreen,->] (0,0) -- ({8*cos(-6)},{8*sin(-6)}) + node[below right] {\small club path $\uvec{p}$ ($-6\degs$)}; + % face normal + \draw[thick,accentblue,->] (0,0) -- ({8*cos(-2)},{8*sin(-2)}) + node[above right] {\small face normal $\uvec{n}$ ($-2\degs$)}; + % launch direction + \draw[very thick,red!70!black,->] (0,0) -- ({8.6*cos(-2.6)},{8.6*sin(-2.6)}) + node[right] {\small launch $\approx 0.76\varphi_f + 0.24\varphi_p$}; + % angle arcs + \draw[accentgray] (2.2,0) arc[start angle=0,end angle=-6,radius=2.2]; + \node[accentgray] at (2.9,-0.32) {\footnotesize $\varphi_p$}; + \draw[accentgray] (4.6,0) arc[start angle=0,end angle=-2,radius=4.6]; + \node[accentgray] at (5.3,-0.09) {\footnotesize $\varphi_f$}; +\end{tikzpicture} +\caption{Horizontal D-plane geometry (top view, right-handed golfer, +out-to-in ``fade'' delivery). The ball launches close to the face +direction; the face-to-path difference tilts the spin axis and curves the +ball away from the path.} +\label{fig:dplane} +\end{figure} + +\subsection{Face/path weighting of launch direction} +\label{sec:facepathweighting} + +Robot and player data (TrackMan's 2009 ball-flight-laws +analysis~\cite{trackmanballflightlaws}) give the canonical weighting of +horizontal launch direction between face angle and club path: +\begin{equation} +\label{eq:launchweight} +\varphi_{\mathrm{launch}} \;\approx\; + w_f\,\varphi_f + (1-w_f)\,\varphi_p, +\qquad +w_f \approx +\begin{cases} + 0.76 \pm 0.08 & \text{driver} \\ + 0.69 & \text{7-iron} \\ + 0.61 & \text{wedge.} +\end{cases} +\end{equation} + +\begin{warning} +The values above are the \emph{horizontal} weights measured by +Wood~et~al.~\cite{facepathstudy} across 157 golfers and 1{,}575 shots at +720\,fps, filtered to strikes within 0.25\,in of face centre; a PING~Man +robot test returned $0.63$ for the 7-iron. + +The familiar $0.85/0.15$ figure comes from TrackMan's \emph{Ten +Fundamentals}, which asserts $85\%$ in \emph{both} planes---$85\%$ dynamic +loft to launch angle, and $85\%$ face angle to initial direction. Against +Wood's measurements the two claims fare differently: the vertical claim +holds ($0.83 \pm 0.08$), the horizontal one does not ($0.76 \pm 0.08$). +This is a live vendor-versus-measurement disagreement, not a rounding +difference or a units error. + +This matters directly for any radar-first system: inverting +Eq.~\eqref{eq:launchweight} to recover face angle amplifies any bias in +measured launch direction by $1/w_f$. At $w_f = 0.76$ that is $1.32$, not +the $1.15$ implied by $0.85$---roughly twice the error sensitivity. +\end{warning} + +The weight is loft-dependent: more loft means a more oblique +impact, hence a larger tangential momentum component along the path +direction. Peer-reviewed impact modeling with normal COR plus tangential +compliance reproduces the loft dependence from first +principles~\cite{mdpifriction,facepathstudy}. + +The \emph{mechanism} is contested. TrackMan attributes the driver's higher +weight to a smoother, lower-friction titanium face; PING rejects this, +showing the loft dependence persists at constant $\mu$ and that below +$\sim20\degs$ of incidence \emph{lower} friction moves launch \emph{closer} +to the path---the opposite of the friction hypothesis~\cite{mdpifriction}. +An implementation that fits $w_f$ empirically should record which +explanation its calibration assumes. + +Tutelman~\cite{tutelman3d} gives a closed-form version calibrated to +TrackMan data. With face-to-path angle $A$ and dynamic loft $L$, define the +total obliqueness $\Phi$ (which is precisely the spin loft): +\begin{equation} +\label{eq:obliqueness} +\cos\Phi = \cos A \cos L, \qquad +f(\Phi) = 0.96 - 0.0071\,\Phi \quad (\Phi \text{ in degrees}), +\end{equation} +and the departure angles relative to the club path are +\begin{equation} +\label{eq:tutelmanlaunch} +\mathrm{DA}_{\mathrm{vert}} = L\,f(\Phi), \qquad +\mathrm{DA}_{\mathrm{horiz}} = A\,f(\Phi), +\end{equation} +with launch angles relative to the target obtained by adding attack angle +and path respectively. Note $f(\Phi)\approx0.85$ at $\Phi\approx15\degs$ +(driver) and $\approx0.75$ at $\Phi\approx30\degs$ (short iron): one +friction-calibrated function reproduces both rules of thumb. + +\subsection{Spin-axis tilt} + +For a center strike the spin-axis tilt follows from the D-plane geometry: +\begin{equation} +\label{eq:axistilt} +\tan\theta_{\mathrm{axis}} \approx + \frac{\tan(\text{face-to-path})}{\tan(\text{spin loft})}, +\end{equation} +so $1\degs$ of face-to-path tilts the axis $\approx4\degs$ with a driver +(spin loft $\sim$12--15$\degs$) but only $\approx2\degs$ with a mid-iron +(spin loft $\sim$25--30$\degs$)~\cite{perfectgolfswing}. Tuxen's +shot-shaping rule for a ball that curves back to the target line: +$\theta_{\mathrm{axis}} \approx -2.5\times$ the horizontal launch angle. + +\begin{implication} +A radar-first system typically measures launch direction and club +path. \Cref{eq:launchweight} then yields face angle by inversion: +$\varphi_f = (\varphi_{\mathrm{launch}} - (1-w_f)\varphi_p)/w_f$. Because +$1/w_f \approx 1.15$, any systematic launch-direction bias is +\emph{amplified} $\sim$15\% in the reported face angle --- alignment +calibration of the horizontal angle radar is the single most important +accuracy investment for club data. +\end{implication} + +\section{Ball speed and smash factor} +\label{sec:smash} + +The normal-direction collision is well modeled as a two-body impact with +coefficient of restitution $e$~\cite{cochranstobbs,penner2003}: +\begin{equation} +\label{eq:ballspeed} +v_{\mathrm{ball}} = v_{\mathrm{club}}\, + \frac{1+e}{1+m/M}\,\cos\Phi\, + \bigl(1 - 0.14\,x_{\mathrm{miss}}\bigr), +\end{equation} +with $e \approx 0.83$ at the USGA driver limit (falling with loft and +impact speed), ball mass $m = 45.93$\,g, head mass $M \approx 200$\,g +(driver), $\cos\Phi$ the obliqueness loss, and the last factor an empirical +off-center loss with $x_{\mathrm{miss}}$ in inches~\cite{tutelmansmash}. +The prefactor $(1+e)/(1+m/M)\approx1.49$ sets the theoretical driver smash +ceiling; smash factor falls with loft: + +\begin{center} +\small +\begin{tabular}{@{}lcccc@{}} +\toprule +Effective loft & $0\degs$ & $10\degs$ & $20\degs$ & $30\degs$ \\ +Max smash factor & 1.488 & 1.465 & 1.398 & 1.288 \\ +\bottomrule +\end{tabular} +\end{center} + +\begin{keypoint} +This table is a built-in sanity check: a measured smash factor above the +loft-appropriate ceiling indicates a measurement error --- most commonly a +radar unit reporting toe speed or shaft speed instead of +geometric-center club speed. An implementation should flag physically impossible +smash values instead of displaying them. +\end{keypoint} + +\section{Spin generation} +\label{sec:spingen} + +Friction during the oblique compression converts tangential surface speed +$v_{\mathrm{club}}\sin\Phi$ into rotation. Real impacts exhibit tangential +compliance (the contact patch sticks and stretches like a shear +spring)~\cite{mdpifriction,crossoblique}, but a practical engineering fit +calibrated to TrackMan data~\cite{tutelman3d} is simply +\begin{equation} +\label{eq:spinrate} +S_{\mathrm{total}}\ [\mathrm{rpm}] \approx + 160\, v_{\mathrm{club}}[\mathrm{mph}]\, \sin\Phi , +\end{equation} +with the back/side split following from the D-plane direction ratio +$d = \tan A/\tan L$: +$S_{\mathrm{back}} = S/\sqrt{1+d^2}$, $S_{\mathrm{side}} = d\,S_{\mathrm{back}}$. +Cross-checks: $\sim$200--300\,rpm per degree of spin loft for a driver; +the ``iron loft $\times$ 200'' rule matches PGA Tour averages. Friction +saturates near spin lofts of 45--50$\degs$ (the ``spin-loft cliff''), and +wet or grass-contaminated contact reduces spin at fixed spin +loft~\cite{trackmanspinloft}. + +\section{Gear effect and impact location} +\label{sec:gear} + +An impact at horizontal offset $x$ from the CG line torques the head about +its CG; the recoiling face ``gears'' the ball the opposite way. The +angular-impulse model~\cite{tutelmangear} gives head rotation +$\omega_{\mathrm{head}} = x\,m\,v_{\mathrm{ball}}/I_h$ and gear spin +\begin{equation} +\label{eq:gear} +s\ [\mathrm{rpm}] = 58{,}830\, + \frac{v_{\mathrm{ball}}[\mathrm{mph}]\; C[\mathrm{in}]\; + x[\mathrm{in}]}{I_h[\mathrm{g\,cm^2}]} +\;\approx\; 16.4\, v_{\mathrm{ball}}[\mathrm{mph}]\; + x[\mathrm{in}] \times 100, +\end{equation} +where $C$ is CG depth behind the face (32--47\,mm on measured OEM drivers) +and $I_h = 4000$--$5800\,\mathrm{g\,cm^2}$; the ratio $I_h/C$ is nearly +constant across modern drivers, which is why the simplified form works to +$\pm2.5\%$. A toe strike opens the head and imparts \emph{hook} gear spin; +a heel strike, slice spin. Vertical gear effect (high-face strikes reduce +backspin, low-face strikes increase it) follows the same equation with the +vertical CG offset and roll radius. + +Driver faces are built curved to exploit this: \textbf{bulge} (horizontal +radius, typically 12\,in) starts a toe miss right so the gear-effect hook +curves it back. Worked example~\cite{tutelmangear}: a 1\,in toe miss at +150\,mph ball speed gets $+1354$\,rpm of bulge-induced slice spin against +$-2192$\,rpm of gear hook spin --- net 838\,rpm hook and $\sim$10\,yd left, +versus $\sim$61\,yd offline for a flat face. Sensitivity is extreme: a +strike one dimple width ($0.14$\,in) off-center tilts the spin axis +$\sim6\degs$ on a driver ($\sim2\degs$ on a 6-iron)~\cite{perfectgolfswing}. +Irons have shallow CG depth, hence weak gear effect and flat faces. + +\begin{implication} +Gear effect is why \emph{impact location} is the most valuable club +parameter a launch monitor can add after path/face: without it, a pure +D-plane inversion misattributes gear-effect spin-axis tilt to face-to-path. +For a radar-only system this is a fundamental, quantifiable error +source on off-center driver strikes (up to several degrees of apparent +face-to-path); \cref{eq:gear} bounds it, and an optical impact-location +add-on (\cref{ch:implications}) removes it. +\end{implication} + +\section{Vertical plane and the low-point geometry} + +The identical geometry applies vertically: launch angle sits 75--85\% of +the way from attack angle toward dynamic loft, and spin loft sets spin +magnitude via \cref{eq:spinrate}. One non-obvious coupling: for a +descending strike on an inclined swing plane, the instantaneous path points +in-to-out even when the swing direction is square --- e.g.\ hitting +$5\degs$ down on a $60\degs$ plane yields $\approx2.9\degs$ of in-to-out +path. Radar systems that measure swing plane and attack angle use this +relation (path $=f(\text{swing direction, swing plane, attack angle})$) as +a consistency constraint among the measured club parameters. diff --git a/tech-review/sections/04-radar-systems.tex b/tech-review/sections/04-radar-systems.tex index d42336e..41b9d34 100644 --- a/tech-review/sections/04-radar-systems.tex +++ b/tech-review/sections/04-radar-systems.tex @@ -1,258 +1,258 @@ -\chapter{Doppler Radar Systems} -\label{ch:radar} - -\section{Continuous-wave Doppler fundamentals} -\label{sec:cwdoppler} - -A CW radar transmits a carrier at frequency $f_c$ (wavelength $\lambda$) -and receives echoes shifted by the Doppler effect. For a target with -radial velocity $v_r$, -\begin{equation} -\label{eq:doppler} -f_d = \frac{2 v_r}{\lambda} = \frac{2 f_c v_r}{c}. -\end{equation} -At the 24.125\,GHz K-band center frequency used by the OPS243-A (and the -Garmin R10, Full Swing KIT, original Mevo), each 1\,mph of radial speed -produces $\approx71.7$\,Hz of shift; at X-band ($\sim$10.5\,GHz, TrackMan's -long-range subsystem and the Mevo+) the constant is -$\approx31.3$\,Hz/mph. A spinning, translating golf ball is not a point -target: every surface patch has its own radial velocity, so the return is a -velocity \emph{spectrum} whose structure carries the spin information -(\cref{sec:radarspin}). - -Band choice is a range-vs-resolution trade. X-band supports long-range -full-flight tracking (TrackMan tracks the entire $\sim$6\,s flight); -24\,GHz gives finer velocity resolution per unit observation time and -compact low-power hardware, but consumer 24\,GHz units track only -$\sim$30\,yd of flight~\cite{fccTman4,mevoteardown,garminr10data}. - -\section{From velocity sensor to 3D tracker: phase interferometry} -\label{sec:interferometry} - -A single-channel Doppler radar measures radial speed only. Every serious -launch monitor adds \emph{multiple receive antennas} and measures the -\emph{phase difference} of the return across receiver pairs -(phase-comparison monopulse / interferometry). A wavefront arriving from -direction $\uvec{u}$ reaches two antennas separated by baseline $\vect{d}$ -with time delay $\tau = (\vect{d}\cdot\uvec{u})/c$, observed after mixing -as a phase difference -\begin{equation} -\label{eq:interferometry} -\Delta\varphi = 2\pi f_c \tau \ (\mathrm{mod}\ 2\pi) -\quad\Longrightarrow\quad -u = \frac{\lambda\,\Delta\varphi}{2\pi d}, -\end{equation} -where $u$ is the direction cosine along the baseline. Two orthogonal -baselines give azimuth and elevation; the $2\pi$ ambiguities are resolved -with more than three antennas at staggered spacings (TrackMan -US\,9,958,527~\cite{us12186643}). Combined with range (from -multi-frequency CW phase differences or an FMCW chirp) and range rate -(Doppler), the radar produces a full 3D track $(r,\mathrm{az}, -\mathrm{el},\dot r)$ per epoch. Tuxen's spin-axis patent describes exactly -this ``phase--phase monopulse comparison \ldots\ or interferometry'' across -three receivers~\cite{us10850179}; the Garmin R10 uses a three-receiver -24\,GHz array the same way~\cite{garminr10data}; FlightScope describes its -aperture as a phased antenna array~\cite{flightscopex3}. - -\begin{implication} -OpenFlight's architecture --- OPS243-A for speed plus two K-LD7 modules for -vertical and horizontal angles --- is a physically separated version of -what commercial units do on one board: the K-LD7's RADC mode exposes raw -ADC data from its two receive patches, and per-bin phase comparison -\cref{eq:interferometry} yields the angle of each detection. The -commercial lesson is that angle accuracy is limited by baseline length, -SNR, and mutual calibration; a rigid mechanical mount and a one-time -angular calibration against surveyed targets matter more than any software -refinement. -\end{implication} - -\section{CW + FMCW hybrids} -\label{sec:fmcw} - -Full Swing's patent US\,11,311,789 (published as -US\,2020/0147470)~\cite{fullswingpatent} is -the clearest public description of a hybrid launch-monitor radar: two -$\sim$24\,GHz transmitters, time-division multiplexed, one CW and one -linear-FMCW. The CW channel provides club speed, ball speed, spin, and -launch-window angles from Doppler; the FMCW chirp provides direct range to -250\,m+, carry, and side displacement from beat-frequency and phase -measurements. The antenna layout is deliberately \emph{non-uniform} --- -four receive antennas symmetric about the axis, two transmit antennas -placed asymmetrically --- to enrich the phase/frequency structure of the -receive signal. FlightScope's X3 similarly advertises ``multi-frequency -radar with direct distance measurement''~\cite{flightscopex3}. - -\section{Ball measurement} - -\subsection{Speed and launch angles} - -Ball speed is read from the dominant Doppler line immediately after -impact; launch angles come from the interferometric track over the first -meters of flight. These are the most directly measured quantities in the -whole parameter set and show the best inter-device agreement in every -independent study (\cref{ch:accuracy}). Because the radar sits behind -(or above) the ball, the measured radial speed underestimates the true -speed by the cosine of the aspect angle; commercial units correct this -using the tracked geometry, and the correction is largest for high launch -angles and close radar placement. - -\subsection{Spin rate: the harmonic-sideband method} -\label{sec:radarspin} - -The foundational method is Tuxen's patent -US\,8,845,442~\cite{us8845442} (EP\,1\,698\,380). A golf ball's dimples, -paint, logo, seam, and core asymmetry make its radar cross-section vary -periodically as it rotates. A surface feature at radius $r$ contributes a -Doppler term -\begin{equation} -f_{d,\mathrm{feature}}(t) = \frac{2}{\lambda} - \bigl(v_r - r\,\omega \sin\omega t\bigr), -\end{equation} -i.e.\ frequency modulation of the return at the spin frequency -$\omega/2\pi$ with deviation $(2/\lambda) r\omega$. The received spectrum -therefore shows the main translational Doppler line flanked by -\textbf{equally spaced harmonic sidebands} at -\begin{equation} -\label{eq:sidebands} -f = f_{d} \pm n\,f_{\mathrm{spin}}, \quad n = 1,2,3,\ldots -\qquad\Longrightarrow\qquad -S\,[\mathrm{rpm}] = 60\,\Delta f_{\mathrm{sideband}}. -\end{equation} -The patented processing chain: (1) track the central velocity trace -through the short-time Fourier transform; (2) detect symmetric sideband -peaks; (3) track them over time as spectral traces; (4) \emph{qualify} -harmonics by verifying constant equal spacing across consecutive FFT -frames; (5) solve the harmonic-number assignment; (6) divide trace offset -by harmonic number~\cite{us8845442,trackmanspinpatentblog}. In practice a -cepstrum or harmonic-product-spectrum estimator finds the comb spacing -robustly. - -Two practical corollaries: sideband SNR depends on ball-surface asymmetry -(pristine two-piece range balls read weakly --- the origin of -``marked-ball'' modes and Titleist RCT balls with embedded metal tags); -and the comb yields spin \emph{rate} only --- the axis must come from -elsewhere. - -\subsection{Spin axis: trajectory inversion} -\label{sec:spinaxis} - -The same patent discloses the standard radar route to spin axis. From the -differentiated 3D track, total acceleration $\vect{A}$ decomposes as -$\vect{A} = \vect{g} + \vect{D} + \vect{L}$ with drag $\vect{D}$ -antiparallel to the airspeed vector and Magnus lift $\vect{L}$ -perpendicular to both the spin axis and the velocity. Projecting out -gravity and drag, -\begin{equation} -\label{eq:liftextract} -\vect{D} = \Bigl[\frac{(\vect{A}-\vect{g})\cdot\vect{v}_a} - {\lVert\vect{v}_a\rVert^2}\Bigr]\vect{v}_a, -\qquad -\vect{L} = \vect{A} - \vect{g} - \vect{D}, -\end{equation} -and the orthogonality constraint $\vect{L}\cdot\hat{\vect{\omega}} = 0$, -stacked over many trajectory points, gives an overdetermined linear system -for the spin-axis direction $\hat{\vect{\omega}}$~\cite{us8845442}. This -works well outdoors with seconds of observed flight; indoors, with -2--6\,m of flight before the screen, the curvature signal is tiny and the -axis becomes an estimate. FlightScope patented a direct alternative --- -time delays between vertically and horizontally separated receiver pairs -yield the axis angle -$\Phi = \arctan[S_H T_H / (S_V T_V)]$~\cite{us10775492} --- precisely to -recover the axis at short range. - -\subsection{Flight: tracked outdoors, modeled indoors} - -Outdoors, TrackMan-class units report \emph{measured} carry, apex, and -landing angle from the full track. Indoors every radar unit observes only -the pre-screen segment (TrackMan~4 requires $\ge4.7$\,m of throw; -FlightScope claims 8\,ft suffices with Fusion Tracking) and extrapolates -with an aerodynamic model anchored to the vendor's measured-flight -database~\cite{trackmanspecs,homeperformancelab}. The Garmin R10 -illustrates the consumer floor: it requires $\ge$20\,m of visible flight -and ball speed above $\sim$90\,mph to measure spin at all; otherwise spin -is estimated by a fitted model from the measured -inputs~\cite{garminr10accuracy}. - -\section{Club measurement} -\label{sec:radarclub} - -\subsection{What the radar tracks on the head} - -The clubhead is a large, complex reflector whose parts move at different -speeds (toe faster than heel by up to $\sim$7\mph{} on a driver). TrackMan -defines club speed at the head's \emph{geometric center} and reconstructs -that point by ``directly measuring the 3D silhouette of the club -head''~\cite{trackmanclubspeed}; naive processors lock onto the strongest -or fastest return and systematically over-report. Attack angle and club -path are the vertical and horizontal direction of the geometric center's -velocity at impact; swing plane, swing direction, and low point are -properties of the center's trajectory arc through the hitting zone. - -\subsection{Face angle and dynamic loft} -\label{sec:faceangle} - -Radar cannot see face orientation. On radar-only systems, face angle and -dynamic loft are obtained by \emph{inverting the D-plane collision model} -(\cref{sec:facepathweighting}): given measured launch direction, club -path, and the loft-dependent weighting $w_f$, -\begin{equation} -\label{eq:faceinversion} -\varphi_f = \frac{\varphi_{\mathrm{launch}} - (1-w_f)\,\varphi_p}{w_f}, -\end{equation} -and analogously dynamic loft from launch angle and attack angle. TrackMan -has confirmed these are ``derived numbers from direct measurements and a -collision model,'' validated by robot testing~\cite{manzellaforum}. On -TrackMan~4/iO with OERT (\cref{sec:oert}), the company's position is that -club delivery including face angle at the contact point is measured via -synchronized radar+camera silhouette tracking rather than back-computed ---- though the exact split remains proprietary. Consumer units are -explicit about the hierarchy: Garmin specifies launch direction at -$\pm1\degs$ (measured) but face angle at $\pm2\degs$ and classifies it as -calculated~\cite{garminr10accuracy}. - -\begin{keypoint} -The reported ``face angle'' on a radar launch monitor is, to first order, -a rescaled launch direction. It inherits launch-direction bias amplified -by $1/w_f\approx1.15$, plus a gear-effect error on off-center strikes -that the model cannot see (\cref{sec:gear}). This is not a defect of any -particular product but a structural property of the modality. -\end{keypoint} - -\subsection{Known limitations} - -Independent benchmarking consistently finds club parameters far less -accurate than ball parameters for radar (and for camera systems without -face markers): the Leach et al.\ criterion study is the key -reference~\cite{leach2017}. Irons are harder than drivers (shaft and hosel -returns, turf strike clutter, lower speeds); TrackMan's advertised -``$>$90\% club-data pickup rate'' with OERT is itself an acknowledgment -that pickup is not universal~\cite{trackmanoert}. Alignment error -translates directly into correlated path/face bias on all units. - -\section{Optically enhanced radar: OERT and Fusion Tracking} -\label{sec:oert} - -TrackMan~4 fuses its dual radar (X-band long-range ball subsystem + -24\,GHz high-resolution club/impact subsystem, receivers sampled at -40\,ksps) with a built-in camera synchronized in time and space: the -camera contributes exact pre-impact ball position, markerless -\emph{impact location} on the face, and ``4D silhouette'' clubhead -tracking between radar epochs~\cite{trackmanoert,fccTman4}. The -indoor-only TrackMan~iO packs a 24\,GHz radar with dual cameras --- one at -up to 4,600\,fps for club and ball, one for alignment --- under 810--850\,nm -IR illumination~\cite{trackmanspecs}. FlightScope's patented equivalent is -Fusion Tracking (US\,10,338,209~\cite{us10338209}): the radar's predicted -track steers image search windows, the camera's precise angular fixes -correct the radar's, and inter-sensor offsets are removed by error -minimization. Rapsodo's MLM2PRO pairs radar with 240\,fps cameras that -read the printed dot pattern on RPT/RCT balls for measured spin rate and -axis~\cite{mygolfspymlm2pro}; Full Swing's KIT feeds a 4K camera into an -ML pipeline alongside its CW+FMCW radar~\cite{fullswingkit}. - -\begin{keypoint} -Every major radar vendor has independently concluded that pure Doppler is -insufficient at short range --- for spin axis, impact location, and -club-face data --- and has added optical sensing or instrumented balls. -This is the strongest architectural signal in the market for OpenFlight's -roadmap. -\end{keypoint} +\chapter{Doppler Radar Systems} +\label{ch:radar} + +\section{Continuous-wave Doppler fundamentals} +\label{sec:cwdoppler} + +A CW radar transmits a carrier at frequency $f_c$ (wavelength $\lambda$) +and receives echoes shifted by the Doppler effect. For a target with +radial velocity $v_r$, +\begin{equation} +\label{eq:doppler} +f_d = \frac{2 v_r}{\lambda} = \frac{2 f_c v_r}{c}. +\end{equation} +At the 24.125\,GHz K-band center frequency used by the OPS243-A (and the +Garmin R10, Full Swing KIT, original Mevo), each 1\,mph of radial speed +produces $\approx71.7$\,Hz of shift; at X-band ($\sim$10.5\,GHz, TrackMan's +long-range subsystem and the Mevo+) the constant is +$\approx31.3$\,Hz/mph. A spinning, translating golf ball is not a point +target: every surface patch has its own radial velocity, so the return is a +velocity \emph{spectrum} whose structure carries the spin information +(\cref{sec:radarspin}). + +Band choice is a range-vs-resolution trade. X-band supports long-range +full-flight tracking (TrackMan tracks the entire $\sim$6\,s flight); +24\,GHz gives finer velocity resolution per unit observation time and +compact low-power hardware, but consumer 24\,GHz units track only +$\sim$30\,yd of flight~\cite{fccTman4,mevoteardown,garminr10data}. + +\section{From velocity sensor to 3D tracker: phase interferometry} +\label{sec:interferometry} + +A single-channel Doppler radar measures radial speed only. Every serious +launch monitor adds \emph{multiple receive antennas} and measures the +\emph{phase difference} of the return across receiver pairs +(phase-comparison monopulse / interferometry). A wavefront arriving from +direction $\uvec{u}$ reaches two antennas separated by baseline $\vect{d}$ +with time delay $\tau = (\vect{d}\cdot\uvec{u})/c$, observed after mixing +as a phase difference +\begin{equation} +\label{eq:interferometry} +\Delta\varphi = 2\pi f_c \tau \ (\mathrm{mod}\ 2\pi) +\quad\Longrightarrow\quad +u = \frac{\lambda\,\Delta\varphi}{2\pi d}, +\end{equation} +where $u$ is the direction cosine along the baseline. Two orthogonal +baselines give azimuth and elevation; the $2\pi$ ambiguities are resolved +with more than three antennas at staggered spacings (TrackMan +US\,9,958,527~\cite{us12186643}). Combined with range (from +multi-frequency CW phase differences or an FMCW chirp) and range rate +(Doppler), the radar produces a full 3D track $(r,\mathrm{az}, +\mathrm{el},\dot r)$ per epoch. Tuxen's spin-axis patent describes exactly +this ``phase--phase monopulse comparison \ldots\ or interferometry'' across +three receivers~\cite{us10850179}; the Garmin R10 uses a three-receiver +24\,GHz array the same way~\cite{garminr10data}; FlightScope describes its +aperture as a phased antenna array~\cite{flightscopex3}. + +\begin{implication} +A minimal radar architecture --- one CW Doppler module for speed plus two angle-radar modules for +vertical and horizontal angles --- is a physically separated version of +what commercial units do on one board: the K-LD7's RADC mode exposes raw +ADC data from its two receive patches, and per-bin phase comparison +\cref{eq:interferometry} yields the angle of each detection. The +commercial lesson is that angle accuracy is limited by baseline length, +SNR, and mutual calibration; a rigid mechanical mount and a one-time +angular calibration against surveyed targets matter more than any software +refinement. +\end{implication} + +\section{CW + FMCW hybrids} +\label{sec:fmcw} + +Full Swing's patent US\,11,311,789 (published as +US\,2020/0147470)~\cite{fullswingpatent} is +the clearest public description of a hybrid launch-monitor radar: two +$\sim$24\,GHz transmitters, time-division multiplexed, one CW and one +linear-FMCW. The CW channel provides club speed, ball speed, spin, and +launch-window angles from Doppler; the FMCW chirp provides direct range to +250\,m+, carry, and side displacement from beat-frequency and phase +measurements. The antenna layout is deliberately \emph{non-uniform} --- +four receive antennas symmetric about the axis, two transmit antennas +placed asymmetrically --- to enrich the phase/frequency structure of the +receive signal. FlightScope's X3 similarly advertises ``multi-frequency +radar with direct distance measurement''~\cite{flightscopex3}. + +\section{Ball measurement} + +\subsection{Speed and launch angles} + +Ball speed is read from the dominant Doppler line immediately after +impact; launch angles come from the interferometric track over the first +meters of flight. These are the most directly measured quantities in the +whole parameter set and show the best inter-device agreement in every +independent study (\cref{ch:accuracy}). Because the radar sits behind +(or above) the ball, the measured radial speed underestimates the true +speed by the cosine of the aspect angle; commercial units correct this +using the tracked geometry, and the correction is largest for high launch +angles and close radar placement. + +\subsection{Spin rate: the harmonic-sideband method} +\label{sec:radarspin} + +The foundational method is Tuxen's patent +US\,8,845,442~\cite{us8845442} (EP\,1\,698\,380). A golf ball's dimples, +paint, logo, seam, and core asymmetry make its radar cross-section vary +periodically as it rotates. A surface feature at radius $r$ contributes a +Doppler term +\begin{equation} +f_{d,\mathrm{feature}}(t) = \frac{2}{\lambda} + \bigl(v_r - r\,\omega \sin\omega t\bigr), +\end{equation} +i.e.\ frequency modulation of the return at the spin frequency +$\omega/2\pi$ with deviation $(2/\lambda) r\omega$. The received spectrum +therefore shows the main translational Doppler line flanked by +\textbf{equally spaced harmonic sidebands} at +\begin{equation} +\label{eq:sidebands} +f = f_{d} \pm n\,f_{\mathrm{spin}}, \quad n = 1,2,3,\ldots +\qquad\Longrightarrow\qquad +S\,[\mathrm{rpm}] = 60\,\Delta f_{\mathrm{sideband}}. +\end{equation} +The patented processing chain: (1) track the central velocity trace +through the short-time Fourier transform; (2) detect symmetric sideband +peaks; (3) track them over time as spectral traces; (4) \emph{qualify} +harmonics by verifying constant equal spacing across consecutive FFT +frames; (5) solve the harmonic-number assignment; (6) divide trace offset +by harmonic number~\cite{us8845442,trackmanspinpatentblog}. In practice a +cepstrum or harmonic-product-spectrum estimator finds the comb spacing +robustly. + +Two practical corollaries: sideband SNR depends on ball-surface asymmetry +(pristine two-piece range balls read weakly --- the origin of +``marked-ball'' modes and Titleist RCT balls with embedded metal tags); +and the comb yields spin \emph{rate} only --- the axis must come from +elsewhere. + +\subsection{Spin axis: trajectory inversion} +\label{sec:spinaxis} + +The same patent discloses the standard radar route to spin axis. From the +differentiated 3D track, total acceleration $\vect{A}$ decomposes as +$\vect{A} = \vect{g} + \vect{D} + \vect{L}$ with drag $\vect{D}$ +antiparallel to the airspeed vector and Magnus lift $\vect{L}$ +perpendicular to both the spin axis and the velocity. Projecting out +gravity and drag, +\begin{equation} +\label{eq:liftextract} +\vect{D} = \Bigl[\frac{(\vect{A}-\vect{g})\cdot\vect{v}_a} + {\lVert\vect{v}_a\rVert^2}\Bigr]\vect{v}_a, +\qquad +\vect{L} = \vect{A} - \vect{g} - \vect{D}, +\end{equation} +and the orthogonality constraint $\vect{L}\cdot\hat{\vect{\omega}} = 0$, +stacked over many trajectory points, gives an overdetermined linear system +for the spin-axis direction $\hat{\vect{\omega}}$~\cite{us8845442}. This +works well outdoors with seconds of observed flight; indoors, with +2--6\,m of flight before the screen, the curvature signal is tiny and the +axis becomes an estimate. FlightScope patented a direct alternative --- +time delays between vertically and horizontally separated receiver pairs +yield the axis angle +$\Phi = \arctan[S_H T_H / (S_V T_V)]$~\cite{us10775492} --- precisely to +recover the axis at short range. + +\subsection{Flight: tracked outdoors, modeled indoors} + +Outdoors, TrackMan-class units report \emph{measured} carry, apex, and +landing angle from the full track. Indoors every radar unit observes only +the pre-screen segment (TrackMan~4 requires $\ge4.7$\,m of throw; +FlightScope claims 8\,ft suffices with Fusion Tracking) and extrapolates +with an aerodynamic model anchored to the vendor's measured-flight +database~\cite{trackmanspecs,homeperformancelab}. The Garmin R10 +illustrates the consumer floor: it requires $\ge$20\,m of visible flight +and ball speed above $\sim$90\,mph to measure spin at all; otherwise spin +is estimated by a fitted model from the measured +inputs~\cite{garminr10accuracy}. + +\section{Club measurement} +\label{sec:radarclub} + +\subsection{What the radar tracks on the head} + +The clubhead is a large, complex reflector whose parts move at different +speeds (toe faster than heel by up to $\sim$7\mph{} on a driver). TrackMan +defines club speed at the head's \emph{geometric center} and reconstructs +that point by ``directly measuring the 3D silhouette of the club +head''~\cite{trackmanclubspeed}; naive processors lock onto the strongest +or fastest return and systematically over-report. Attack angle and club +path are the vertical and horizontal direction of the geometric center's +velocity at impact; swing plane, swing direction, and low point are +properties of the center's trajectory arc through the hitting zone. + +\subsection{Face angle and dynamic loft} +\label{sec:faceangle} + +Radar cannot see face orientation. On radar-only systems, face angle and +dynamic loft are obtained by \emph{inverting the D-plane collision model} +(\cref{sec:facepathweighting}): given measured launch direction, club +path, and the loft-dependent weighting $w_f$, +\begin{equation} +\label{eq:faceinversion} +\varphi_f = \frac{\varphi_{\mathrm{launch}} - (1-w_f)\,\varphi_p}{w_f}, +\end{equation} +and analogously dynamic loft from launch angle and attack angle. TrackMan +has confirmed these are ``derived numbers from direct measurements and a +collision model,'' validated by robot testing~\cite{manzellaforum}. On +TrackMan~4/iO with OERT (\cref{sec:oert}), the company's position is that +club delivery including face angle at the contact point is measured via +synchronized radar+camera silhouette tracking rather than back-computed +--- though the exact split remains proprietary. Consumer units are +explicit about the hierarchy: Garmin specifies launch direction at +$\pm1\degs$ (measured) but face angle at $\pm2\degs$ and classifies it as +calculated~\cite{garminr10accuracy}. + +\begin{keypoint} +The reported ``face angle'' on a radar launch monitor is, to first order, +a rescaled launch direction. It inherits launch-direction bias amplified +by $1/w_f\approx1.15$, plus a gear-effect error on off-center strikes +that the model cannot see (\cref{sec:gear}). This is not a defect of any +particular product but a structural property of the modality. +\end{keypoint} + +\subsection{Known limitations} + +Independent benchmarking consistently finds club parameters far less +accurate than ball parameters for radar (and for camera systems without +face markers): the Leach et al.\ criterion study is the key +reference~\cite{leach2017}. Irons are harder than drivers (shaft and hosel +returns, turf strike clutter, lower speeds); TrackMan's advertised +``$>$90\% club-data pickup rate'' with OERT is itself an acknowledgment +that pickup is not universal~\cite{trackmanoert}. Alignment error +translates directly into correlated path/face bias on all units. + +\section{Optically enhanced radar: OERT and Fusion Tracking} +\label{sec:oert} + +TrackMan~4 fuses its dual radar (X-band long-range ball subsystem + +24\,GHz high-resolution club/impact subsystem, receivers sampled at +40\,ksps) with a built-in camera synchronized in time and space: the +camera contributes exact pre-impact ball position, markerless +\emph{impact location} on the face, and ``4D silhouette'' clubhead +tracking between radar epochs~\cite{trackmanoert,fccTman4}. The +indoor-only TrackMan~iO packs a 24\,GHz radar with dual cameras --- one at +up to 4,600\,fps for club and ball, one for alignment --- under 810--850\,nm +IR illumination~\cite{trackmanspecs}. FlightScope's patented equivalent is +Fusion Tracking (US\,10,338,209~\cite{us10338209}): the radar's predicted +track steers image search windows, the camera's precise angular fixes +correct the radar's, and inter-sensor offsets are removed by error +minimization. Rapsodo's MLM2PRO pairs radar with 240\,fps cameras that +read the printed dot pattern on RPT/RCT balls for measured spin rate and +axis~\cite{mygolfspymlm2pro}; Full Swing's KIT feeds a 4K camera into an +ML pipeline alongside its CW+FMCW radar~\cite{fullswingkit}. + +\begin{keypoint} +Every major radar vendor has independently concluded that pure Doppler is +insufficient at short range --- for spin axis, impact location, and +club-face data --- and has added optical sensing or instrumented balls. +This is the strongest architectural signal in the market for a radar-first design's +roadmap. +\end{keypoint} diff --git a/tech-review/sections/05-camera-systems.tex b/tech-review/sections/05-camera-systems.tex index b5511c4..07ae762 100644 --- a/tech-review/sections/05-camera-systems.tex +++ b/tech-review/sections/05-camera-systems.tex @@ -1,174 +1,174 @@ -\chapter{Photometric (Camera) Systems} -\label{ch:camera} - -\section{Imaging architectures} -\label{sec:camarch} - -Photometric launch monitors capture a short burst of high-speed, IR-strobed -stereo images over a small capture volume beside (or above) the tee --- -roughly the first 30\,cm of ball flight --- and reconstruct ball and club -kinematics photogrammetrically. The commercial family tree: - -\begin{itemize} -\item \textbf{Foresight Sports} defined the reference floor-unit design. -The GC2 (2010) used two cameras (``stereoscopic''), with club data via the -add-on HMT module (two more cameras). The GC3 / Bushnell Launch Pro (a -Foresight-built rebadge) use three cameras; the GCQuad and QuadMAX use -four cameras at the corners of the sensor window, capturing on the order -of 200 images of ball and club per shot at burst rates quoted up to -10,000\,fps; the ceiling-mounted GCHawk points the same quadrascopic -package downward~\cite{foresightgcquad,playbetterblp}. Onboard IR object -tracking detects the teed ball and the inbound clubhead and triggers the -burst; intrinsics/extrinsics are factory-calibrated (``no calibration -needed'')~\cite{foresightgcquad}. -\item \textbf{Uneekor} mounts overhead: EYE~XO/XO2 look straight down from -$\sim$3\,m with two (XO2: three) high-speed IR cameras at -3,000+\,fps~\cite{uneekoreyexo}. The overhead geometry sees the clubhead -and face region directly, enabling sticker-free club data and -impact-location video replay (Club Optix). The portable EYE~MINI reverts -to a side view and therefore requires club stickers. -\item \textbf{ProTee VX}: overhead, two synchronized high-speed cameras -with IR illumination and an ML shot-analysis pipeline; sticker-free club -and ball data including vertical/horizontal impact -point~\cite{proteevx}. -\item \textbf{Garmin Approach R50}: three high-speed cameras arranged -horizontally in a floor unit; purely optical ball and club measurement, -with clubhead data requiring reflective fiducials~\cite{garminr50}. -\item \textbf{SkyTrak / SkyTrak+}: the original SkyTrak was photometric and -ball-only; the SkyTrak+ added a dual Doppler radar module specifically for -club data while the cameras handle ball launch and spin~\cite{skytrakplus}. -\end{itemize} - -\section{Ball measurement} - -\subsection{Photogrammetric position and velocity} - -With factory-known intrinsics $K_i$ and extrinsics $[R_i|\vect{t}_i]$, -each synchronized image set yields a 3D ball-center fix by triangulation: -back-project the matched detections as rays and solve the least-squares -intersection (or the DLT system $\tilde{\vect{x}}\times(P\vect{X})=0$), -refining by reprojection error. Ball speed is the displacement between -timestamped fixes; launch angle and direction are the components of the -initial velocity vector in the calibrated target frame. Two error sources -dominate: depth error grows quadratically with distance, -\begin{equation} -\label{eq:depth} -\sigma_Z = \frac{Z^2\,\sigma_{px}}{f\,B}, -\end{equation} -for baseline $B$ and focal length $f$ --- which is why photometric units -keep the capture volume small and also exploit the known ball diameter -(21.34\,mm radius) as an auxiliary range cue; and center-finding bias --- -fitting the projected \emph{conic} outline rather than taking the blob -centroid avoids a systematic offset of up to $RZ/f$ pixels. - -\subsection{Spin: dimple-pattern registration} -\label{sec:dimplespin} - -The flagship photometric capability is markerless 3D spin. Successive -frames of the ball are registered on the sphere: the estimator searches -the rotation $R\in SO(3)$ that best maps the back-projected surface -texture (the dimple pattern, plus any logo or blemish) of frame $k$ onto -frame $k{+}1$ --- Foresight brands this \emph{spherical correlation}; -Uneekor, \emph{Dimple Optix}~\cite{foresightspherical,uneekordimple}. -The recovered $R$ gives everything at once: -\begin{equation} -\label{eq:rotangle} -\hat{\vect{\omega}} = \mathrm{eig}_1(R), \qquad -\theta = \arccos\!\Bigl(\frac{\mathrm{tr}\,R - 1}{2}\Bigr), \qquad -\omega = \theta/\Delta t, -\end{equation} -i.e.\ the spin axis is the eigenvector of $R$ with unit eigenvalue and the -spin rate follows from the per-frame rotation angle. Reported accuracy is -1--3\% of true spin, independent of ball speed. The known failure mode is -rotational aliasing at high spin and low frame rate (the $n\cdot2\pi$ -ambiguity), resolved by multi-hypothesis tracking or a -trajectory-consistency prior. Where resolution cannot support dimple -registration, systems fall back to \emph{marked balls}: Uneekor QED and -Rapsodo (RPT balls) track printed high-contrast features, giving closed-form -rotation from $\ge3$ correspondences via the Kabsch/Horn algorithm. - -\section{Club measurement} -\label{sec:camclub} - -\subsection{Fiducial markers: the Foresight approach} - -Foresight floor units require retroreflective \textbf{fiducial dots} on -the clubface. The dot count maps directly to the data -tier~\cite{foresighthmt,foresightmarkers}: one dot suffices for club -speed, path, and attack angle (tracking a single 3D point through the -capture volume); \emph{four dots} --- placed on the vertical centerline, -equidistant from the horizontal centerline --- define the face plane and -enable face angle, dynamic loft, lie, closure rate -(\si{\degree\per\second}), and \textbf{impact location}. Mechanically: the -IR strobe makes the dots bloom in every frame; triangulating the dot -constellation across cameras and frames yields the 6-DOF pose of the face -through impact. Club speed is the pose translation rate; path and attack -angle are the velocity direction; face angle and dynamic loft are the -face-plane orientation at contact; impact location is the measured ball -position expressed in the face frame. The GC3/Launch Pro tier delivers -speed, path, attack, face angle, and impact via the same stickers but -omits dynamic loft, lie, and closure rate --- these remain -GCQuad/QuadMAX exclusives~\cite{playbetterblp}. - -\subsection{Sticker-free overhead tracking} - -Uneekor's overhead cameras segment the clubhead silhouette directly --- -no markers --- because the top-down view presents the head against the mat -with controlled IR illumination; the systems also record actual -high-speed impact video (face-on via Club Optix), from which impact -location is read~\cite{uneekoreyexo}. ProTee VX claims the same -sticker-free club set (speed, path, face, attack, dynamic loft, lie, -vertical and horizontal impact point) from its overhead ML -pipeline~\cite{proteevx}. The trade-off is installation: overhead units -need $\sim$3\,m ceilings, rigid mounting, and a floor-chart calibration. - -\subsection{Calibration} - -Factory-rigid multi-camera rigs ship calibrated; the user aligns only the -target line. Overhead systems require field calibration: Uneekor's -procedure places a printed calibration chart on the mat, levels it, -squares it to the screen, and aligns its crosshair to overlays on the -live camera feeds --- establishing the ground plane, hitting zone, and -target-line extrinsics~\cite{uneekorcalib}. This is the pattern a DIY -overhead build should copy. - -\section{The indoor argument, and what cameras cannot do} - -Photometric systems measure actual launch conditions --- including 3D spin ---- in the first foot of flight; nothing is lost when the ball hits a -screen 2.5\,m away. Radar indoors must infer from a truncated flight. -This is the structural reason camera units dominate indoor simulation -while radar dominates outdoor practice: each modality measures what the -other models~\cite{uneekorphotometric}. The camera's blind spots are -downrange (all flight is simulated from launch) and, for floor units, the -club face itself without stickers --- the same face-visibility problem -radar has, solved with markers instead of models. - -\section{DIY and open-source photometric systems} -\label{sec:diy} - -\textbf{PiTrac}~\cite{pitrac} is the flagship open-source photometric -build and the most relevant external project to OpenFlight. Instead of -multi-kfps cameras it uses \emph{strobed multi-exposure capture}: an IR -LED array pulses several times within one long exposure of a $\sim$\$50 -Raspberry Pi Global Shutter camera, freezing multiple ball images in a -single frame. One camera watches the teed ball and detects launch; the -second captures the strobed flight images; a custom PCB sequences -trigger and strobe. Processing (C++/OpenCV): Hough-circle detection -locates ball images; strobe-timestamped positions give speed and launch -angles; 3D spin on all three axes is solved by searching candidate -rotations that best register the dimple imagery between exposures --- -Gabor-filter dimple enhancement is documented in the adjacent patent -literature~\cite{us12401909}. Total BOM $\approx$\$250--300. The -architecture is a direct descendant of the now-expired Wintriss patents -(\cref{sec:wintriss}) and of the GC2's flash-multi-exposure technique. - -\begin{implication} -PiTrac proves that commodity global-shutter sensors + IR strobing deliver -photometric-grade launch and spin measurement at OpenFlight's price -point. For OpenFlight the natural division of labor is: keep the radar -core for speed/trigger robustness and outdoor use, and adopt a -PiTrac-style strobed camera as the spin/impact-location module indoors ---- the same fusion direction every commercial vendor has taken, from the -opposite starting modality. -\end{implication} +\chapter{Photometric (Camera) Systems} +\label{ch:camera} + +\section{Imaging architectures} +\label{sec:camarch} + +Photometric launch monitors capture a short burst of high-speed, IR-strobed +stereo images over a small capture volume beside (or above) the tee --- +roughly the first 30\,cm of ball flight --- and reconstruct ball and club +kinematics photogrammetrically. The commercial family tree: + +\begin{itemize} +\item \textbf{Foresight Sports} defined the reference floor-unit design. +The GC2 (2010) used two cameras (``stereoscopic''), with club data via the +add-on HMT module (two more cameras). The GC3 / Bushnell Launch Pro (a +Foresight-built rebadge) use three cameras; the GCQuad and QuadMAX use +four cameras at the corners of the sensor window, capturing on the order +of 200 images of ball and club per shot at burst rates quoted up to +10,000\,fps; the ceiling-mounted GCHawk points the same quadrascopic +package downward~\cite{foresightgcquad,playbetterblp}. Onboard IR object +tracking detects the teed ball and the inbound clubhead and triggers the +burst; intrinsics/extrinsics are factory-calibrated (``no calibration +needed'')~\cite{foresightgcquad}. +\item \textbf{Uneekor} mounts overhead: EYE~XO/XO2 look straight down from +$\sim$3\,m with two (XO2: three) high-speed IR cameras at +3,000+\,fps~\cite{uneekoreyexo}. The overhead geometry sees the clubhead +and face region directly, enabling sticker-free club data and +impact-location video replay (Club Optix). The portable EYE~MINI reverts +to a side view and therefore requires club stickers. +\item \textbf{ProTee VX}: overhead, two synchronized high-speed cameras +with IR illumination and an ML shot-analysis pipeline; sticker-free club +and ball data including vertical/horizontal impact +point~\cite{proteevx}. +\item \textbf{Garmin Approach R50}: three high-speed cameras arranged +horizontally in a floor unit; purely optical ball and club measurement, +with clubhead data requiring reflective fiducials~\cite{garminr50}. +\item \textbf{SkyTrak / SkyTrak+}: the original SkyTrak was photometric and +ball-only; the SkyTrak+ added a dual Doppler radar module specifically for +club data while the cameras handle ball launch and spin~\cite{skytrakplus}. +\end{itemize} + +\section{Ball measurement} + +\subsection{Photogrammetric position and velocity} + +With factory-known intrinsics $K_i$ and extrinsics $[R_i|\vect{t}_i]$, +each synchronized image set yields a 3D ball-center fix by triangulation: +back-project the matched detections as rays and solve the least-squares +intersection (or the DLT system $\tilde{\vect{x}}\times(P\vect{X})=0$), +refining by reprojection error. Ball speed is the displacement between +timestamped fixes; launch angle and direction are the components of the +initial velocity vector in the calibrated target frame. Two error sources +dominate: depth error grows quadratically with distance, +\begin{equation} +\label{eq:depth} +\sigma_Z = \frac{Z^2\,\sigma_{px}}{f\,B}, +\end{equation} +for baseline $B$ and focal length $f$ --- which is why photometric units +keep the capture volume small and also exploit the known ball diameter +(21.34\,mm radius) as an auxiliary range cue; and center-finding bias --- +fitting the projected \emph{conic} outline rather than taking the blob +centroid avoids a systematic offset of up to $RZ/f$ pixels. + +\subsection{Spin: dimple-pattern registration} +\label{sec:dimplespin} + +The flagship photometric capability is markerless 3D spin. Successive +frames of the ball are registered on the sphere: the estimator searches +the rotation $R\in SO(3)$ that best maps the back-projected surface +texture (the dimple pattern, plus any logo or blemish) of frame $k$ onto +frame $k{+}1$ --- Foresight brands this \emph{spherical correlation}; +Uneekor, \emph{Dimple Optix}~\cite{foresightspherical,uneekordimple}. +The recovered $R$ gives everything at once: +\begin{equation} +\label{eq:rotangle} +\hat{\vect{\omega}} = \mathrm{eig}_1(R), \qquad +\theta = \arccos\!\Bigl(\frac{\mathrm{tr}\,R - 1}{2}\Bigr), \qquad +\omega = \theta/\Delta t, +\end{equation} +i.e.\ the spin axis is the eigenvector of $R$ with unit eigenvalue and the +spin rate follows from the per-frame rotation angle. Reported accuracy is +1--3\% of true spin, independent of ball speed. The known failure mode is +rotational aliasing at high spin and low frame rate (the $n\cdot2\pi$ +ambiguity), resolved by multi-hypothesis tracking or a +trajectory-consistency prior. Where resolution cannot support dimple +registration, systems fall back to \emph{marked balls}: Uneekor QED and +Rapsodo (RPT balls) track printed high-contrast features, giving closed-form +rotation from $\ge3$ correspondences via the Kabsch/Horn algorithm. + +\section{Club measurement} +\label{sec:camclub} + +\subsection{Fiducial markers: the Foresight approach} + +Foresight floor units require retroreflective \textbf{fiducial dots} on +the clubface. The dot count maps directly to the data +tier~\cite{foresighthmt,foresightmarkers}: one dot suffices for club +speed, path, and attack angle (tracking a single 3D point through the +capture volume); \emph{four dots} --- placed on the vertical centerline, +equidistant from the horizontal centerline --- define the face plane and +enable face angle, dynamic loft, lie, closure rate +(\si{\degree\per\second}), and \textbf{impact location}. Mechanically: the +IR strobe makes the dots bloom in every frame; triangulating the dot +constellation across cameras and frames yields the 6-DOF pose of the face +through impact. Club speed is the pose translation rate; path and attack +angle are the velocity direction; face angle and dynamic loft are the +face-plane orientation at contact; impact location is the measured ball +position expressed in the face frame. The GC3/Launch Pro tier delivers +speed, path, attack, face angle, and impact via the same stickers but +omits dynamic loft, lie, and closure rate --- these remain +GCQuad/QuadMAX exclusives~\cite{playbetterblp}. + +\subsection{Sticker-free overhead tracking} + +Uneekor's overhead cameras segment the clubhead silhouette directly --- +no markers --- because the top-down view presents the head against the mat +with controlled IR illumination; the systems also record actual +high-speed impact video (face-on via Club Optix), from which impact +location is read~\cite{uneekoreyexo}. ProTee VX claims the same +sticker-free club set (speed, path, face, attack, dynamic loft, lie, +vertical and horizontal impact point) from its overhead ML +pipeline~\cite{proteevx}. The trade-off is installation: overhead units +need $\sim$3\,m ceilings, rigid mounting, and a floor-chart calibration. + +\subsection{Calibration} + +Factory-rigid multi-camera rigs ship calibrated; the user aligns only the +target line. Overhead systems require field calibration: Uneekor's +procedure places a printed calibration chart on the mat, levels it, +squares it to the screen, and aligns its crosshair to overlays on the +live camera feeds --- establishing the ground plane, hitting zone, and +target-line extrinsics~\cite{uneekorcalib}. This is the pattern a DIY +overhead build should copy. + +\section{The indoor argument, and what cameras cannot do} + +Photometric systems measure actual launch conditions --- including 3D spin +--- in the first foot of flight; nothing is lost when the ball hits a +screen 2.5\,m away. Radar indoors must infer from a truncated flight. +This is the structural reason camera units dominate indoor simulation +while radar dominates outdoor practice: each modality measures what the +other models~\cite{uneekorphotometric}. The camera's blind spots are +downrange (all flight is simulated from launch) and, for floor units, the +club face itself without stickers --- the same face-visibility problem +radar has, solved with markers instead of models. + +\section{DIY and open-source photometric systems} +\label{sec:diy} + +\textbf{PiTrac}~\cite{pitrac} is the flagship open-source photometric +build and the most relevant open-source precedent. Instead of +multi-kfps cameras it uses \emph{strobed multi-exposure capture}: an IR +LED array pulses several times within one long exposure of a $\sim$\$50 +Raspberry Pi Global Shutter camera, freezing multiple ball images in a +single frame. One camera watches the teed ball and detects launch; the +second captures the strobed flight images; a custom PCB sequences +trigger and strobe. Processing (C++/OpenCV): Hough-circle detection +locates ball images; strobe-timestamped positions give speed and launch +angles; 3D spin on all three axes is solved by searching candidate +rotations that best register the dimple imagery between exposures --- +Gabor-filter dimple enhancement is documented in the adjacent patent +literature~\cite{us12401909}. Total BOM $\approx$\$250--300. The +architecture is a direct descendant of the now-expired Wintriss patents +(\cref{sec:wintriss}) and of the GC2's flash-multi-exposure technique. + +\begin{implication} +PiTrac proves that commodity global-shutter sensors + IR strobing deliver +photometric-grade launch and spin measurement at hobbyist price +point. For a radar-first system the natural division of labor is: keep the radar +core for speed/trigger robustness and outdoor use, and adopt a +PiTrac-style strobed camera as the spin/impact-location module indoors +--- the same fusion direction every commercial vendor has taken, from the +opposite starting modality. +\end{implication} diff --git a/tech-review/sections/06-commercial-survey.tex b/tech-review/sections/06-commercial-survey.tex index dec3fe4..5971515 100644 --- a/tech-review/sections/06-commercial-survey.tex +++ b/tech-review/sections/06-commercial-survey.tex @@ -1,129 +1,129 @@ -\chapter{Commercial System Survey} -\label{ch:survey} - -\Cref{tab:survey} summarizes the sensing architecture of the major -systems; the notes that follow give the technically salient details per -device, with sources in the bibliography. - -\begin{table}[htbp] -\centering\footnotesize -\caption{Launch monitor architecture survey (2026). ``Club source'' -distinguishes directly measured face data (optical) from D-plane-inverted -or model-estimated face data.} -\label{tab:survey} -\begin{tabular}{@{}p{2.6cm}p{3.3cm}p{2.6cm}p{2.9cm}p{2.9cm}@{}} -\toprule -\textbf{System} & \textbf{Primary sensing} & \textbf{Spin method} & -\textbf{Club data source} & \textbf{Impact location} \\ -\midrule -TrackMan 4 & Dual radar (X-band + 24\,GHz) + camera (OERT) & - Doppler sidebands & Radar silhouette + camera & Yes (markerless, OERT) \\ -TrackMan iO & 24\,GHz radar + 4{,}600\,fps camera & Camera + radar & - Radar + camera & Yes (markerless) \\ -FlightScope X3 & Phased-array multi-freq.\ radar + Fusion cameras & - Doppler (dielectric-lens) & Radar; face derived & No \\ -FlightScope Mevo+ & X-band 10.5\,GHz phased array (+ Pro cameras) & - Doppler; stickers indoors & Radar; face derived & No \\ -Garmin R10 & 24\,GHz, 3-receiver CW & Doppler ($\ge$20\,m flight) or - model & Radar; face calculated & No \\ -Garmin R50 & 3 high-speed cameras & Dimple imaging & Optical - (fiducials) & Yes \\ -Full Swing KIT & 24\,GHz CW+FMCW + 4K camera ML & Doppler + ML & - Radar + ML & No \\ -Rapsodo MLM2PRO & Radar + 2$\times$240\,fps cameras & Marked ball - (RPT/RCT) & Radar; face derived & Video only \\ -Foresight GCQuad / QuadMAX & 4 cameras, IR strobe & Spherical - correlation & Optical (4 fiducials) & Yes (measured) \\ -GC3 / Launch Pro & 3 cameras, IR strobe & Spherical correlation & - Optical (fiducials; add-on) & Yes \\ -GCHawk & 4 cameras, ceiling & Spherical correlation & Optical & - Yes \\ -Uneekor EYE XO2 & 3 overhead IR cameras, 3{,}000+\,fps & Dimple Optix & - Optical, sticker-free & Yes + video \\ -Uneekor EYE MINI & 2 cameras, portable & Dimple Optix & Optical - (stickers) & Yes \\ -ProTee VX & 2 overhead cameras + ML & Dimple imaging & Optical, - sticker-free & Yes \\ -SkyTrak+ / ST MAX & Cameras (ball) + dual radar (club) & Photometric & - Radar; face derived & No \\ -OpenFlight (current) & OPS243-A 24\,GHz + 2$\times$K-LD7 + sound trigger & - Doppler I/Q buffer ($\sim$50--60\% detect) & Radar; no face data yet & - No \\ -PiTrac (DIY) & 2 Pi GS cameras + IR strobe & Dimple registration & - None yet & No \\ -\bottomrule -\end{tabular} -\end{table} - -\section{Radar-first systems} - -\textbf{TrackMan 4 / iO.} The reference radar architecture: two -synchronized radar subsystems (long-range X-band at the corners for full -ball flight; higher-frequency 24\,GHz at the center for club and impact), -receivers sampled at 40\,ksps to pin the impact instant, fused with an -OERT camera~\cite{fccTman4,trackmanoert,trackmanspecs}. Reports 27+ -parameters including swing plane/direction, low point, dynamic lie, and -D-plane-derived face data; requires $\ge4.7$\,m of indoor throw. The iO is -the indoor-optimized repackaging: 24\,GHz radar, 4,600\,fps club/ball -camera, IR illumination, no minimum-space requirement. - -\textbf{FlightScope X3 / Mevo+.} Phased-array Doppler (X3: -multi-frequency with direct ranging; Mevo+: X-band 10.5--10.55\,GHz per -FCC filings~\cite{mevoteardown}) with Fusion Tracking cameras on the X3 -and Mevo+ Pro. Spin measured via the patented dielectric-lens -phase-demodulation route (\cref{sec:patentflightscope}); metallic -stickers recommended for short indoor flights. FlightScope's 2022 win -against TrackMan at the German Federal Court of Justice, after losing the -2013 EP\,1\,698\,380 case, bookends two decades of radar-spin litigation -between the two~\cite{flightscopebgh}. - -\textbf{Garmin Approach R10.} The instructive budget case: a 24\,GHz -three-receiver CW radar that directly measures only the safe primitives ---- ball speed, launch angles, club speed, club path --- and models the -rest. Spin requires $\ge$20\,m of flight and $>$90\,mph ball speed (or an -RCT marked ball indoors); face angle is explicitly a calculated value at -$\pm2\degs$~\cite{garminr10accuracy,garminr10data}. Garmin's step-up -R50 abandons radar entirely for three cameras --- a telling modality -switch for indoor accuracy. - -\textbf{Full Swing KIT.} The patented CW+FMCW dual-mode 24\,GHz radar -(\cref{sec:fmcw}) with an ML vision assist from its 4K camera; 16 -parameters; third-party testing places it within 1--2\% of -TrackMan/GCQuad in most conditions~\cite{fullswingkit}. - -\textbf{Rapsodo MLM2PRO.} Radar for speed/launch plus two 240\,fps -cameras that read printed RPT/RCT ball markers for measured spin rate and -axis (claimed within 1\% of reference units) --- the cheapest route to -\emph{measured} spin, at the cost of proprietary -balls~\cite{mygolfspymlm2pro}. - -\section{Camera-first systems} - -\textbf{Foresight GCQuad / QuadMAX / GCHawk.} Quadrascopic IR-strobed -capture ($\sim$200 images/shot); spherical-correlation spin; four-dot -fiducial club measurement with closure rate and measured impact location -(\cref{sec:camclub})~\cite{foresightgcquad,foresighthmt}. Robot testing -shows the class-leading spin repeatability -(\cref{ch:accuracy}). - -\textbf{GC3 / Bushnell Launch Pro.} Identical triscopic hardware in two -brands; club data is a paid add-on tier using the same -stickers~\cite{playbetterblp}. - -\textbf{Uneekor EYE XO2 / EYE MINI / ProTee VX.} Overhead sticker-free -club measurement (XO2, VX) versus portable sticker-based (EYE MINI); -Dimple Optix markerless spin; impact video replay~\cite{uneekoreyexo, -proteevx}. - -\textbf{SkyTrak+ / ST MAX.} The camera-to-radar convergence case: the -original photometric ball-only SkyTrak gained a dual-radar club module and -ML fusion in the SkyTrak+~\cite{skytrakplus}. - -\section{Open-source systems} - -\textbf{OpenFlight} (radar-first: OPS243-A I/Q rolling buffer + sound -trigger + K-LD7 interferometric angle radars) and \textbf{PiTrac} -(camera-first: strobed multi-exposure global-shutter imaging) occupy the -two ends of the same spectrum the commercial market spans, at roughly -1/10th the hardware cost. Neither yet measures club face data; both have -clear, patent-informed paths to it (\cref{ch:implications}). +\chapter{Commercial System Survey} +\label{ch:survey} + +\Cref{tab:survey} summarizes the sensing architecture of the major +systems; the notes that follow give the technically salient details per +device, with sources in the bibliography. + +\begin{table}[htbp] +\centering\footnotesize +\caption{Launch monitor architecture survey (2026). ``Club source'' +distinguishes directly measured face data (optical) from D-plane-inverted +or model-estimated face data.} +\label{tab:survey} +\begin{tabular}{@{}p{2.6cm}p{3.3cm}p{2.6cm}p{2.9cm}p{2.9cm}@{}} +\toprule +\textbf{System} & \textbf{Primary sensing} & \textbf{Spin method} & +\textbf{Club data source} & \textbf{Impact location} \\ +\midrule +TrackMan 4 & Dual radar (X-band + 24\,GHz) + camera (OERT) & + Doppler sidebands & Radar silhouette + camera & Yes (markerless, OERT) \\ +TrackMan iO & 24\,GHz radar + 4{,}600\,fps camera & Camera + radar & + Radar + camera & Yes (markerless) \\ +FlightScope X3 & Phased-array multi-freq.\ radar + Fusion cameras & + Doppler (dielectric-lens) & Radar; face derived & No \\ +FlightScope Mevo+ & X-band 10.5\,GHz phased array (+ Pro cameras) & + Doppler; stickers indoors & Radar; face derived & No \\ +Garmin R10 & 24\,GHz, 3-receiver CW & Doppler ($\ge$20\,m flight) or + model & Radar; face calculated & No \\ +Garmin R50 & 3 high-speed cameras & Dimple imaging & Optical + (fiducials) & Yes \\ +Full Swing KIT & 24\,GHz CW+FMCW + 4K camera ML & Doppler + ML & + Radar + ML & No \\ +Rapsodo MLM2PRO & Radar + 2$\times$240\,fps cameras & Marked ball + (RPT/RCT) & Radar; face derived & Video only \\ +Foresight GCQuad / QuadMAX & 4 cameras, IR strobe & Spherical + correlation & Optical (4 fiducials) & Yes (measured) \\ +GC3 / Launch Pro & 3 cameras, IR strobe & Spherical correlation & + Optical (fiducials; add-on) & Yes \\ +GCHawk & 4 cameras, ceiling & Spherical correlation & Optical & + Yes \\ +Uneekor EYE XO2 & 3 overhead IR cameras, 3{,}000+\,fps & Dimple Optix & + Optical, sticker-free & Yes + video \\ +Uneekor EYE MINI & 2 cameras, portable & Dimple Optix & Optical + (stickers) & Yes \\ +ProTee VX & 2 overhead cameras + ML & Dimple imaging & Optical, + sticker-free & Yes \\ +SkyTrak+ / ST MAX & Cameras (ball) + dual radar (club) & Photometric & + Radar; face derived & No \\ +OpenFlight (open source) & OPS243-A 24\,GHz + 2$\times$K-LD7 + sound trigger & + Doppler I/Q buffer ($\sim$50--60\% detect) & Radar; no face data yet & + No \\ +PiTrac (DIY) & 2 Pi GS cameras + IR strobe & Dimple registration & + None yet & No \\ +\bottomrule +\end{tabular} +\end{table} + +\section{Radar-first systems} + +\textbf{TrackMan 4 / iO.} The reference radar architecture: two +synchronized radar subsystems (long-range X-band at the corners for full +ball flight; higher-frequency 24\,GHz at the center for club and impact), +receivers sampled at 40\,ksps to pin the impact instant, fused with an +OERT camera~\cite{fccTman4,trackmanoert,trackmanspecs}. Reports 27+ +parameters including swing plane/direction, low point, dynamic lie, and +D-plane-derived face data; requires $\ge4.7$\,m of indoor throw. The iO is +the indoor-optimized repackaging: 24\,GHz radar, 4,600\,fps club/ball +camera, IR illumination, no minimum-space requirement. + +\textbf{FlightScope X3 / Mevo+.} Phased-array Doppler (X3: +multi-frequency with direct ranging; Mevo+: X-band 10.5--10.55\,GHz per +FCC filings~\cite{mevoteardown}) with Fusion Tracking cameras on the X3 +and Mevo+ Pro. Spin measured via the patented dielectric-lens +phase-demodulation route (\cref{sec:patentflightscope}); metallic +stickers recommended for short indoor flights. FlightScope's 2022 win +against TrackMan at the German Federal Court of Justice, after losing the +2013 EP\,1\,698\,380 case, bookends two decades of radar-spin litigation +between the two~\cite{flightscopebgh}. + +\textbf{Garmin Approach R10.} The instructive budget case: a 24\,GHz +three-receiver CW radar that directly measures only the safe primitives +--- ball speed, launch angles, club speed, club path --- and models the +rest. Spin requires $\ge$20\,m of flight and $>$90\,mph ball speed (or an +RCT marked ball indoors); face angle is explicitly a calculated value at +$\pm2\degs$~\cite{garminr10accuracy,garminr10data}. Garmin's step-up +R50 abandons radar entirely for three cameras --- a telling modality +switch for indoor accuracy. + +\textbf{Full Swing KIT.} The patented CW+FMCW dual-mode 24\,GHz radar +(\cref{sec:fmcw}) with an ML vision assist from its 4K camera; 16 +parameters; third-party testing places it within 1--2\% of +TrackMan/GCQuad in most conditions~\cite{fullswingkit}. + +\textbf{Rapsodo MLM2PRO.} Radar for speed/launch plus two 240\,fps +cameras that read printed RPT/RCT ball markers for measured spin rate and +axis (claimed within 1\% of reference units) --- the cheapest route to +\emph{measured} spin, at the cost of proprietary +balls~\cite{mygolfspymlm2pro}. + +\section{Camera-first systems} + +\textbf{Foresight GCQuad / QuadMAX / GCHawk.} Quadrascopic IR-strobed +capture ($\sim$200 images/shot); spherical-correlation spin; four-dot +fiducial club measurement with closure rate and measured impact location +(\cref{sec:camclub})~\cite{foresightgcquad,foresighthmt}. Robot testing +shows the class-leading spin repeatability +(\cref{ch:accuracy}). + +\textbf{GC3 / Bushnell Launch Pro.} Identical triscopic hardware in two +brands; club data is a paid add-on tier using the same +stickers~\cite{playbetterblp}. + +\textbf{Uneekor EYE XO2 / EYE MINI / ProTee VX.} Overhead sticker-free +club measurement (XO2, VX) versus portable sticker-based (EYE MINI); +Dimple Optix markerless spin; impact video replay~\cite{uneekoreyexo, +proteevx}. + +\textbf{SkyTrak+ / ST MAX.} The camera-to-radar convergence case: the +original photometric ball-only SkyTrak gained a dual-radar club module and +ML fusion in the SkyTrak+~\cite{skytrakplus}. + +\section{Open-source systems} + +\textbf{OpenFlight} (radar-first: OPS243-A I/Q rolling buffer + sound +trigger + K-LD7 interferometric angle radars) and \textbf{PiTrac} +(camera-first: strobed multi-exposure global-shutter imaging) occupy the +two ends of the same spectrum the commercial market spans, at roughly +1/10th the hardware cost. Neither yet measures club face data; both have +clear, patent-informed paths to it (\cref{ch:implications}). diff --git a/tech-review/sections/07-patents.tex b/tech-review/sections/07-patents.tex index d5f9482..56e2fce 100644 --- a/tech-review/sections/07-patents.tex +++ b/tech-review/sections/07-patents.tex @@ -1,208 +1,208 @@ -\chapter{Patent Landscape} -\label{ch:patents} - -The strongest public documentation of proprietary launch-monitor methods -is the patents themselves; they are cited throughout this review as -technical sources. This chapter organizes them by assignee and closes -with a freedom-to-operate (FTO) map. Expiry estimates follow the -20-years-from-priority rule plus patent-term adjustment (PTA), using -Google Patents' anticipated-expiration data where shown; \emph{none of -this is legal advice, and claim-by-claim analysis by counsel is required -before any commercial decision.} - -\section{TrackMan A/S (Interactive Sports Games A/S) --- Fredrik Tuxen} -\label{sec:patenttrackman} - -TrackMan's public patent list enumerates 45 US patents covering -full-trajectory radar tracking, club delivery data, radar spin rate and -spin axis, markerless impact location, and OERT -fusion~\cite{trackmanpatents}. - -\begin{description} -\item[\patent{US8845442B2} --- ``Determination of spin parameters of a -sports ball.''] Priority March 3, 2005; PTA-extended expiry -$\sim$May 2029~\cite{us8845442}. \emph{The} radar-spin patent: harmonic -sidebands equally spaced at the spin frequency around the central Doppler -line, with the trace-tracking/qualification chain of -\cref{sec:radarspin}; spin axis from the Magnus-lift orthogonality -constraint (\cref{eq:liftextract}). The European sibling EP\,1\,698\,380 -was upheld by Germany's Federal Court of Justice and grounded TrackMan's -2013 Düsseldorf win against FlightScope's distributor. Continuation -\patent{US10393870B2} (same disclosure) expires December 2026. -\item[\patent{US8085188B2} / \patent{US9857459B2} / -\patent{US10473778B2} --- target-deviation family.] Priority July 2004. -Camera rigidly mounted to the radar; user taps a target in the image; -system reports launch-to-target deviation with automatic coordinate -transforms. US9857459 lapsed 2022; the siblings expire 2026--27 --- a -safe UX pattern to adopt shortly. -\item[\patent{US10850179B2} (+ US11446546, US11938375) --- spin axis.] -Direct spectral/interferometric spin-axis determination from -per-receiver-pair phase differences; also documents the three-receiver -monopulse architecture~\cite{us10850179}. -\item[\patent{US10989791B2} / \patent{US11828867B2} --- radar+imager -fused tracking; \patent{US11619708B2} / \patent{US12517218B2} --- -inter-sensor calibration; \patent{US10953303B2} family --- markerless -impact location.] The actual OERT-supporting families; active into the -late 2030s. (Note: the frequently mis-cited ``radar + image data 3D -tracking'' patents US10596416/US11697046/US12128275 belong to -\textbf{Topgolf Sweden AB (Toptracer)}, not TrackMan --- see -\cref{app:patents}.) -\item[\patent{US10315093B2} --- trajectory illustration.] The broadcast -``tracer'' overlay (radar track rendered into calibrated video); to 2030. -\item[\patent{US11086005B2} --- multi-bay tracking.] Toptracer-style -back-extrapolation of tracks to assign shots to bays; to $\sim$2036. -\end{description} - -\section{Foresight Sports (WAWGD) and the Wintriss lineage} -\label{sec:wintriss} - -Foresight Sports is WAWGD, Inc.; the foundational photometric patents it -holds (via Wawgd Newco LLC) were invented at Wintriss Engineering by -Christopher Kiraly (a Foresight co-founder) --- and these same numbers -appear on Uneekor's license list following the September 2024 -Foresight--Uneekor license agreement~\cite{businesswireforesight}. - -\begin{description} -\item[\patent{US7292711B2} --- ``Flight parameter measurement system.''] -Priority June 6, 2002; \textbf{expired April 2025}~\cite{us7292711}. The -blueprint single-camera photometric monitor: factory per-pixel 3D -calibration; accelerometer leveling; microphone + small radar horn joint -trigger; strobe-lit sequential images; ball center/diameter with known -ball size giving 3D position per frame; and \emph{markerless spin} by -iterative rotation/correlation of natural surface features (dimples, -blemishes) after glint removal and lighting normalization. -\item[\patent{US7324663B2} --- sibling ``smart camera'' patent.] -Same spec, self-triggering from in-FOV motion; \textbf{expired August -2025}. -\item[\patent{US7497780B2} / \patent{US7641565B2} --- integrated monitor -and ball-placement detection.] Priority 2006; expire $\sim$2027. The -GC2-style UX: optical ball-find, LED placement guidance, frame-differencing -launch detection, mixed-mode capture, on-device display. Foresight -enforced this portable-monitor family as recently as 2024 (Uneekor -settlement). -\item[Later WAWGD filings.] Applications on measuring club path and face -orientation before/at/after impact --- the four-dot GCQuad fiducial system ---- remain active; treat quad-camera + reflective-dot face measurement as -protected. -\end{description} - -\section{FlightScope / EDH --- Henri Johnson} -\label{sec:patentflightscope} - -\begin{description} -\item[\patent{US9868044B2} --- ``Ball spin rate measurement.''] Priority -January 2013; expires $\sim$2034~\cite{us9868044}. The engineered -alternative to TrackMan's sidebands after the 2013 loss: the ball's cover -acts as a \emph{dielectric lens} ($n\approx1.8$) magnifying far-side -surface features in the microwave return; phase demodulation (PLL) yields -repeating bipolar pulses as features sweep the magnification zone; an FFT -extracts the periodicity (seam symmetry doubles the modulation rate, -corrected in software). -\item[\patent{US10775492B2} --- ``Golf ball spin axis measurement.''] -Priority December 2013; expires $\sim$2035~\cite{us10775492}. Direct -axis measurement from time delays between perpendicular receiver pairs: -$\Phi = \arctan[S_H T_H/(S_V T_V)]$ --- works at short indoor flights -where trajectory inversion fails. -\item[\patent{US10338209B2} --- Fusion Tracking.] Priority 2015; expires -$\sim$2037~\cite{us10338209}. Radar+camera fusion with checkerboard -camera calibration, Doppler-simulator radar alignment, radar-steered -image search windows, offset removal by error minimization. -\end{description} - -\section{Acushnet (Titleist) --- the stereo foundation} -\label{sec:patentacushnet} - -The deepest prior art for camera-based monitors; the early family is -entirely expired~\cite{us5501463,us6500073,us6758759}. - -\begin{description} -\item[\patent{US5501463A} (1992, expired).] Two shuttered cameras at -$\sim$22$\degs$, double-strobed $\sim$800\,\si{\micro\second} apart; -three retroreflective dots on the clubhead, six on the ball; -triangulation yields 3D clubhead velocity, attack angle, path, face -orientation, and \emph{contact location on the face}. -\item[\patent{US6500073B1} (1992 priority, expired).] Stereo pair + sound -trigger + six ball dots; position and orientation at two instants give -velocity and angular velocity; numerical flight integration -(drag/Magnus/gravity) gives carry and roll --- the classic tour package. -\item[\patent{US6758759B2} (2001, expired 2022).] Dual two-camera -monitors (club pre-impact, ball post-impact); magnetic fixture calibrates -the head's geometric center; complete recipe for measured face angle and -impact location with marker stickers. -\item[\patent{US7143639B2} family (2004 priority; parent expired 2024).] -Portable four-camera unit with speed-adaptive strobe timing via FPGA -lookup, dichroic marker discrimination, optical club/ball fingerprinting; -continuations \patent{US8500568B2}/\patent{US8556267B2} (hardware -integration claims) run to $\sim$2030--31. -\item[\patent{US10668350B2} (2017; to $\sim$2038).] ``True 3D'' -stereo/light-field capture at 1,000--10,000+\,fps with sub-10\,\si{\micro -\second} exposures and per-frame $xyz$ measurement. -\item[\patent{US6186002B1}.] USGA-adjacent method for extracting -$C_D$/$C_L$ from measured trajectories --- a template for calibrating an -open ball-flight model~\cite{us6186002}. -\end{description} - -\section{Korean ecosystem: Creatz/Uneekor and Golfzon} - -Uneekor's patent list mixes owned Creatz patents (US10247553, US9752875, -US9605960, US9448067, US10587797, US10776929, US11191998, US12008770 --- -including the Dimple Optix markerless-spin engine) with the licensed -Foresight/Wintriss numbers~\cite{uneekorpatents}. -\patent{US10247553B2} (Creatz; to $\sim$2032) claims a sectioned -start-sensor detecting the actual ball starting position for simulation. -Golfzon's \patent{US9242158B2} (to $\sim$2032) claims the latency-hiding -two-stage pipeline --- start the simulated trajectory from fast -``first ball information'' ($\sim$100\,ms), refine in flight when the -slower spin estimate arrives ($\sim$200\,ms)~\cite{us9242158}. - -\section{Freedom-to-operate map} -\label{sec:fto} - -\begin{table}[htbp] -\centering\small -\caption{FTO summary for an open-source launch monitor (US perspective, -mid-2026). Verify claim-by-claim with counsel before commercial use.} -\label{tab:fto} -\begin{tabular}{@{}p{7.6cm}p{3.4cm}p{3.2cm}@{}} -\toprule -\textbf{Technique} & \textbf{Controlling patents} & \textbf{Status} \\ -\midrule -CW Doppler speed measurement & --- & Ancient art; free \\ -Mono-camera photometric launch + markerless dimple-correlation spin & - US7292711 / US7324663 & \textbf{Expired 2025; free} \\ -Stereo + retroreflective dots: club face, path, impact location & - US5501463 / US6500073 / US6758759 / US7143639 & \textbf{Expired; free} \\ -Target-tap deviation UX & US8085188 family & Expires 2026--27 \\ -Radar spin via harmonic sidebands & US8845442 (US10393870) & - To $\sim$2029 (Dec 2026) \\ -Radar spin via dielectric-lens phase demodulation & US9868044 & - To $\sim$2034 \\ -Direct radar spin axis (perpendicular receiver pairs) & US10775492 & - To $\sim$2035 \\ -Radar+camera fusion tracking & US10338209; TrackMan OERT family & - To $\sim$2037+ \\ -Integrated ball-find/placement/trigger workflow & US7497780 / US7641565 & - To $\sim$2027 \\ -Video tracer overlay from sensor track & US10315093 & To $\sim$2030 \\ -Two-stage sim latency hiding & US9242158 & To $\sim$2032 \\ -Start-position sensing & US10247553 & To $\sim$2032 \\ -Light-field / true-3D capture claims & US10668350 & To $\sim$2038 \\ -Multi-bay back-extrapolation attribution & US11086005 & To $\sim$2036 \\ -\bottomrule -\end{tabular} -\end{table} - -\begin{keypoint} -Three strategic conclusions. (1)~A \emph{camera-first} open design has a -wide-open, recently expired foundation (Wintriss + Acushnet) covering -mono/stereo photometric launch measurement, markerless spin, and -marker-based measured club-face data. (2)~\emph{Radar spin} is the most -encumbered corner: the TrackMan sideband family runs to $\sim$2029 and -FlightScope's alternatives to $\sim$2034--35; pure speed/launch-angle -radar (the Garmin R10 recipe) is safe. (3)~\emph{Radar+camera fusion} is -the most actively patented current frontier --- the two giants have -litigated each other in both directions --- and warrants the most care -for any hybrid OpenFlight roadmap. Note also that a non-commercial -AGPL project is not immune: US patent infringement does not require -sale, and downstream commercial users inherit the exposure. -\end{keypoint} +\chapter{Patent Landscape} +\label{ch:patents} + +The strongest public documentation of proprietary launch-monitor methods +is the patents themselves; they are cited throughout this review as +technical sources. This chapter organizes them by assignee and closes +with a freedom-to-operate (FTO) map. Expiry estimates follow the +20-years-from-priority rule plus patent-term adjustment (PTA), using +Google Patents' anticipated-expiration data where shown; \emph{none of +this is legal advice, and claim-by-claim analysis by counsel is required +before any commercial decision.} + +\section{TrackMan A/S (Interactive Sports Games A/S) --- Fredrik Tuxen} +\label{sec:patenttrackman} + +TrackMan's public patent list enumerates 45 US patents covering +full-trajectory radar tracking, club delivery data, radar spin rate and +spin axis, markerless impact location, and OERT +fusion~\cite{trackmanpatents}. + +\begin{description} +\item[\patent{US8845442B2} --- ``Determination of spin parameters of a +sports ball.''] Priority March 3, 2005; PTA-extended expiry +$\sim$May 2029~\cite{us8845442}. \emph{The} radar-spin patent: harmonic +sidebands equally spaced at the spin frequency around the central Doppler +line, with the trace-tracking/qualification chain of +\cref{sec:radarspin}; spin axis from the Magnus-lift orthogonality +constraint (\cref{eq:liftextract}). The European sibling EP\,1\,698\,380 +was upheld by Germany's Federal Court of Justice and grounded TrackMan's +2013 Düsseldorf win against FlightScope's distributor. Continuation +\patent{US10393870B2} (same disclosure) expires December 2026. +\item[\patent{US8085188B2} / \patent{US9857459B2} / +\patent{US10473778B2} --- target-deviation family.] Priority July 2004. +Camera rigidly mounted to the radar; user taps a target in the image; +system reports launch-to-target deviation with automatic coordinate +transforms. US9857459 lapsed 2022; the siblings expire 2026--27 --- a +safe UX pattern to adopt shortly. +\item[\patent{US10850179B2} (+ US11446546, US11938375) --- spin axis.] +Direct spectral/interferometric spin-axis determination from +per-receiver-pair phase differences; also documents the three-receiver +monopulse architecture~\cite{us10850179}. +\item[\patent{US10989791B2} / \patent{US11828867B2} --- radar+imager +fused tracking; \patent{US11619708B2} / \patent{US12517218B2} --- +inter-sensor calibration; \patent{US10953303B2} family --- markerless +impact location.] The actual OERT-supporting families; active into the +late 2030s. (Note: the frequently mis-cited ``radar + image data 3D +tracking'' patents US10596416/US11697046/US12128275 belong to +\textbf{Topgolf Sweden AB (Toptracer)}, not TrackMan --- see +\cref{app:patents}.) +\item[\patent{US10315093B2} --- trajectory illustration.] The broadcast +``tracer'' overlay (radar track rendered into calibrated video); to 2030. +\item[\patent{US11086005B2} --- multi-bay tracking.] Toptracer-style +back-extrapolation of tracks to assign shots to bays; to $\sim$2036. +\end{description} + +\section{Foresight Sports (WAWGD) and the Wintriss lineage} +\label{sec:wintriss} + +Foresight Sports is WAWGD, Inc.; the foundational photometric patents it +holds (via Wawgd Newco LLC) were invented at Wintriss Engineering by +Christopher Kiraly (a Foresight co-founder) --- and these same numbers +appear on Uneekor's license list following the September 2024 +Foresight--Uneekor license agreement~\cite{businesswireforesight}. + +\begin{description} +\item[\patent{US7292711B2} --- ``Flight parameter measurement system.''] +Priority June 6, 2002; \textbf{expired April 2025}~\cite{us7292711}. The +blueprint single-camera photometric monitor: factory per-pixel 3D +calibration; accelerometer leveling; microphone + small radar horn joint +trigger; strobe-lit sequential images; ball center/diameter with known +ball size giving 3D position per frame; and \emph{markerless spin} by +iterative rotation/correlation of natural surface features (dimples, +blemishes) after glint removal and lighting normalization. +\item[\patent{US7324663B2} --- sibling ``smart camera'' patent.] +Same spec, self-triggering from in-FOV motion; \textbf{expired August +2025}. +\item[\patent{US7497780B2} / \patent{US7641565B2} --- integrated monitor +and ball-placement detection.] Priority 2006; expire $\sim$2027. The +GC2-style UX: optical ball-find, LED placement guidance, frame-differencing +launch detection, mixed-mode capture, on-device display. Foresight +enforced this portable-monitor family as recently as 2024 (Uneekor +settlement). +\item[Later WAWGD filings.] Applications on measuring club path and face +orientation before/at/after impact --- the four-dot GCQuad fiducial system +--- remain active; treat quad-camera + reflective-dot face measurement as +protected. +\end{description} + +\section{FlightScope / EDH --- Henri Johnson} +\label{sec:patentflightscope} + +\begin{description} +\item[\patent{US9868044B2} --- ``Ball spin rate measurement.''] Priority +January 2013; expires $\sim$2034~\cite{us9868044}. The engineered +alternative to TrackMan's sidebands after the 2013 loss: the ball's cover +acts as a \emph{dielectric lens} ($n\approx1.8$) magnifying far-side +surface features in the microwave return; phase demodulation (PLL) yields +repeating bipolar pulses as features sweep the magnification zone; an FFT +extracts the periodicity (seam symmetry doubles the modulation rate, +corrected in software). +\item[\patent{US10775492B2} --- ``Golf ball spin axis measurement.''] +Priority December 2013; expires $\sim$2035~\cite{us10775492}. Direct +axis measurement from time delays between perpendicular receiver pairs: +$\Phi = \arctan[S_H T_H/(S_V T_V)]$ --- works at short indoor flights +where trajectory inversion fails. +\item[\patent{US10338209B2} --- Fusion Tracking.] Priority 2015; expires +$\sim$2037~\cite{us10338209}. Radar+camera fusion with checkerboard +camera calibration, Doppler-simulator radar alignment, radar-steered +image search windows, offset removal by error minimization. +\end{description} + +\section{Acushnet (Titleist) --- the stereo foundation} +\label{sec:patentacushnet} + +The deepest prior art for camera-based monitors; the early family is +entirely expired~\cite{us5501463,us6500073,us6758759}. + +\begin{description} +\item[\patent{US5501463A} (1992, expired).] Two shuttered cameras at +$\sim$22$\degs$, double-strobed $\sim$800\,\si{\micro\second} apart; +three retroreflective dots on the clubhead, six on the ball; +triangulation yields 3D clubhead velocity, attack angle, path, face +orientation, and \emph{contact location on the face}. +\item[\patent{US6500073B1} (1992 priority, expired).] Stereo pair + sound +trigger + six ball dots; position and orientation at two instants give +velocity and angular velocity; numerical flight integration +(drag/Magnus/gravity) gives carry and roll --- the classic tour package. +\item[\patent{US6758759B2} (2001, expired 2022).] Dual two-camera +monitors (club pre-impact, ball post-impact); magnetic fixture calibrates +the head's geometric center; complete recipe for measured face angle and +impact location with marker stickers. +\item[\patent{US7143639B2} family (2004 priority; parent expired 2024).] +Portable four-camera unit with speed-adaptive strobe timing via FPGA +lookup, dichroic marker discrimination, optical club/ball fingerprinting; +continuations \patent{US8500568B2}/\patent{US8556267B2} (hardware +integration claims) run to $\sim$2030--31. +\item[\patent{US10668350B2} (2017; to $\sim$2038).] ``True 3D'' +stereo/light-field capture at 1,000--10,000+\,fps with sub-10\,\si{\micro +\second} exposures and per-frame $xyz$ measurement. +\item[\patent{US6186002B1}.] USGA-adjacent method for extracting +$C_D$/$C_L$ from measured trajectories --- a template for calibrating an +open ball-flight model~\cite{us6186002}. +\end{description} + +\section{Korean ecosystem: Creatz/Uneekor and Golfzon} + +Uneekor's patent list mixes owned Creatz patents (US10247553, US9752875, +US9605960, US9448067, US10587797, US10776929, US11191998, US12008770 --- +including the Dimple Optix markerless-spin engine) with the licensed +Foresight/Wintriss numbers~\cite{uneekorpatents}. +\patent{US10247553B2} (Creatz; to $\sim$2032) claims a sectioned +start-sensor detecting the actual ball starting position for simulation. +Golfzon's \patent{US9242158B2} (to $\sim$2032) claims the latency-hiding +two-stage pipeline --- start the simulated trajectory from fast +``first ball information'' ($\sim$100\,ms), refine in flight when the +slower spin estimate arrives ($\sim$200\,ms)~\cite{us9242158}. + +\section{Freedom-to-operate map} +\label{sec:fto} + +\begin{table}[htbp] +\centering\small +\caption{FTO summary for an open-source launch monitor (US perspective, +mid-2026). Verify claim-by-claim with counsel before commercial use.} +\label{tab:fto} +\begin{tabular}{@{}p{7.6cm}p{3.4cm}p{3.2cm}@{}} +\toprule +\textbf{Technique} & \textbf{Controlling patents} & \textbf{Status} \\ +\midrule +CW Doppler speed measurement & --- & Ancient art; free \\ +Mono-camera photometric launch + markerless dimple-correlation spin & + US7292711 / US7324663 & \textbf{Expired 2025; free} \\ +Stereo + retroreflective dots: club face, path, impact location & + US5501463 / US6500073 / US6758759 / US7143639 & \textbf{Expired; free} \\ +Target-tap deviation UX & US8085188 family & Expires 2026--27 \\ +Radar spin via harmonic sidebands & US8845442 (US10393870) & + To $\sim$2029 (Dec 2026) \\ +Radar spin via dielectric-lens phase demodulation & US9868044 & + To $\sim$2034 \\ +Direct radar spin axis (perpendicular receiver pairs) & US10775492 & + To $\sim$2035 \\ +Radar+camera fusion tracking & US10338209; TrackMan OERT family & + To $\sim$2037+ \\ +Integrated ball-find/placement/trigger workflow & US7497780 / US7641565 & + To $\sim$2027 \\ +Video tracer overlay from sensor track & US10315093 & To $\sim$2030 \\ +Two-stage sim latency hiding & US9242158 & To $\sim$2032 \\ +Start-position sensing & US10247553 & To $\sim$2032 \\ +Light-field / true-3D capture claims & US10668350 & To $\sim$2038 \\ +Multi-bay back-extrapolation attribution & US11086005 & To $\sim$2036 \\ +\bottomrule +\end{tabular} +\end{table} + +\begin{keypoint} +Three strategic conclusions. (1)~A \emph{camera-first} open design has a +wide-open, recently expired foundation (Wintriss + Acushnet) covering +mono/stereo photometric launch measurement, markerless spin, and +marker-based measured club-face data. (2)~\emph{Radar spin} is the most +encumbered corner: the TrackMan sideband family runs to $\sim$2029 and +FlightScope's alternatives to $\sim$2034--35; pure speed/launch-angle +radar (the Garmin R10 recipe) is safe. (3)~\emph{Radar+camera fusion} is +the most actively patented current frontier --- the two giants have +litigated each other in both directions --- and warrants the most care +for any hybrid radar-plus-camera roadmap. Note also that a non-commercial +AGPL project is not immune: US patent infringement does not require +sale, and downstream commercial users inherit the exposure. +\end{keypoint} diff --git a/tech-review/sections/08-ball-flight-models.tex b/tech-review/sections/08-ball-flight-models.tex index b57aa25..a1a421d 100644 --- a/tech-review/sections/08-ball-flight-models.tex +++ b/tech-review/sections/08-ball-flight-models.tex @@ -1,106 +1,106 @@ -\chapter{Ball Flight Models and Trajectory Estimation} -\label{ch:flight} - -Both sensing families depend on an aerodynamic model: cameras integrate -it forward from measured launch to get carry; radars fit it to partial -trajectories to extract spin axis and to extrapolate indoor flights. - -\section{Equations of motion} - -With air density $\rho$, ball radius $R = 21.34$\,mm, mass -$m = 45.93$\,g, cross-section $A = \pi R^2$, and airspeed -$\vect{v}_a = \vect{v} - \vect{v}_{\mathrm{wind}}$: -\begin{equation} -\label{eq:eom} -m\,\frac{d\vect{v}}{dt} = - -\tfrac{1}{2}\rho A C_D \lVert\vect{v}_a\rVert\, \vect{v}_a - \;+\; \tfrac{1}{2}\rho A C_L \lVert\vect{v}_a\rVert^2 - \,(\hat{\vect{\omega}} \times \hat{\vect{v}}_a) - \;+\; m\vect{g}, -\end{equation} -with the drag and lift coefficients functions of Reynolds number -$\mathrm{Re} = 2R\lVert\vect{v}_a\rVert/\nu$ and spin ratio -$S = R\omega/\lVert\vect{v}_a\rVert$. Fourth-order Runge--Kutta -integration is ample; carry is evaluated where the trajectory returns to -launch elevation. Tilting the spin axis by $\theta$ rotates the Magnus -force off vertical, giving lateral acceleration -$(F_M/m)\sin\theta$ --- the mechanism behind the 0.7\%-per-degree -side-curve rule and \cref{eq:spincomponents}. - -\section{Aerodynamic coefficient data} - -\begin{description} -\item[Bearman \& Harvey (1976)~\cite{bearmanharvey}.] The canonical -wind-tunnel dataset on spinning golf-ball models across the flight -envelope. Dimples drop the critical Reynolds number to -$\sim5\times10^4$; post-critical $C_D \approx 0.25$ is nearly -Re-independent; $C_L$ rises with spin ratio from $\approx$0.08 to 0.25 -over $S \approx 0.02$--0.3; hexagonal dimples outperform round ones. -\item[Smits \& Smith (1994)~\cite{smitssmith}.] The parameterized model -most widely used in simulators: -\begin{equation} -\label{eq:smits} -C_D = C_{D1} + C_{D2}\,S + C_{D3}\sin\!\bigl(\pi\, - \tfrac{\mathrm{Re}-A_1}{A_2}\bigr), -\qquad -C_L = C_{L1} S^{0.4}, -\end{equation} -with $C_{D1}=0.24$, $C_{D2}=0.18$, $C_{D3}=0.06$, $A_1=9\times10^4$, -$A_2=2\times10^5$, $C_{L1}\approx0.54$, plus a spin-decay law with time -constant $\approx24$\,s at 100\,mph (roughly 4\%/s early in flight). -\item[Quintavalla / USGA Indoor Test Range (2002)~\cite{quintavalla}.] -Six-term polynomial $C_D$/$C_L$ models in Re and $S$ fitted from -trajectory photography on the USGA ITR; captures the low-speed -end-of-flight regime better than wind tunnels; the basis of USGA Overall -Distance Standard conformance testing. The companion method patent -US6186002~\cite{us6186002} --- determining coefficients from measured -trajectories --- is the template for calibrating an open model against -real flights. -\end{description} - -\begin{implication} -OpenFlight should ship Smits--Smith (\cref{eq:smits}) with spin decay as -the default flight model, structured so a Quintavalla-style six-term fit -can drop in, and calibrate against measured outdoor trajectories (or -MLM2PRO reference data) using the US6186002 trajectory-fitting approach. -Carry disagreements between simulators are dominated by model choice, not -launch measurement --- version the model and record it with every shot log. -\end{implication} - -\section{Trajectory estimation and filtering} -\label{sec:ekf} - -The estimation core of a radar launch monitor is a nonlinear filtering -problem. State $\vect{x} = (\vect{p}, \vect{v}, S, \theta_{\mathrm{axis}})$; -process model = \cref{eq:eom}; measurement models: -radar $h(\vect{x}) = (r, \mathrm{az}, \mathrm{el}, \dot r)$ with -$\dot r = \vect{v}\cdot\hat{\vect{p}}$, camera $h(\vect{x})$ = pixel -projections. An extended (or unscented) Kalman filter runs the standard -recursion; launch parameters are then obtained by \emph{smoothing and -back-extrapolation} --- fit the entire observed arc and evaluate the state -at the moment of face separation, which is far more robust than -differencing the first noisy fixes. Including -$\theta_{\mathrm{axis}}$ in the state makes spin-axis-from-curvature -(\cref{sec:spinaxis}) fall out of the filter naturally, and per-measurement -confidence weighting is the clean way to fuse heterogeneous sensors -(OPS243-A speed, K-LD7 angles, future camera fixes). - -\begin{implication} -OpenFlight currently correlates K-LD7 angle bursts with the OPS243-A -impact timestamp and reads angles from single detections. Migrating to a -short EKF smoother over the full K-LD7 ring-buffer burst --- even 10--20 -detections over 50\,ms --- would use all available data, reject outlier -bins, and yield launch angles with quantified covariance. The same filter -skeleton later absorbs camera measurements unchanged. -\end{implication} - -\section{Indoor extrapolation and its errors} - -Indoors, every system integrates \cref{eq:eom} from launch conditions. -Error propagation is dominated by spin uncertainty: at driver speeds, -$\pm300$\,rpm maps to roughly $\pm4$--6\,yd of carry and $\pm1$\,yd of -side; a $\pm2\degs$ spin-axis error at 2,500\,rpm maps to $\pm3$--4\,yd -of side at 250\,yd carry. This is why the accuracy literature -(\cref{ch:accuracy}) finds spin to be the fragile channel indoors for -radar, and why camera systems --- which measure spin directly --- win the -indoor comparison structurally. +\chapter{Ball Flight Models and Trajectory Estimation} +\label{ch:flight} + +Both sensing families depend on an aerodynamic model: cameras integrate +it forward from measured launch to get carry; radars fit it to partial +trajectories to extract spin axis and to extrapolate indoor flights. + +\section{Equations of motion} + +With air density $\rho$, ball radius $R = 21.34$\,mm, mass +$m = 45.93$\,g, cross-section $A = \pi R^2$, and airspeed +$\vect{v}_a = \vect{v} - \vect{v}_{\mathrm{wind}}$: +\begin{equation} +\label{eq:eom} +m\,\frac{d\vect{v}}{dt} = + -\tfrac{1}{2}\rho A C_D \lVert\vect{v}_a\rVert\, \vect{v}_a + \;+\; \tfrac{1}{2}\rho A C_L \lVert\vect{v}_a\rVert^2 + \,(\hat{\vect{\omega}} \times \hat{\vect{v}}_a) + \;+\; m\vect{g}, +\end{equation} +with the drag and lift coefficients functions of Reynolds number +$\mathrm{Re} = 2R\lVert\vect{v}_a\rVert/\nu$ and spin ratio +$S = R\omega/\lVert\vect{v}_a\rVert$. Fourth-order Runge--Kutta +integration is ample; carry is evaluated where the trajectory returns to +launch elevation. Tilting the spin axis by $\theta$ rotates the Magnus +force off vertical, giving lateral acceleration +$(F_M/m)\sin\theta$ --- the mechanism behind the 0.7\%-per-degree +side-curve rule and \cref{eq:spincomponents}. + +\section{Aerodynamic coefficient data} + +\begin{description} +\item[Bearman \& Harvey (1976)~\cite{bearmanharvey}.] The canonical +wind-tunnel dataset on spinning golf-ball models across the flight +envelope. Dimples drop the critical Reynolds number to +$\sim5\times10^4$; post-critical $C_D \approx 0.25$ is nearly +Re-independent; $C_L$ rises with spin ratio from $\approx$0.08 to 0.25 +over $S \approx 0.02$--0.3; hexagonal dimples outperform round ones. +\item[Smits \& Smith (1994)~\cite{smitssmith}.] The parameterized model +most widely used in simulators: +\begin{equation} +\label{eq:smits} +C_D = C_{D1} + C_{D2}\,S + C_{D3}\sin\!\bigl(\pi\, + \tfrac{\mathrm{Re}-A_1}{A_2}\bigr), +\qquad +C_L = C_{L1} S^{0.4}, +\end{equation} +with $C_{D1}=0.24$, $C_{D2}=0.18$, $C_{D3}=0.06$, $A_1=9\times10^4$, +$A_2=2\times10^5$, $C_{L1}\approx0.54$, plus a spin-decay law with time +constant $\approx24$\,s at 100\,mph (roughly 4\%/s early in flight). +\item[Quintavalla / USGA Indoor Test Range (2002)~\cite{quintavalla}.] +Six-term polynomial $C_D$/$C_L$ models in Re and $S$ fitted from +trajectory photography on the USGA ITR; captures the low-speed +end-of-flight regime better than wind tunnels; the basis of USGA Overall +Distance Standard conformance testing. The companion method patent +US6186002~\cite{us6186002} --- determining coefficients from measured +trajectories --- is the template for calibrating an open model against +real flights. +\end{description} + +\begin{implication} +An implementation should ship Smits--Smith (\cref{eq:smits}) with spin decay as +the default flight model, structured so a Quintavalla-style six-term fit +can drop in, and calibrate against measured outdoor trajectories (or +MLM2PRO reference data) using the US6186002 trajectory-fitting approach. +Carry disagreements between simulators are dominated by model choice, not +launch measurement --- version the model and record it with every shot log. +\end{implication} + +\section{Trajectory estimation and filtering} +\label{sec:ekf} + +The estimation core of a radar launch monitor is a nonlinear filtering +problem. State $\vect{x} = (\vect{p}, \vect{v}, S, \theta_{\mathrm{axis}})$; +process model = \cref{eq:eom}; measurement models: +radar $h(\vect{x}) = (r, \mathrm{az}, \mathrm{el}, \dot r)$ with +$\dot r = \vect{v}\cdot\hat{\vect{p}}$, camera $h(\vect{x})$ = pixel +projections. An extended (or unscented) Kalman filter runs the standard +recursion; launch parameters are then obtained by \emph{smoothing and +back-extrapolation} --- fit the entire observed arc and evaluate the state +at the moment of face separation, which is far more robust than +differencing the first noisy fixes. Including +$\theta_{\mathrm{axis}}$ in the state makes spin-axis-from-curvature +(\cref{sec:spinaxis}) fall out of the filter naturally, and per-measurement +confidence weighting is the clean way to fuse heterogeneous sensors +(OPS243-A speed, K-LD7 angles, future camera fixes). + +\begin{implication} +A two-module radar design correlates angle-radar bursts with the CW +impact timestamp and reads angles from single detections. Migrating to a +short EKF smoother over the full K-LD7 ring-buffer burst --- even 10--20 +detections over 50\,ms --- would use all available data, reject outlier +bins, and yield launch angles with quantified covariance. The same filter +skeleton later absorbs camera measurements unchanged. +\end{implication} + +\section{Indoor extrapolation and its errors} + +Indoors, every system integrates \cref{eq:eom} from launch conditions. +Error propagation is dominated by spin uncertainty: at driver speeds, +$\pm300$\,rpm maps to roughly $\pm4$--6\,yd of carry and $\pm1$\,yd of +side; a $\pm2\degs$ spin-axis error at 2,500\,rpm maps to $\pm3$--4\,yd +of side at 250\,yd carry. This is why the accuracy literature +(\cref{ch:accuracy}) finds spin to be the fragile channel indoors for +radar, and why camera systems --- which measure spin directly --- win the +indoor comparison structurally. diff --git a/tech-review/sections/09-accuracy.tex b/tech-review/sections/09-accuracy.tex index 8ba8c28..556a025 100644 --- a/tech-review/sections/09-accuracy.tex +++ b/tech-review/sections/09-accuracy.tex @@ -1,72 +1,72 @@ -\chapter{Accuracy: The Independent Evidence} -\label{ch:accuracy} - -\section{Peer-reviewed validation} - -\textbf{Leach, Forrester, Mears \& Roberts (2017)}~\cite{leach2017} -remains the key criterion study: 240 shots (driver, 7-iron, wedge) -measured simultaneously by a TrackMan Pro~IIIe, a Foresight GC2+HMT, and -a four-camera 5,400\,fps optical reference. Findings: ball parameters -agreed well on both devices (TrackMan clubhead-speed median difference -$-0.4$\,mph; ball speed $+0.2$\,mph; launch angle $0.0\degs$), but -\textbf{club parameters were materially worse for both} --- the authors -endorse ball data for research use and advise caution on club data. This -is the empirical face of the directness hierarchy of -\cref{sec:hierarchy}: what is measured agrees; what is derived diverges. - -\textbf{TrackMan 4 indoor reliability (J. Sports Sciences, -2024)}~\cite{tm4reliability}: within- and between-session reliability in -high-level golfers indoors --- ICC 0.99 for club speed, 0.97--0.99 for -ball speed, but \textbf{spin-rate ICC as low as 0.02--0.60}: even the -reference radar's indoor spin channel is fragile when flight is -truncated. - -A 2025 Mevo+ vs.\ TrackMan~4 indoor agreement study -exists~\cite{mevoplusstudy} (abstract-level access only at review time), -extending the same pattern down-market. - -\section{Robot and industry testing} - -Golf Laboratories robot testing (reported via Foresight and third -parties) puts GCQuad center-strike spin standard deviation at -$\approx$82\,rpm versus $\approx$175\,rpm for TrackMan~4 --- the -photometric spin advantage in its clearest form~\cite{golflabsrobot}. -MyGolfSpy's indoor comparison against a GCQuad reference found the -camera-assisted MLM2PRO among the tightest budget units for launch, -spin, and carry, with radar-only units (R10, original Mevo) trailing -indoors~\cite{mygolfspyindoor}. Manufacturer-quoted specs bracket the -market: $\pm1$\,mph ball speed and $\pm1\degs$ launch angles are common -claims; club-face claims ($\pm2\degs$, ``calculated'') are visibly -weaker. - -\section{What drives inter-device disagreement} - -Synthesizing the validation literature and the architecture analysis: - -\begin{enumerate} -\item \textbf{Reference-point differences} in club speed (geometric -center vs.\ fastest return) --- several mph of systematic spread. -\item \textbf{Derived face data}: D-plane inversion amplifies -launch-direction bias by $\sim$1.15$\times$ and cannot see gear effect, -so radar face angle diverges from optical face angle most on off-center -strikes. -\item \textbf{Indoor spin}: sideband SNR collapses on short flights and -clean balls; systems silently switch to estimation, and estimated spin -feeds the carry model. -\item \textbf{Flight-model differences}: identical launch conditions -produce different simulated carries across vendors; this is a modeling -disagreement, not a measurement one. -\item \textbf{Alignment}: a unit misaligned to the target line biases -path, face, and launch direction coherently --- the cheapest error to fix -and the most common in practice. -\end{enumerate} - -\begin{implication} -For OpenFlight validation against the MLM2PRO (the project's reference -instrument): compare ball speed and launch angles directly; compare spin -only on RPT/RCT marked balls where the MLM2PRO's measurement is -camera-based; expect club-speed offsets from reference-point differences -and calibrate a per-club correction rather than chasing agreement; and -log raw I/Q captures so spin-detection improvements can be replayed -against historical shots. -\end{implication} +\chapter{Accuracy: The Independent Evidence} +\label{ch:accuracy} + +\section{Peer-reviewed validation} + +\textbf{Leach, Forrester, Mears \& Roberts (2017)}~\cite{leach2017} +remains the key criterion study: 240 shots (driver, 7-iron, wedge) +measured simultaneously by a TrackMan Pro~IIIe, a Foresight GC2+HMT, and +a four-camera 5,400\,fps optical reference. Findings: ball parameters +agreed well on both devices (TrackMan clubhead-speed median difference +$-0.4$\,mph; ball speed $+0.2$\,mph; launch angle $0.0\degs$), but +\textbf{club parameters were materially worse for both} --- the authors +endorse ball data for research use and advise caution on club data. This +is the empirical face of the directness hierarchy of +\cref{sec:hierarchy}: what is measured agrees; what is derived diverges. + +\textbf{TrackMan 4 indoor reliability (J. Sports Sciences, +2024)}~\cite{tm4reliability}: within- and between-session reliability in +high-level golfers indoors --- ICC 0.99 for club speed, 0.97--0.99 for +ball speed, but \textbf{spin-rate ICC as low as 0.02--0.60}: even the +reference radar's indoor spin channel is fragile when flight is +truncated. + +A 2025 Mevo+ vs.\ TrackMan~4 indoor agreement study +exists~\cite{mevoplusstudy} (abstract-level access only at review time), +extending the same pattern down-market. + +\section{Robot and industry testing} + +Golf Laboratories robot testing (reported via Foresight and third +parties) puts GCQuad center-strike spin standard deviation at +$\approx$82\,rpm versus $\approx$175\,rpm for TrackMan~4 --- the +photometric spin advantage in its clearest form~\cite{golflabsrobot}. +MyGolfSpy's indoor comparison against a GCQuad reference found the +camera-assisted MLM2PRO among the tightest budget units for launch, +spin, and carry, with radar-only units (R10, original Mevo) trailing +indoors~\cite{mygolfspyindoor}. Manufacturer-quoted specs bracket the +market: $\pm1$\,mph ball speed and $\pm1\degs$ launch angles are common +claims; club-face claims ($\pm2\degs$, ``calculated'') are visibly +weaker. + +\section{What drives inter-device disagreement} + +Synthesizing the validation literature and the architecture analysis: + +\begin{enumerate} +\item \textbf{Reference-point differences} in club speed (geometric +center vs.\ fastest return) --- several mph of systematic spread. +\item \textbf{Derived face data}: D-plane inversion amplifies +launch-direction bias by $\sim$1.15$\times$ and cannot see gear effect, +so radar face angle diverges from optical face angle most on off-center +strikes. +\item \textbf{Indoor spin}: sideband SNR collapses on short flights and +clean balls; systems silently switch to estimation, and estimated spin +feeds the carry model. +\item \textbf{Flight-model differences}: identical launch conditions +produce different simulated carries across vendors; this is a modeling +disagreement, not a measurement one. +\item \textbf{Alignment}: a unit misaligned to the target line biases +path, face, and launch direction coherently --- the cheapest error to fix +and the most common in practice. +\end{enumerate} + +\begin{implication} +For validation against a consumer unit such as the MLM2PRO (a common reference +instrument): compare ball speed and launch angles directly; compare spin +only on RPT/RCT marked balls where the MLM2PRO's measurement is +camera-based; expect club-speed offsets from reference-point differences +and calibrate a per-club correction rather than chasing agreement; and +log raw I/Q captures so spin-detection improvements can be replayed +against historical shots. +\end{implication} diff --git a/tech-review/sections/10-design-guidance.tex b/tech-review/sections/10-design-guidance.tex new file mode 100644 index 0000000..436a03b --- /dev/null +++ b/tech-review/sections/10-design-guidance.tex @@ -0,0 +1,146 @@ +\chapter{Design Guidance for Implementers} +\label{ch:implications} + +This chapter distills the review into design guidance, organised by what a +given sensing architecture can and cannot deliver. It is written for anyone +building a launch monitor, and equally for anyone evaluating one: the same +reasoning that tells an engineer which parameters are reachable tells a +buyer which reported numbers deserve trust. + +The baseline throughout is a \textbf{minimal radar architecture} --- a +single continuous-wave Doppler module for speed, one or two interferometric +angle-radar modules for direction, a hardware impact trigger, and an +embedded host. Representative parts are named where they are useful +(the OmniPreSense OPS243-A at 24\,GHz, the RFbeam K-LD7, a Raspberry Pi +class host), but nothing here depends on those specific choices. This +configuration is a minimal but honest instance of the commercial radar +architecture, and it is the cheapest starting point that measures anything +directly. + +\section{Ball data} + +\begin{enumerate} +\item \textbf{Ball speed} is the strongest channel in any radar design: the +Doppler line is unambiguous, and $\pm0.5\%$ class accuracy from a commodity +module matches commercial practice. Apply the aspect-angle (cosine) +correction using the measured launch angles --- at 3--5\,ft behind the tee +with a driver launch of $12\degs$ the radial underestimate is small but +\emph{systematic}, and systematic errors are the ones that survive +averaging. +\item \textbf{Launch angles}: treat angle-radar bursts as a short +trajectory, not a single detection. An EKF smoother over the ring buffer +(\cref{sec:ekf}) with back-extrapolation to the impact timestamp is the +single highest-leverage software upgrade for angle quality, and it costs +nothing in hardware. +\item \textbf{Spin rate} is where radar earns its reputation for +inconsistency. A $\sim$50--60\% detection rate from I/Q sideband analysis is +consistent with the physics rather than evidence of a bug: sideband SNR +depends on ball-surface asymmetry and observation time +(\cref{sec:radarspin}). Improvements in order of cost: longer observation +windows (later trigger cutoff); cepstrum or harmonic-product comb estimation +with equal-spacing qualification; marked-ball guidance for indoor use; and +honest fallback --- report estimated spin from club type, speed and loft +priors, clearly flagged, which is what Garmin does and documents. +\emph{Patent caution:} the harmonic-sideband method is claimed by US8845442 +until $\sim$2029 in its US member (\cref{sec:fto}). +\item \textbf{Spin axis} is out of reach of a short-flight radar +installation: indoor flights are too short for trajectory inversion, and the +direct receiver-pair method is patent-encumbered to $\sim$2035. The +practical routes are optical, or a flagged model estimate from face-to-path. +\end{enumerate} + +\section{Club data} + +\begin{enumerate} +\item \textbf{Club speed}: define and document the reference point --- this +is the single most consequential and most neglected decision in the whole +design (\cref{sec:pathreference}). A CW module sees a smear of head and +shaft returns; gating the pre-impact spectrum and taking a fixed percentile +of the velocity distribution, rather than the maximum, approximates a stable +reference and avoids the toe-speed inflation that plagues naive processors +(\cref{sec:radarclub}). Validate smash factor against the loft-appropriate +ceiling (\cref{sec:smash}) and flag violations rather than displaying them. +\item \textbf{Club path} and \textbf{attack angle} from angle radar are +legitimate direct measurements --- the same primitives a consumer radar unit +measures. Alignment calibration dominates their accuracy, and no amount of +signal processing recovers a misaimed sensor. +\item \textbf{Face angle}: the D-plane inversion (\cref{eq:faceinversion}) +with the loft-dependent weight (\cref{eq:obliqueness}) is exactly what +radar-only commercial units report. Implement it --- but label it +\emph{derived}, propagate its error (a $1.32\times$ amplification of +launch-direction bias at the measured weight; see the caution in +\cref{sec:facepathweighting}), and suppress it on detected off-centre +strikes once impact location is available. The D-plane forward model doubles +as a simulator's launch generator, so one well-tested module serves both +directions. +\item \textbf{Impact location} requires optics. There is no radar route. +The expired Acushnet stereo art (\cref{sec:patentacushnet}) and Wintriss +mono-camera art (\cref{sec:wintriss}) provide complete public-domain +recipes. Even a single overhead camera reading face fiducials converts face +angle from \emph{derived} to \emph{measured}, which is the largest single +jump available in \cref{tab:hierarchy}. +\end{enumerate} + +\section{Capability tiers} + +The following tiers are cumulative. Each is a coherent product in its own +right, and each is defined by what it moves from derived to measured rather +than by a parts list. + +\begin{enumerate} +\item \textbf{Tier 1 --- radar only.} EKF smoothing, comb-based spin with +honest fallback, D-plane-derived face data with provenance flags, +smash-factor sanity gates, and a documented alignment-calibration procedure. +This delivers the consumer-radar feature set. Everything club-face-related +is inferred. +\item \textbf{Tier 2 --- add an optical spin and impact module.} One or two +global-shutter cameras with an IR strobe, at modest incremental cost. The +camera measures launch angles, 3D spin by dimple registration, and impact +location; the radar keeps trigger, speed, and outdoor robustness. This is +the same fusion every commercial vendor converged on --- and it can be built +entirely from the expired-art side of the patent map (\cref{ch:patents}). +\emph{Care:} avoid still-active claims around integrated ball-find and LED +guidance, and around radar-steered image search windows. +\item \textbf{Tier 3 --- true fusion.} A single EKF consuming radar speed, +radar angles and camera fixes with per-sensor covariances; a flight model +per \cref{ch:flight} with versioned coefficients; and a validation protocol +per \cref{ch:accuracy}. The versioning matters more than it sounds: +\cref{ch:flight} shows that a coefficient difference of 0.01 in $C_D$ is +worth roughly eight yards, so an unversioned model change is a silent +recalibration of every number the device has ever reported. +\item \textbf{Tier 4 --- measured club delivery.} An imaging radar with +custom chirp firmware feeding the screw-theoretic rigid-body estimator of +\cref{app:screw}: per-detection Doppler rows solved for the club's twist, +smoothed on $SE(3)$, and projected into club speed at a declared reference +point, measured path and attack angle, closure rate, and an ISA-defined +swing plane. This moves path and attack angle from \emph{derived} to +\emph{measured} in \cref{tab:hierarchy}. Face angle and impact location +remain with the optical module --- no radar architecture reaches them. +\end{enumerate} + +\section{Reporting honesty as a design feature} + +The clearest lesson of this review is not about sensors at all. + +Commercial marketing blurs the measured/derived boundary, and the +independent validation literature repeatedly punishes the derived +quantities: clubhead velocity met research-grade tolerance on 54\% and 29\% +of shots for the two devices ever tested against a traceable optical +benchmark, and club orientation data was returned on only 62\% of shots +overall --- 19\% for a utility wedge (\cref{ch:accuracy}). None of that +appears on a specification sheet. + +An instrument can therefore differentiate itself by doing the opposite: +tagging every reported parameter with its provenance (measured, derived, or +estimated), its uncertainty, and the model version used, and reporting its +own per-shot success rate rather than only its best-case tolerance. +\Cref{tab:hierarchy} is effectively the schema for that tagging. + +Two vendors already demonstrate that this is commercially survivable rather +than suicidal. Garmin publishes an explicit measured-versus-calculated split +with tolerances on each side, and states outright that its face angle is +algorithmic. TrackMan publishes the reference-point discrepancy between its +own quantities and warns that numbers from different methodologies +``aren't comparable.'' Both remain market leaders in their segments. The +honest disclosure did not cost them anything, and it is the closest thing +this industry has to a standard worth adopting. diff --git a/tech-review/sections/10-openflight-implications.tex b/tech-review/sections/10-openflight-implications.tex deleted file mode 100644 index 8b55e28..0000000 --- a/tech-review/sections/10-openflight-implications.tex +++ /dev/null @@ -1,111 +0,0 @@ -\chapter{Implications for OpenFlight} -\label{ch:implications} - -OpenFlight's current architecture --- OPS243-A 24\,GHz CW Doppler with -rolling-buffer I/Q capture, a hardware sound trigger, and two K-LD7 -interferometric angle radars, on a Raspberry Pi 5 --- is a minimal but -honest instance of the commercial radar architecture. This chapter -distills the review into design guidance, ordered by leverage. - -\section{Ball data} - -\begin{enumerate} -\item \textbf{Ball speed} is already the strongest channel: the Doppler -line is unambiguous, and the OPS243-A's $\pm0.5\%$ class accuracy matches -commercial practice. Add the aspect-angle (cosine) correction using the -measured launch angles --- at 3--5\,ft behind the tee with a driver launch -of $12\degs$ the radial underestimate is small but systematic. -\item \textbf{Launch angles}: treat the K-LD7 bursts as a short -trajectory, not a single detection --- an EKF smoother over the ring -buffer (\cref{sec:ekf}) with back-extrapolation to the impact timestamp -is the single highest-leverage software upgrade for angle quality. -\item \textbf{Spin rate}: the current $\sim$50--60\% detection rate from -I/Q sideband analysis is consistent with the physics: sideband SNR -depends on ball-surface asymmetry and observation time -(\cref{sec:radarspin}). Improvements in order of cost: longer -observation windows (later trigger cutoff); cepstrum/harmonic-product -comb estimation with the patent-style equal-spacing qualification; -logo-ball or marked-ball guidance for indoor use; and honest fallback --- -report estimated spin (from club type + speed + loft priors, clearly -flagged) when no comb is found, as Garmin does. \emph{Patent caution:} -the harmonic-sideband method is claimed by US8845442 until $\sim$2029 -(US member); for a hobby project this is a risk-management judgment, but -the roadmap should note the family's expiry dates -(\cref{sec:fto}). -\item \textbf{Spin axis} is currently out of reach of the radar: indoor -flights are too short for trajectory inversion, and the direct -receiver-pair method is FlightScope-patented to $\sim$2035. The practical -route is optical (below) or a flagged model estimate from face-to-path. -\end{enumerate} - -\section{Club data} - -\begin{enumerate} -\item \textbf{Club speed}: define and document the reference point. The -OPS243-A sees a smear of head/shaft returns; gating the pre-impact -spectrum and taking a fixed percentile of the velocity distribution -(rather than the maximum) approximates a stable reference and avoids the -toe-speed inflation that plagues naive processors -(\cref{sec:radarclub}). Validate the smash factor against the -loft-appropriate ceiling (\cref{sec:smash}) and flag violations instead -of displaying them. -\item \textbf{Club path} (K-LD7 horizontal) and \textbf{attack angle} -(vertical, if geometry allows) are legitimate direct measurements --- -the same primitives the Garmin R10 measures. Alignment calibration -dominates their accuracy. -\item \textbf{Face angle}: implement the D-plane inversion -(\cref{eq:faceinversion}) with the loft-dependent weight -(\cref{eq:obliqueness}) --- this is exactly what radar-only commercial -units report --- but label it \emph{derived}, propagate its error -($1.15\times$ launch-direction bias), and suppress it on detected -off-center strikes once impact location is available. The D-plane -forward model doubles as the simulator's launch generator, so one -well-tested module serves both directions. -\item \textbf{Impact location} requires optics. The expired Acushnet -stereo art (\cref{sec:patentacushnet}) and Wintriss mono-camera art -(\cref{sec:wintriss}) provide complete public-domain recipes; a -PiTrac-style Pi Global Shutter camera with IR strobing is the natural -hardware. Even a single overhead camera reading face stickers -(Acushnet US6758759 recipe, expired) would convert OpenFlight's face -angle from derived to measured. -\end{enumerate} - -\section{Architecture roadmap} - -\begin{enumerate} -\item \textbf{Phase 1 (radar-only, current)}: EKF smoothing, comb-based -spin with honest fallback, D-plane-derived face data with flags, -smash-factor sanity gates, alignment-calibration procedure. Ships the -Garmin-R10 feature set with open data. -\item \textbf{Phase 2 (optical spin/impact module)}: one or two Pi -Global Shutter cameras + IR strobe PCB (PiTrac-proven, $\sim$\$100 -incremental). Camera measures launch angles, 3D spin (dimple -registration, public-domain per expired US7292711), and impact location; -radar keeps trigger, speed, and outdoor robustness. This is the same -fusion every commercial vendor converged on --- but built from the -expired-art side of the patent map. \emph{Care:} avoid the still-active -claims around integrated ball-find/LED-guidance UX (to $\sim$2027) and -radar-steered image search windows (FlightScope US10338209). -\item \textbf{Phase 3 (fusion)}: a single EKF consuming OPS243-A speed, -K-LD7 angles, and camera fixes, with per-sensor covariances; flight -model per \cref{ch:flight} with versioned coefficients; validation -protocol against the MLM2PRO per \cref{ch:accuracy}. -\item \textbf{Phase 4 (measured club delivery)}: IWR6843 with custom -chirp firmware feeding the screw-theoretic rigid-body estimator of -\cref{app:screw} --- per-detection Doppler rows solved for the club's -twist, smoothed on $SE(3)$, and projected into club speed at a declared -reference point, measured path and attack angle, closure rate, and an -ISA-defined swing plane. This moves path and attack angle from -\emph{derived} to \emph{measured} in \cref{tab:hierarchy}; face angle -and impact location remain with the optical module. -\end{enumerate} - -\section{Reporting honesty as a feature} - -The single clearest lesson of the review: commercial marketing blurs the -measured/derived boundary, and the validation literature repeatedly -punishes the derived quantities. An open-source instrument can win trust -by doing the opposite --- tagging every reported parameter with its -provenance (measured / derived / estimated), its uncertainty, and the -model version used. \Cref{tab:hierarchy} is effectively the schema for -that tagging. diff --git a/tech-review/sections/abstract.tex b/tech-review/sections/abstract.tex index 2c6a9c8..e745ed1 100644 --- a/tech-review/sections/abstract.tex +++ b/tech-review/sections/abstract.tex @@ -15,13 +15,16 @@ develops the underlying physics --- the D-plane impact model, oblique-impact spin generation, gear effect, and golf-ball aerodynamics --- as the common mathematical core every launch monitor implements, and closes with a -freedom-to-operate map of the patent landscape and concrete architectural -recommendations for OpenFlight, an open-source Doppler-radar launch monitor -built on the OmniPreSense OPS243-A and low-cost angle-radar modules. The -central finding: every parameter a launch monitor reports sits on a -\emph{directness hierarchy} from measured to modeled, the industry has -converged on optical augmentation of radar (and radar augmentation of -cameras) precisely because neither modality can measure the full parameter -set alone, and the recently expired Wintriss photometric patents -(2025) open a practical low-cost optical path to true club-face and spin -measurement that complements OpenFlight's radar core. +freedom-to-operate map of the patent landscape and design guidance for +implementers building or evaluating a system. The central finding: every +parameter a launch monitor reports sits on a \emph{directness hierarchy} +from measured to modeled, the industry has converged on optical augmentation +of radar (and radar augmentation of cameras) precisely because neither +modality can measure the full parameter set alone, and the recently expired +Wintriss photometric patents (2025) open a practical low-cost optical path +to true club-face and spin measurement. + +This document is written to be vendor- and project-neutral. Where a +specific product is named it is as evidence --- a published definition, a +measured tolerance, a patent claim --- not as an endorsement or a design +target. diff --git a/tech-review/sections/appendix-a-references.tex b/tech-review/sections/appendix-a-references.tex index 67eb378..248ea05 100644 --- a/tech-review/sections/appendix-a-references.tex +++ b/tech-review/sections/appendix-a-references.tex @@ -1,354 +1,354 @@ -\chapter{Live Reference Library} -\label{app:links} - -This appendix collects every substantive source consulted for this review -as a clickable link, organized by category. The four raw research -dossiers in \texttt{tech-review/research/} pair each of these with the -specific claims they support. - -\section{Patents (Google Patents / USPTO)} - -\subsection*{TrackMan A/S (Fredrik Tuxen)} -\begin{itemize}\small -\item Full portfolio index: - \url{https://patents.justia.com/inventor/fredrik-tuxen} \,and\, - \url{https://www.trackman.com/legal/patents} -\item US8845442 --- Determination of spin parameters of a sports ball - (harmonic-sideband spin; Magnus spin-axis inversion): - \url{https://patents.google.com/patent/US8845442B2/en} -\item US10393870 --- continuation of the above: - \url{https://patents.google.com/patent/US10393870B2/en} -\item US10850179 --- spin axis via receiver-pair interferometry: - \url{https://patents.google.com/patent/US10850179B2/en} -\item US8085188 / US9857459 / US10473778 --- target-deviation - (tap-a-target) family: - \url{https://patents.google.com/patent/US8085188B2/en}, - \url{https://patents.google.com/patent/US9857459B2/en}, - \url{https://patents.google.com/patent/US10473778B2/en} -\item US10315093 --- trajectory tracer overlay: - \url{https://patents.google.com/patent/US10315093B2/en} -\item US11086005 --- multi-bay range tracking: - \url{https://patents.google.com/patent/US11086005B2/en} -\item TrackMan's own spin-patent explainer: - \url{https://blog.trackmangolf.com/patent-measuring-the-spin-of-a-sports-ball/} -\end{itemize} - -\subsection*{FlightScope / EDH (Henri Johnson)} -\begin{itemize}\small -\item US9868044 --- dielectric-lens spin measurement: - \url{https://patents.google.com/patent/US9868044B2/en} -\item US10775492 --- direct spin-axis via perpendicular receiver pairs: - \url{https://patents.google.com/patent/US10775492B2/en} -\item US10338209 --- Fusion Tracking (radar+camera): - \url{https://patents.google.com/patent/US10338209B2/en} -\item Company history: - \url{https://athlonsports.com/golf/the-flightscope-story-tracking-the-history-of-flight-in-golf} -\end{itemize} - -\subsection*{Foresight Sports / Wintriss Engineering (Kiraly)} -\begin{itemize}\small -\item US7292711 --- flight parameter measurement system - (\textbf{expired 2025}; markerless dimple-spin blueprint): - \url{https://patents.google.com/patent/US7292711B2/en} -\item US7324663 --- smart-camera sibling (\textbf{expired 2025}): - \url{https://patents.google.com/patent/US7324663B2/en} -\item US7497780 --- integrated launch monitor UX: - \url{https://patents.google.com/patent/US7497780B2/en} -\item US7641565 --- ball-placement detection: - \url{https://patents.google.com/patent/US7641565B2/en} -\item WAWGD (Foresight) filings index: - \url{https://patents.justia.com/inventor/wawgd-inc-dba-foresight-sports} -\item Foresight--Uneekor 2024 license (Business Wire): - \url{https://www.businesswire.com/news/home/20240930838753/en/} -\end{itemize} - -\subsection*{Acushnet / Titleist (Gobush et al.)} -\begin{itemize}\small -\item US5501463 --- stereo + retroreflective dots, club and face - (\textbf{expired}): \url{https://patents.google.com/patent/US5501463A/en} -\item US6500073 --- stereo ball trajectory + flight integration - (\textbf{expired}): \url{https://patents.google.com/patent/US6500073B1/en} -\item US6758759 --- dual stereo monitors, measured face angle - (\textbf{expired}): \url{https://patents.google.com/patent/US6758759B2/en} -\item US7143639 --- portable four-camera monitor (\textbf{expired}): - \url{https://patents.google.com/patent/US7143639B2/en} -\item US8500568 / US8556267 --- portable continuations: - \url{https://patents.google.com/patent/US8500568B2/en}, - \url{https://patents.google.com/patent/US8556267B2/en} -\item US10668350 --- 3D/light-field launch monitor: - \url{https://patents.google.com/patent/US10668350B2/en} -\item US6186002 --- $C_D$/$C_L$ from measured trajectories (model - calibration template): - \url{https://patents.google.com/patent/US6186002B1/en} -\end{itemize} - -\subsection*{Others} -\begin{itemize}\small -\item Full Swing US2020/0147470 --- CW+FMCW dual-mode launch monitor: - \url{https://www.freepatentsonline.com/y2020/0147470.html} -\item Creatz US10247553 --- start-position sensor: - \url{https://patents.google.com/patent/US10247553B2/en} -\item Golfzon US9242158 --- two-stage latency-hiding simulation: - \url{https://patents.google.com/patent/US9242158B2/en} -\item Uneekor patent/license list: \url{https://uneekor.com/legal/patents} -\item Camera-timing/Gabor dimple tracking US12401909: - \url{https://patents.google.com/patent/US12401909B2/en} -\item TrackMan EP1698380 litigation coverage: - \url{https://thegolfwire.com/322771-2/} -\item FlightScope 2022 BGH win vs TrackMan: - \url{https://golfbusinessnews.com/news/innovation-centre/flightscope-wins-patent-infringement-case-against-trackman-in-germany/} -\end{itemize} - -\section{Regulatory / teardown (RF ground truth)} -\begin{itemize}\small -\item TrackMan 4 FCC ID SFX-TMAN4 (X-band + 24\,GHz): - \url{https://fccid.io/SFX-TMAN4} -\item TrackMan iO FCC ID SFX-TMB0201 (24\,GHz): - \url{https://fccid.io/SFX-TMB0201} -\item FlightScope Mevo FCC ID QXP-A7310 (24.125\,GHz): - \url{https://fccid.io/QXP-A7310} -\item Mevo+ teardown / QXP-LJ361 (10.5--10.55\,GHz) discussion: - \url{https://golfsimulatorforum.com/forum/flightscope/277362-mevo-teardown} -\end{itemize} - -\section{Manufacturer technical documentation} - -\subsection*{TrackMan} -\begin{itemize}\small -\item 40+ parameters explained: - \url{https://www.trackman.com/blog/golf/40-trackman-parameters} -\item Club data definitions: - \url{https://www.trackman.com/blog/golf/club-data-definitions} -\item Club speed (geometric-center definition): - \url{https://www.trackman.com/blog/golf/what-is-club-speed} -\item Spin loft / spin rate: - \url{https://www.trackman.com/blog/golf/spin-loft}, - \url{https://www.trackman.com/blog/golf/spin-rate} -\item OERT (``Two radars, one camera, zero doubt''): - \url{https://www.trackman.com/blog/golf/two-radars-one-camera-zero-doubt} -\item Tech specs (TM4, iO): - \url{https://www.trackman.com/golf/launch-monitors/tech-specs} -\item Ball Flight Laws newsletter (Jan.\ 2009; D-plane, and the origin of - the ``85/15'' rule of thumb---see \S\ref{sec:facepathweighting} for why - the measured horizontal weight is $0.76$): - \url{https://www.yumpu.com/en/document/view/11652756/trackman-ball-flight-laws} -\end{itemize} - -\subsection{The TrackMan newsletter archive} - -Every official TrackMan newsletter URL now returns 404, and the Wayback -captures are redirect stubs. A complete live third-party mirror of issues -\#1--\#10 exists and is the richest single source of TrackMan-published -numbers anywhere. All at -\url{https://www.gregsmithgolfcoach.com/wp-content/uploads/2014/04/}: - -\begin{itemize}\itemsep2pt -\item \texttt{newsletter1.pdf} (Nov 2007) through \texttt{newsletter9.pdf} - (Jan 2013), sequentially numbered. -\item \texttt{TrackMan\_Newsletter\_2014.pdf} is issue \#10 (Jan 2014); the - filename convention changed, which is why sequential guesses fail. The - series ends there. -\item \textbf{\#7 (Oct 2010), ``Ten Fundamentals''} is the origin of most - TrackMan rules of thumb, including the 85/15 claim in both planes, the - spin-loft subtraction stated as a definition, and ``the spin rate drops - during ball flight---typically 4\% for each second.'' -\item \textbf{\#9 (Jan 2013)} carries the canonical club-delivery - definitions (all specifying maximum compression) and the only published - TrackMan accuracy specification located: for TrackMan III/IIIe at 95\% - confidence, club speed $\pm1.5$~mph, attack angle $\pm1.0\degs$, club path - $\pm1.0\degs$, dynamic loft $\pm0.8\degs$, face angle $\pm0.6\degs$. -\item \textbf{\#8 (Jun 2011)} quantifies bulge: a $\SI{12.7}{\milli\metre}$ - heel-ward impact makes the face angle $2\degs$ closed at that point - relative to face centre, ``for all drivers on the market.'' -\end{itemize} - -\begin{warning} -Those TrackMan accuracy figures are the manufacturer's own. Independent -testing against a traceable optical benchmark -(Leach et al.\ 2017, -\url{https://doi.org/10.1016/j.measurement.2017.08.009}) found club -path met $\pm1\degs$ on -only $45\%$ of shots and face angle on $66\%$, and that full clubhead -parameters were returned on just $62\%$ of shots overall---$19\%$ for a -utility wedge. For OpenFlight the lesson is that a published tolerance and a -per-shot success rate are different specifications, and only the first is -ever advertised. -\end{warning} - -\subsection*{Foresight Sports} -\begin{itemize}\small -\item GCQuad product/technology: - \url{https://www.foresightsports.com/products/gcquad-launch-monitor} -\item Ball and club data (spherical correlation, fiducials): - \url{https://foresightsports.eu/ball-club-data/} -\item HMT head measurement (dot-count data tiers): - \url{https://www.foresightsports.com/hmt-head-measurement} -\item Club marker application guide: - \url{https://help.foresightsports.com/hc/en-us/articles/4408197030035} -\item Marker troubleshooting: - \url{https://help.foresightsports.com/hc/en-us/articles/4405916455443} -\item Design history (Popular Science): - \url{https://www.popsci.com/gear/foresight-sports-quadmax-photometric-golf-launch-monitor-development/} -\end{itemize} - -\subsection*{Other vendors} -\begin{itemize}\small -\item FlightScope X3 (multi-frequency, Fusion Tracking): - \url{https://thegolfwire.com/326713-2/} -\item Garmin R10 architecture and accuracy: - \url{https://mygolfsimulator.com/garmin-r10-data/}, - \url{https://mygolfsimulator.com/garmin-r10-accuracy/} -\item Garmin R50 (three-camera): - \url{https://www.garmin.com/en-US/p/736810/} -\item Full Swing KIT technology and specs: - \url{https://www.fullswinggolf.com/kit-launch-monitor-technology/}, - \url{https://www.fullswinggolf.com/kit-specs/} -\item Rapsodo MLM2PRO spin (MyGolfSpy): - \url{https://mygolfspy.com/news-opinion/rapsodo-mlm2pro-takes-spin-measurement-to-pro-level/} -\item SkyTrak+ measurement: - \url{https://www.skytrakgolf.com/pages/what-does-the-skytrak-st-launch-monitor-measure} -\item Uneekor EYE XO / Dimple Optix: - \url{https://uneekor.com/blogs/blog/photometric-vs.-doppler:-which-launch-monitor-technology-delivers-the-most-accurate-golf-data} -\item Uneekor calibration guide (Carl's Place): - \url{https://www.carlofet.com/blog/calibrating-uneekor-launch-monitors}; - official PDF: - \url{https://download.uneekor.com/docs/EYEXO2_Calibration_Guide.pdf} -\item ProTee VX reviews: - \url{https://www.playbetter.com/blogs/golf-simulator-reviews/protee-vx-review} -\end{itemize} - -\section{Peer-reviewed and academic} -\begin{itemize}\small -\item Penner, ``The physics of golf,'' Rep.\ Prog.\ Phys.\ 66 (2003): - \url{https://iopscience.iop.org/article/10.1088/0034-4885/66/2/202} -\item Leach et al.\ 2017 launch-monitor validation (\emph{Measurement}): - \url{https://www.sciencedirect.com/science/article/abs/pii/S0263224117305079}; - open-access: - \url{https://repository.lboro.ac.uk/articles/journal_contribution/9562799} -\item TrackMan 4 indoor reliability (J.\ Sports Sci.\ 2024): - \url{https://www.tandfonline.com/doi/full/10.1080/02640414.2024.2314864} -\item Mevo+ vs TrackMan 4 agreement (2025): - \url{https://www.sciencedirect.com/science/article/pii/S2772696725000420} -\item Bearman \& Harvey 1976 golf ball aerodynamics: - \url{https://www.cambridge.org/core/journals/aeronautical-quarterly/article/abs/golf-ball-aerodynamics/67FE0903DB1CC12001F1ED1B1261C4B9} -\item Smits \& Smith aerodynamic model: - \url{https://www.researchgate.net/publication/284037213} -\item USGA Indoor Test Range conditions: - \url{https://www.usga.org/content/dam/usga/images/equipment-standards/ITR-test-conditions-2028-ODS.pdf} -\item Friction/tangential compliance and launch angle (MDPI 2020): - \url{https://doi.org/10.3390/proceedings2020049027} -\item Face angle / club path influence study: - \url{https://www.researchgate.net/publication/323373897} -\item Cross oblique-impact golf experiments: - \url{https://www.physics.usyd.edu.au/~cross/GOLF/GOLF.htm} -\item Cross \& Nathan oblique collision formalism: - \url{https://arxiv.org/pdf/1610.03464} -\item Dynamic models review, Sports Engineering 25 (2022): - \url{https://link.springer.com/article/10.1007/s12283-022-00387-0} -\item Stanford LES of golf ball flow (Sports Eng.\ 2019): - \url{http://aero-comlab.stanford.edu/Papers/golf_ball_sports_engineering_2019.pdf} -\item Golf ball aerodynamics in still air (MDPI): - \url{https://www.mdpi.com/2504-3900/2/6/238} -\item Micro-Doppler of spinning projectiles on CW radar: - \url{https://www.researchgate.net/publication/317119893} -\item SpinDOE camera spin estimation (transferable method): - \url{https://arxiv.org/pdf/2303.03879} -\item ``Measuring Ball Spin by Image Registration'': - \url{https://www.researchgate.net/publication/2881136} -\item Doppler ball-tracking thesis (WSU, TrackMan platform): - \url{https://baseball.physics.illinois.edu/trackman/JasonMartinThesisWSU.pdf} -\item Alan Nathan's TrackMan (baseball) technical notes: - \url{https://baseball.physics.illinois.edu/trackman.html} -\item Cochran \& Stobbs, \emph{Search for the Perfect Swing} (1968): - \url{https://archive.org/details/searchforperfect0000coch} -\end{itemize} - -\section{Engineering references (Tutelman et al.)} -\begin{itemize}\small -\item 3D launch conditions from impact conditions: - \url{https://www.tutelman.com/golf/ballflight/3dlaunch.php} -\item Smash factor: \url{https://www.tutelman.com/golf/ballflight/smashfactor.php} -\item Gear effect: \url{https://www.tutelman.com/golf/ballflight/gearEffect1.php} -\item Spin decay: \url{https://www.tutelman.com/golf/ballflight/spinDecay.php} -\item Ball flight laws summary: - \url{https://www.perfectgolfswingreview.net/ballflight.htm} -\item TrackMan face-angle derivation discussion (Manzella forum): - \url{https://forum.brianmanzellagolf.com/threads/how-does-trackman-flightscope-measure-the-club-face-angle.16591/} -\end{itemize} - -\section{DIY / open-source} -\begin{itemize}\small -\item PiTrac GitHub (GPL-2.0): \url{https://github.com/PiTracLM/PiTrac} -\item PiTrac documentation: \url{https://docs.pitrac.org/} -\item PiTrac Hackaday.io project (design logs): - \url{https://hackaday.io/project/195042-pitrac-the-diy-golf-launch-monitor} -\item OpenFlight upstream: \url{https://github.com/jewbetcha/openflight} -\item OpenFlight Grafana write-up: - \url{https://medium.com/grafana-labs/openflight-building-an-open-source-golf-launch-monitor-with-raspberry-pi-grafana-cloud-and-84d68ad40fc5} -\item GC2-imitating OpenCV experiments: - \url{https://github.com/ronheywood/opencv} -\item GSA Golf simulator theory (marked-ball DIY methods): - \url{https://www.golf-simulators.com/GolfSimulatorTheory.html} -\end{itemize} - -\section{Hardware datasheets, protocols, and standards (OpenFlight stack)} -\begin{itemize}\small -\item OPS243 product brief: - \url{https://omnipresense.com/wp-content/uploads/2024/01/OPS243-Product-Brief_004-F.pdf} -\item OPS243 AN-010 API interface: - \url{https://omnipresense.com/wp-content/uploads/2025/10/AN-010-AD_API_Interface.pdf} -\item OPS243 AN-027 rolling buffer: - \url{https://omnipresense.com/wp-content/uploads/2025/06/AN-027-A_Rolling-Buffer-1.pdf} -\item OPS243 AN-029 sports applications (cites OpenFlight): - \url{https://omnipresense.com/wp-content/uploads/2026/06/AN-029-A_OPS243-for-Sports_260621.pdf} -\item RFbeam K-LD7 datasheet: - \url{https://rfbeam.ch/product/k-ld7-radar-transceiver/} -\item TI IWR6843 datasheet: - \url{https://www.ti.com/lit/ds/symlink/iwr6843.pdf}; ISK EVM: - \url{https://www.ti.com/tool/IWR6843ISK}; placement app note: - \url{https://www.ti.com/document-viewer/lit/html/SWRA758} -\item TI mmWave golf-swing forum thread: - \url{https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1116424/iwr6843aop-golf-swing-analyzer-with-mmwave-radar} -\item Raspberry Pi camera documentation (Global Shutter, XTR trigger): - \url{https://www.raspberrypi.com/documentation/accessories/camera.html} -\item GSPro Open Connect v1: \url{https://gsprogolf.com/GSProConnectV1.html}; - community feedback: - \url{https://github.com/tnbozman/gspro-interface/blob/main/OpenAPI-Documentation-Feedback.MD}; - reference client: - \url{https://github.com/travislang/gspro-garmin-connect-v2} -\item USGA equipment standards: initial velocity TPX3007: - \url{https://www.usga.org/content/dam/usga/pdf/Equipment/TPX3007-initial-velocity-test-procedure.pdf}; - ODS TPX3006: - \url{https://www.usga.org/content/dam/usga/pdf/Equipment/TPX3006-overall-distance-and-symmetry-test-procedure.pdf}; - clubhead CT TPX3004 and MOI TPX3005 via - \url{https://www.usga.org/equipment-standards.html}; - 2028 ALC revision: - \url{https://www.usga.org/content/usga/home-page/articles/2023/12/revised-golf-ball-testing-conditions-to-take-effect-in-2028.html} -\item CFAR tutorial (CA/GO/SO/OS): - \url{https://www.mathworks.com/help/phased/ug/constant-false-alarm-rate-cfar-detection.html}; - Purdue lecture notes: - \url{https://engineering.purdue.edu/~mrb/resources/AltLectureF/Session_21.pdf} -\item Stalker baseball-spin patent (radar spin outside golf): - \url{https://patents.google.com/patent/US10935657B2/en} -\item Weibel Scientific projectile-tracking radar (TrackMan's origin): - \url{https://patents.google.com/patent/EP1735637B1/en} -\end{itemize} - -\section{Comparative testing and market analysis} -\begin{itemize}\small -\item MyGolfSpy indoor accuracy test: - \url{https://mygolfspy.com/news-opinion/three-of-the-most-accurate-indoor-launch-monitors-and-one-to-avoid/} -\item GCQuad vs TrackMan robot spin data: - \url{https://golfsimulatorzone.com/gcquad-vs-trackman-accuracy-in-2026/} -\item Foresight GCQuad/GC3 comparison: - \url{https://www.foresightsports.com/blogs/golf-tips/comparing-golf-launch-monitor-foresight-sports-gcquad-and-gc3-stand-above-the-rest} -\item Bushnell Launch Pro vs GC3 vs GCQuad: - \url{https://www.playbetter.com/blogs/golf/bushnell-launch-pro-vs-gc3-vs-gc-quad-comparison} -\item Photometric vs radar explainers: - \url{https://www.playbetter.com/blogs/golf-simulator-comparisons/photometric-vs-radar-golf-launch-monitor}, - \url{https://golfbays.de/en/blogs/news/radar-vs-photometric-launch-monitors-indoors} -\item Indoor flight compensation: - \url{https://www.cerogolf.com/post/how-launch-monitors-compensate-for-indoor-ball-flight} -\item TrackMan history (Golf Monthly, Tuxen profile): - \url{https://www.golfmonthly.com/features/from-tracking-missiles-to-tracking-golf-balls-meet-the-man-that-you-didnt-realise-changed-golf} -\end{itemize} +\chapter{Live Reference Library} +\label{app:links} + +This appendix collects every substantive source consulted for this review +as a clickable link, organized by category. The four raw research +dossiers in \texttt{tech-review/research/} pair each of these with the +specific claims they support. + +\section{Patents (Google Patents / USPTO)} + +\subsection*{TrackMan A/S (Fredrik Tuxen)} +\begin{itemize}\small +\item Full portfolio index: + \url{https://patents.justia.com/inventor/fredrik-tuxen} \,and\, + \url{https://www.trackman.com/legal/patents} +\item US8845442 --- Determination of spin parameters of a sports ball + (harmonic-sideband spin; Magnus spin-axis inversion): + \url{https://patents.google.com/patent/US8845442B2/en} +\item US10393870 --- continuation of the above: + \url{https://patents.google.com/patent/US10393870B2/en} +\item US10850179 --- spin axis via receiver-pair interferometry: + \url{https://patents.google.com/patent/US10850179B2/en} +\item US8085188 / US9857459 / US10473778 --- target-deviation + (tap-a-target) family: + \url{https://patents.google.com/patent/US8085188B2/en}, + \url{https://patents.google.com/patent/US9857459B2/en}, + \url{https://patents.google.com/patent/US10473778B2/en} +\item US10315093 --- trajectory tracer overlay: + \url{https://patents.google.com/patent/US10315093B2/en} +\item US11086005 --- multi-bay range tracking: + \url{https://patents.google.com/patent/US11086005B2/en} +\item TrackMan's own spin-patent explainer: + \url{https://blog.trackmangolf.com/patent-measuring-the-spin-of-a-sports-ball/} +\end{itemize} + +\subsection*{FlightScope / EDH (Henri Johnson)} +\begin{itemize}\small +\item US9868044 --- dielectric-lens spin measurement: + \url{https://patents.google.com/patent/US9868044B2/en} +\item US10775492 --- direct spin-axis via perpendicular receiver pairs: + \url{https://patents.google.com/patent/US10775492B2/en} +\item US10338209 --- Fusion Tracking (radar+camera): + \url{https://patents.google.com/patent/US10338209B2/en} +\item Company history: + \url{https://athlonsports.com/golf/the-flightscope-story-tracking-the-history-of-flight-in-golf} +\end{itemize} + +\subsection*{Foresight Sports / Wintriss Engineering (Kiraly)} +\begin{itemize}\small +\item US7292711 --- flight parameter measurement system + (\textbf{expired 2025}; markerless dimple-spin blueprint): + \url{https://patents.google.com/patent/US7292711B2/en} +\item US7324663 --- smart-camera sibling (\textbf{expired 2025}): + \url{https://patents.google.com/patent/US7324663B2/en} +\item US7497780 --- integrated launch monitor UX: + \url{https://patents.google.com/patent/US7497780B2/en} +\item US7641565 --- ball-placement detection: + \url{https://patents.google.com/patent/US7641565B2/en} +\item WAWGD (Foresight) filings index: + \url{https://patents.justia.com/inventor/wawgd-inc-dba-foresight-sports} +\item Foresight--Uneekor 2024 license (Business Wire): + \url{https://www.businesswire.com/news/home/20240930838753/en/} +\end{itemize} + +\subsection*{Acushnet / Titleist (Gobush et al.)} +\begin{itemize}\small +\item US5501463 --- stereo + retroreflective dots, club and face + (\textbf{expired}): \url{https://patents.google.com/patent/US5501463A/en} +\item US6500073 --- stereo ball trajectory + flight integration + (\textbf{expired}): \url{https://patents.google.com/patent/US6500073B1/en} +\item US6758759 --- dual stereo monitors, measured face angle + (\textbf{expired}): \url{https://patents.google.com/patent/US6758759B2/en} +\item US7143639 --- portable four-camera monitor (\textbf{expired}): + \url{https://patents.google.com/patent/US7143639B2/en} +\item US8500568 / US8556267 --- portable continuations: + \url{https://patents.google.com/patent/US8500568B2/en}, + \url{https://patents.google.com/patent/US8556267B2/en} +\item US10668350 --- 3D/light-field launch monitor: + \url{https://patents.google.com/patent/US10668350B2/en} +\item US6186002 --- $C_D$/$C_L$ from measured trajectories (model + calibration template): + \url{https://patents.google.com/patent/US6186002B1/en} +\end{itemize} + +\subsection*{Others} +\begin{itemize}\small +\item Full Swing US2020/0147470 --- CW+FMCW dual-mode launch monitor: + \url{https://www.freepatentsonline.com/y2020/0147470.html} +\item Creatz US10247553 --- start-position sensor: + \url{https://patents.google.com/patent/US10247553B2/en} +\item Golfzon US9242158 --- two-stage latency-hiding simulation: + \url{https://patents.google.com/patent/US9242158B2/en} +\item Uneekor patent/license list: \url{https://uneekor.com/legal/patents} +\item Camera-timing/Gabor dimple tracking US12401909: + \url{https://patents.google.com/patent/US12401909B2/en} +\item TrackMan EP1698380 litigation coverage: + \url{https://thegolfwire.com/322771-2/} +\item FlightScope 2022 BGH win vs TrackMan: + \url{https://golfbusinessnews.com/news/innovation-centre/flightscope-wins-patent-infringement-case-against-trackman-in-germany/} +\end{itemize} + +\section{Regulatory / teardown (RF ground truth)} +\begin{itemize}\small +\item TrackMan 4 FCC ID SFX-TMAN4 (X-band + 24\,GHz): + \url{https://fccid.io/SFX-TMAN4} +\item TrackMan iO FCC ID SFX-TMB0201 (24\,GHz): + \url{https://fccid.io/SFX-TMB0201} +\item FlightScope Mevo FCC ID QXP-A7310 (24.125\,GHz): + \url{https://fccid.io/QXP-A7310} +\item Mevo+ teardown / QXP-LJ361 (10.5--10.55\,GHz) discussion: + \url{https://golfsimulatorforum.com/forum/flightscope/277362-mevo-teardown} +\end{itemize} + +\section{Manufacturer technical documentation} + +\subsection*{TrackMan} +\begin{itemize}\small +\item 40+ parameters explained: + \url{https://www.trackman.com/blog/golf/40-trackman-parameters} +\item Club data definitions: + \url{https://www.trackman.com/blog/golf/club-data-definitions} +\item Club speed (geometric-center definition): + \url{https://www.trackman.com/blog/golf/what-is-club-speed} +\item Spin loft / spin rate: + \url{https://www.trackman.com/blog/golf/spin-loft}, + \url{https://www.trackman.com/blog/golf/spin-rate} +\item OERT (``Two radars, one camera, zero doubt''): + \url{https://www.trackman.com/blog/golf/two-radars-one-camera-zero-doubt} +\item Tech specs (TM4, iO): + \url{https://www.trackman.com/golf/launch-monitors/tech-specs} +\item Ball Flight Laws newsletter (Jan.\ 2009; D-plane, and the origin of + the ``85/15'' rule of thumb---see \S\ref{sec:facepathweighting} for why + the measured horizontal weight is $0.76$): + \url{https://www.yumpu.com/en/document/view/11652756/trackman-ball-flight-laws} +\end{itemize} + +\subsection{The TrackMan newsletter archive} + +Every official TrackMan newsletter URL now returns 404, and the Wayback +captures are redirect stubs. A complete live third-party mirror of issues +\#1--\#10 exists and is the richest single source of TrackMan-published +numbers anywhere. All at +\url{https://www.gregsmithgolfcoach.com/wp-content/uploads/2014/04/}: + +\begin{itemize}\itemsep2pt +\item \texttt{newsletter1.pdf} (Nov 2007) through \texttt{newsletter9.pdf} + (Jan 2013), sequentially numbered. +\item \texttt{TrackMan\_Newsletter\_2014.pdf} is issue \#10 (Jan 2014); the + filename convention changed, which is why sequential guesses fail. The + series ends there. +\item \textbf{\#7 (Oct 2010), ``Ten Fundamentals''} is the origin of most + TrackMan rules of thumb, including the 85/15 claim in both planes, the + spin-loft subtraction stated as a definition, and ``the spin rate drops + during ball flight---typically 4\% for each second.'' +\item \textbf{\#9 (Jan 2013)} carries the canonical club-delivery + definitions (all specifying maximum compression) and the only published + TrackMan accuracy specification located: for TrackMan III/IIIe at 95\% + confidence, club speed $\pm1.5$~mph, attack angle $\pm1.0\degs$, club path + $\pm1.0\degs$, dynamic loft $\pm0.8\degs$, face angle $\pm0.6\degs$. +\item \textbf{\#8 (Jun 2011)} quantifies bulge: a $\SI{12.7}{\milli\metre}$ + heel-ward impact makes the face angle $2\degs$ closed at that point + relative to face centre, ``for all drivers on the market.'' +\end{itemize} + +\begin{warning} +Those TrackMan accuracy figures are the manufacturer's own. Independent +testing against a traceable optical benchmark +(Leach et al.\ 2017, +\url{https://doi.org/10.1016/j.measurement.2017.08.009}) found club +path met $\pm1\degs$ on +only $45\%$ of shots and face angle on $66\%$, and that full clubhead +parameters were returned on just $62\%$ of shots overall---$19\%$ for a +utility wedge. The lesson is that a published tolerance and a +per-shot success rate are different specifications, and only the first is +ever advertised. +\end{warning} + +\subsection*{Foresight Sports} +\begin{itemize}\small +\item GCQuad product/technology: + \url{https://www.foresightsports.com/products/gcquad-launch-monitor} +\item Ball and club data (spherical correlation, fiducials): + \url{https://foresightsports.eu/ball-club-data/} +\item HMT head measurement (dot-count data tiers): + \url{https://www.foresightsports.com/hmt-head-measurement} +\item Club marker application guide: + \url{https://help.foresightsports.com/hc/en-us/articles/4408197030035} +\item Marker troubleshooting: + \url{https://help.foresightsports.com/hc/en-us/articles/4405916455443} +\item Design history (Popular Science): + \url{https://www.popsci.com/gear/foresight-sports-quadmax-photometric-golf-launch-monitor-development/} +\end{itemize} + +\subsection*{Other vendors} +\begin{itemize}\small +\item FlightScope X3 (multi-frequency, Fusion Tracking): + \url{https://thegolfwire.com/326713-2/} +\item Garmin R10 architecture and accuracy: + \url{https://mygolfsimulator.com/garmin-r10-data/}, + \url{https://mygolfsimulator.com/garmin-r10-accuracy/} +\item Garmin R50 (three-camera): + \url{https://www.garmin.com/en-US/p/736810/} +\item Full Swing KIT technology and specs: + \url{https://www.fullswinggolf.com/kit-launch-monitor-technology/}, + \url{https://www.fullswinggolf.com/kit-specs/} +\item Rapsodo MLM2PRO spin (MyGolfSpy): + \url{https://mygolfspy.com/news-opinion/rapsodo-mlm2pro-takes-spin-measurement-to-pro-level/} +\item SkyTrak+ measurement: + \url{https://www.skytrakgolf.com/pages/what-does-the-skytrak-st-launch-monitor-measure} +\item Uneekor EYE XO / Dimple Optix: + \url{https://uneekor.com/blogs/blog/photometric-vs.-doppler:-which-launch-monitor-technology-delivers-the-most-accurate-golf-data} +\item Uneekor calibration guide (Carl's Place): + \url{https://www.carlofet.com/blog/calibrating-uneekor-launch-monitors}; + official PDF: + \url{https://download.uneekor.com/docs/EYEXO2_Calibration_Guide.pdf} +\item ProTee VX reviews: + \url{https://www.playbetter.com/blogs/golf-simulator-reviews/protee-vx-review} +\end{itemize} + +\section{Peer-reviewed and academic} +\begin{itemize}\small +\item Penner, ``The physics of golf,'' Rep.\ Prog.\ Phys.\ 66 (2003): + \url{https://iopscience.iop.org/article/10.1088/0034-4885/66/2/202} +\item Leach et al.\ 2017 launch-monitor validation (\emph{Measurement}): + \url{https://www.sciencedirect.com/science/article/abs/pii/S0263224117305079}; + open-access: + \url{https://repository.lboro.ac.uk/articles/journal_contribution/9562799} +\item TrackMan 4 indoor reliability (J.\ Sports Sci.\ 2024): + \url{https://www.tandfonline.com/doi/full/10.1080/02640414.2024.2314864} +\item Mevo+ vs TrackMan 4 agreement (2025): + \url{https://www.sciencedirect.com/science/article/pii/S2772696725000420} +\item Bearman \& Harvey 1976 golf ball aerodynamics: + \url{https://www.cambridge.org/core/journals/aeronautical-quarterly/article/abs/golf-ball-aerodynamics/67FE0903DB1CC12001F1ED1B1261C4B9} +\item Smits \& Smith aerodynamic model: + \url{https://www.researchgate.net/publication/284037213} +\item USGA Indoor Test Range conditions: + \url{https://www.usga.org/content/dam/usga/images/equipment-standards/ITR-test-conditions-2028-ODS.pdf} +\item Friction/tangential compliance and launch angle (MDPI 2020): + \url{https://doi.org/10.3390/proceedings2020049027} +\item Face angle / club path influence study: + \url{https://www.researchgate.net/publication/323373897} +\item Cross oblique-impact golf experiments: + \url{https://www.physics.usyd.edu.au/~cross/GOLF/GOLF.htm} +\item Cross \& Nathan oblique collision formalism: + \url{https://arxiv.org/pdf/1610.03464} +\item Dynamic models review, Sports Engineering 25 (2022): + \url{https://link.springer.com/article/10.1007/s12283-022-00387-0} +\item Stanford LES of golf ball flow (Sports Eng.\ 2019): + \url{http://aero-comlab.stanford.edu/Papers/golf_ball_sports_engineering_2019.pdf} +\item Golf ball aerodynamics in still air (MDPI): + \url{https://www.mdpi.com/2504-3900/2/6/238} +\item Micro-Doppler of spinning projectiles on CW radar: + \url{https://www.researchgate.net/publication/317119893} +\item SpinDOE camera spin estimation (transferable method): + \url{https://arxiv.org/pdf/2303.03879} +\item ``Measuring Ball Spin by Image Registration'': + \url{https://www.researchgate.net/publication/2881136} +\item Doppler ball-tracking thesis (WSU, TrackMan platform): + \url{https://baseball.physics.illinois.edu/trackman/JasonMartinThesisWSU.pdf} +\item Alan Nathan's TrackMan (baseball) technical notes: + \url{https://baseball.physics.illinois.edu/trackman.html} +\item Cochran \& Stobbs, \emph{Search for the Perfect Swing} (1968): + \url{https://archive.org/details/searchforperfect0000coch} +\end{itemize} + +\section{Engineering references (Tutelman et al.)} +\begin{itemize}\small +\item 3D launch conditions from impact conditions: + \url{https://www.tutelman.com/golf/ballflight/3dlaunch.php} +\item Smash factor: \url{https://www.tutelman.com/golf/ballflight/smashfactor.php} +\item Gear effect: \url{https://www.tutelman.com/golf/ballflight/gearEffect1.php} +\item Spin decay: \url{https://www.tutelman.com/golf/ballflight/spinDecay.php} +\item Ball flight laws summary: + \url{https://www.perfectgolfswingreview.net/ballflight.htm} +\item TrackMan face-angle derivation discussion (Manzella forum): + \url{https://forum.brianmanzellagolf.com/threads/how-does-trackman-flightscope-measure-the-club-face-angle.16591/} +\end{itemize} + +\section{DIY / open-source} +\begin{itemize}\small +\item PiTrac GitHub (GPL-2.0): \url{https://github.com/PiTracLM/PiTrac} +\item PiTrac documentation: \url{https://docs.pitrac.org/} +\item PiTrac Hackaday.io project (design logs): + \url{https://hackaday.io/project/195042-pitrac-the-diy-golf-launch-monitor} +\item OpenFlight upstream: \url{https://github.com/jewbetcha/openflight} +\item OpenFlight Grafana write-up: + \url{https://medium.com/grafana-labs/openflight-building-an-open-source-golf-launch-monitor-with-raspberry-pi-grafana-cloud-and-84d68ad40fc5} +\item GC2-imitating OpenCV experiments: + \url{https://github.com/ronheywood/opencv} +\item GSA Golf simulator theory (marked-ball DIY methods): + \url{https://www.golf-simulators.com/GolfSimulatorTheory.html} +\end{itemize} + +\section{Hardware datasheets, protocols, and standards} +\begin{itemize}\small +\item OPS243 product brief: + \url{https://omnipresense.com/wp-content/uploads/2024/01/OPS243-Product-Brief_004-F.pdf} +\item OPS243 AN-010 API interface: + \url{https://omnipresense.com/wp-content/uploads/2025/10/AN-010-AD_API_Interface.pdf} +\item OPS243 AN-027 rolling buffer: + \url{https://omnipresense.com/wp-content/uploads/2025/06/AN-027-A_Rolling-Buffer-1.pdf} +\item OPS243 AN-029 sports applications: + \url{https://omnipresense.com/wp-content/uploads/2026/06/AN-029-A_OPS243-for-Sports_260621.pdf} +\item RFbeam K-LD7 datasheet: + \url{https://rfbeam.ch/product/k-ld7-radar-transceiver/} +\item TI IWR6843 datasheet: + \url{https://www.ti.com/lit/ds/symlink/iwr6843.pdf}; ISK EVM: + \url{https://www.ti.com/tool/IWR6843ISK}; placement app note: + \url{https://www.ti.com/document-viewer/lit/html/SWRA758} +\item TI mmWave golf-swing forum thread: + \url{https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1116424/iwr6843aop-golf-swing-analyzer-with-mmwave-radar} +\item Raspberry Pi camera documentation (Global Shutter, XTR trigger): + \url{https://www.raspberrypi.com/documentation/accessories/camera.html} +\item GSPro Open Connect v1: \url{https://gsprogolf.com/GSProConnectV1.html}; + community feedback: + \url{https://github.com/tnbozman/gspro-interface/blob/main/OpenAPI-Documentation-Feedback.MD}; + reference client: + \url{https://github.com/travislang/gspro-garmin-connect-v2} +\item USGA equipment standards: initial velocity TPX3007: + \url{https://www.usga.org/content/dam/usga/pdf/Equipment/TPX3007-initial-velocity-test-procedure.pdf}; + ODS TPX3006: + \url{https://www.usga.org/content/dam/usga/pdf/Equipment/TPX3006-overall-distance-and-symmetry-test-procedure.pdf}; + clubhead CT TPX3004 and MOI TPX3005 via + \url{https://www.usga.org/equipment-standards.html}; + 2028 ALC revision: + \url{https://www.usga.org/content/usga/home-page/articles/2023/12/revised-golf-ball-testing-conditions-to-take-effect-in-2028.html} +\item CFAR tutorial (CA/GO/SO/OS): + \url{https://www.mathworks.com/help/phased/ug/constant-false-alarm-rate-cfar-detection.html}; + Purdue lecture notes: + \url{https://engineering.purdue.edu/~mrb/resources/AltLectureF/Session_21.pdf} +\item Stalker baseball-spin patent (radar spin outside golf): + \url{https://patents.google.com/patent/US10935657B2/en} +\item Weibel Scientific projectile-tracking radar (TrackMan's origin): + \url{https://patents.google.com/patent/EP1735637B1/en} +\end{itemize} + +\section{Comparative testing and market analysis} +\begin{itemize}\small +\item MyGolfSpy indoor accuracy test: + \url{https://mygolfspy.com/news-opinion/three-of-the-most-accurate-indoor-launch-monitors-and-one-to-avoid/} +\item GCQuad vs TrackMan robot spin data: + \url{https://golfsimulatorzone.com/gcquad-vs-trackman-accuracy-in-2026/} +\item Foresight GCQuad/GC3 comparison: + \url{https://www.foresightsports.com/blogs/golf-tips/comparing-golf-launch-monitor-foresight-sports-gcquad-and-gc3-stand-above-the-rest} +\item Bushnell Launch Pro vs GC3 vs GCQuad: + \url{https://www.playbetter.com/blogs/golf/bushnell-launch-pro-vs-gc3-vs-gc-quad-comparison} +\item Photometric vs radar explainers: + \url{https://www.playbetter.com/blogs/golf-simulator-comparisons/photometric-vs-radar-golf-launch-monitor}, + \url{https://golfbays.de/en/blogs/news/radar-vs-photometric-launch-monitors-indoors} +\item Indoor flight compensation: + \url{https://www.cerogolf.com/post/how-launch-monitors-compensate-for-indoor-ball-flight} +\item TrackMan history (Golf Monthly, Tuxen profile): + \url{https://www.golfmonthly.com/features/from-tracking-missiles-to-tracking-golf-balls-meet-the-man-that-you-didnt-realise-changed-golf} +\end{itemize} diff --git a/tech-review/sections/appendix-b-implementation.tex b/tech-review/sections/appendix-b-implementation.tex index ee261cc..0e8c585 100644 --- a/tech-review/sections/appendix-b-implementation.tex +++ b/tech-review/sections/appendix-b-implementation.tex @@ -1,205 +1,205 @@ -\chapter{Detailed Implementation Guidance for OpenFlight} -\label{app:impl} - -This appendix turns the review into engineering guidance at the level of -signal-processing parameters, algorithms, and procedures, citing the -governing sources throughout. Coordinate conventions follow -\cref{ch:params}. - -\section{Radar signal chain (OPS243-A)} -\label{app:radardsp} - -\subsection{Doppler scaling and resolution budget} - -At $f_c = 24.125$\,GHz, \cref{eq:doppler} gives 71.7\,Hz per mph. With -OpenFlight's 30\,kHz I/Q sample rate, the unambiguous span is -$\pm15$\,kHz $\approx \pm209$\,mph --- adequate for ball speeds to -$\sim$200\,mph. Velocity resolution is set by observation time: -a 128-sample window ($4.27$\,ms) gives $\Delta f = 234$\,Hz -$\approx3.3$\,mph per raw bin; zero-padding to 4096 (the current -pipeline) interpolates the peak but does not add information. For -\emph{spin} work the window, not the padding, must grow: resolving -sidebands at $f_{\mathrm{spin}} = S/60$ (e.g.\ 50\,Hz at 3,000\,rpm) -requires windows of $\gtrsim40$\,ms, during which a 150\,mph ball -decelerates and the central line \emph{chirps} --- so the practical -estimator de-chirps first (track the central line per -US8845442's spectral-trace step~\cite{us8845442}, resample the phase to -remove it), then measures the residual modulation. - -\subsection{Spin-rate comb estimation} - -The patent-documented chain (\cref{sec:radarspin}) maps to this concrete -pipeline~\cite{us8845442,trackmanspinpatentblog}: -\begin{enumerate}\itemsep2pt -\item STFT with 50--75\% overlap over the post-impact 50--250\,ms; - track the ball ridge (max-SNR bin per frame with continuity - constraint). -\item De-chirp: mix each frame down by the tracked ridge frequency so - the ball line sits at DC. -\item Estimate the sideband comb spacing on the de-chirped spectrum via - cepstrum or harmonic product spectrum --- both are robust to - missing harmonics; the patent's \emph{qualification} step - (verify equal spacing across $\ge$3 consecutive frames, and - consistency of the harmonic-number assignment) is what separates - real spin from clutter~\cite{us8845442}. -\item Report spin only when the qualified comb persists; otherwise fall - back to a flagged estimate from club priors - (\cref{app:priors}) --- the Garmin R10's documented - behavior~\cite{garminr10accuracy}. -\end{enumerate} -Expected detection physics: sideband amplitude scales with -ball-surface asymmetry~\cite{us8845442}; range balls and clean urethane -balls read weakly (the reason for Titleist RCT metal-tagged -balls~\cite{mygolfspymlm2pro} and FlightScope's metallic-dot -stickers~\cite{mevoteardown}). Logging which ball type produced each -detection will quantify this for OpenFlight's own statistics. - -\emph{Patent posture:} this method is claimed by -US8845442 to $\sim$2029 (US10393870 to Dec.\ 2026)~\cite{us8845442}; -the FlightScope phase-demodulation alternative (US9868044, dielectric -lens~\cite{us9868044}) is claimed to $\sim$2034. See \cref{sec:fto}. - -\subsection{Club-speed extraction} - -The pre-impact spectrum contains a velocity \emph{smear} from heel -(slow) to toe (fast), plus shaft returns below. TrackMan resolves this -by reconstructing the head silhouette and reporting the geometric -center~\cite{trackmanclubspeed}; a single-radar approximation that -tracks a stable reference is: gate the last 30--50\,ms before the -trigger timestamp, form the velocity histogram of CFAR-passing bins, -discard the bottom decile (shaft/hosel) and top decile (toe glint), and -report a fixed percentile (median of the remainder). Validate against -the loft-dependent smash ceiling of \cref{sec:smash} -(\cite{tutelmansmash}); reject or flag shots exceeding it, which -independent testing shows is the signature of toe-lock -errors~\cite{leach2017}. - -\section{Angle measurement (K-LD7) and the EKF} -\label{app:ekf} - -\subsection{Interferometric angles} - -The K-LD7's two receive patches implement \cref{eq:interferometry} with -a $\lambda/2$-class baseline; per-bin phase comparison of the two ADC -channels after the range-Doppler FFT yields one angle per detection --- -the same phase-monopulse principle as -US10850179~\cite{us10850179} and the R10's three-receiver -array~\cite{garminr10data}. Two practical constraints from the -commercial art: (i) angle error grows as SNR falls, so weight each -detection by measured SNR; (ii) mechanical alignment dominates the -error budget --- a $1\degs$ mount error is a $1\degs$ bias on every -launch direction, amplified $\sim$1.15$\times$ into face angle -(\cref{eq:faceinversion}). - -\subsection{Recommended filter} - -Implement the \cref{sec:ekf} smoother concretely as: -state $\vect{x} = (\vect{p}, \vect{v})$ (add spin states later); -process model \cref{eq:eom} with Smits--Smith -coefficients~\cite{smitssmith}; measurements: OPS243-A radial speed -($\dot r$, high rate, low noise), K-LD7 angle+range detections (lower -rate, SNR-weighted covariance). Run a forward EKF then an RTS -(Rauch--Tung--Striebel) backward smoother over the 50--150\,ms burst, -and evaluate the smoothed state at the sound-trigger timestamp minus -the acoustic delay --- this back-extrapolation is how commercial radars -report launch conditions robustly despite early-flight -clutter~\cite{us8845442,us10338209}. The innovation-gating step of the -EKF doubles as the outlier rejector for multipath and club returns. -The same filtering architecture extends from point tracking (the ball) -to rigid-body tracking (the club) via the screw-theoretic formulation -of \cref{app:screw}, which is the recommended estimation layer for the -IWR6843 integration. - -\subsection{Alignment calibration procedure} - -Adopt the commercial patterns: (i) Uneekor-style floor chart --- a -printed target-line chart at known positions establishes the -target-line azimuth for both K-LD7s~\cite{uneekorcalib}; (ii) -FlightScope-style known-trajectory check --- roll or swing balls along -a surveyed line and verify reported directions -(US10338209 uses a Doppler simulator for the same -purpose~\cite{us10338209}); (iii) record the mount pose in the session -log so data from different setups is never silently mixed. - -\section{Derived club data, with priors} -\label{app:priors} - -Implement the D-plane module once, use it both ways -(\cref{sec:dplane,sec:faceangle}): -\begin{itemize}\itemsep2pt -\item \textbf{Forward} (simulation/validation): Tutelman's calibrated -closed form, \cref{eq:obliqueness,eq:tutelmanlaunch}, plus spin from -\cref{eq:spinrate}~\cite{tutelman3d}. -\item \textbf{Inverse} (reporting): face angle from -\cref{eq:faceinversion} with $w_f$ interpolated in dynamic loft between -0.87 (driver) and 0.75 (wedge)~\cite{trackmanballflightlaws,tutelman3d}; -dynamic loft analogously from launch angle and attack angle. Tag both -as \emph{derived} per \cref{tab:hierarchy}. -\item \textbf{Priors table} per club type (driver\ldots{}wedge): static -loft, typical dynamic-loft delta, spin-loft range, smash ceiling -(\cref{sec:smash}), PGA/LPGA reference deliveries~\cite{trackman40params}. -Used for: spin fallback estimates, outlier gating, and the smash sanity -check. -\item \textbf{Gear-effect bound}: when impact location is unknown, -attach an uncertainty of up to $\pm6\degs$ of spin-axis tilt per -0.14\,in of possible driver miss~\cite{perfectgolfswing,tutelmangear} to -any derived face-to-path interpretation --- and surface it in the UI -rather than hiding it. -\end{itemize} - -\section{Optical module (Phase 2) design parameters} -\label{app:optical} - -The expired Wintriss patents~\cite{us7292711} plus PiTrac's published -design~\cite{pitrac} fix the working parameters: -\begin{itemize}\itemsep2pt -\item \textbf{Sensor}: Raspberry Pi Global Shutter camera (IMX296, -$1456\times1088$); global shutter is non-negotiable (rolling shutter -skews a 150\,mph ball by several pixels per row-time). -\item \textbf{Strobed multi-exposure}: $N=3$--5 IR pulses -(850\,nm, tens of \si{\micro\second} each) inside one long exposure -freeze $N$ ball images per frame; at 150\,mph the ball moves 6.7\,cm/ms, -so pulse spacing of $\sim$300--500\,\si{\micro\second} spaces images -2--3\,cm apart in a 30\,cm capture volume --- matching the commercial -capture geometry~\cite{foresightgcquad,pitrac}. -\item \textbf{Trigger}: reuse the SEN-14262 sound trigger; its -$\sim$10\,\si{\micro\second} latency is far inside the strobe-timing -budget, solving the triggering problem the Wintriss patent addressed -with a microphone+radar pair~\cite{us7292711}. -\item \textbf{Ball detection}: Hough circles on the strobed frame -(PiTrac-proven~\cite{pitrac}); depth from the known 42.67\,mm diameter -(the Wintriss mono-camera range cue~\cite{us7292711}) or from a second -camera via \cref{eq:depth}. -\item \textbf{Spin}: register the dimple texture between successive -ball images over $SO(3)$ (\cref{eq:rotangle}); Gabor-filter -pre-enhancement of dimples is documented in -US12401909~\cite{us12401909}; with $\Delta t \approx 400$\,\si{\micro -\second}, 3,000\,rpm is only $7.2\degs$ of rotation --- comfortably -below the aliasing limit, and small enough that a local search around -the D-plane-predicted axis converges quickly -(\cref{sec:dimplespin}). This is the public-domain -(post-2025) Wintriss/Foresight method~\cite{us7292711,foresightspherical}. -\item \textbf{Impact location / measured face angle} (later): either -face fiducials per the expired Acushnet recipes -(US5501463/US6758759: dots + stereo pose)~\cite{us5501463,us6758759}, -or an overhead second camera per the Uneekor -geometry~\cite{uneekoreyexo}. -\end{itemize} - -\section{Flight model and validation protocol} - -Ship Smits--Smith (\cref{eq:smits}) with spin -decay~\cite{smitssmith}, version the coefficients, and calibrate -against measured trajectories using the US6186002 fitting -approach~\cite{us6186002} --- outdoor sessions with the MLM2PRO (or -simple carry ground-truth) provide the data. Validation against the -MLM2PRO should follow the Leach protocol -structure~\cite{leach2017}: per-club shot blocks, Bland--Altman limits -of agreement per parameter, ball data compared directly, spin compared -only on RPT/RCT balls (where the MLM2PRO's spin is -camera-measured~\cite{mygolfspymlm2pro}), and club speed compared with -an explicit reference-point caveat (\cref{sec:radarclub}). Log raw -I/Q and (later) raw frames for every shot so algorithm changes can be -replayed against history --- the practice that made this review's -accuracy analysis possible for the commercial units is exactly what an -open project can do better. +\chapter{Detailed Implementation Guidance} +\label{app:impl} + +This appendix turns the review into engineering guidance at the level of +signal-processing parameters, algorithms, and procedures, citing the +governing sources throughout. Coordinate conventions follow +\cref{ch:params}. + +\section{Radar signal chain (OPS243-A)} +\label{app:radardsp} + +\subsection{Doppler scaling and resolution budget} + +At $f_c = 24.125$\,GHz, \cref{eq:doppler} gives 71.7\,Hz per mph. With +a 30\,kHz I/Q sample rate, the unambiguous span is +$\pm15$\,kHz $\approx \pm209$\,mph --- adequate for ball speeds to +$\sim$200\,mph. Velocity resolution is set by observation time: +a 128-sample window ($4.27$\,ms) gives $\Delta f = 234$\,Hz +$\approx3.3$\,mph per raw bin; zero-padding to 4096 (the current +pipeline) interpolates the peak but does not add information. For +\emph{spin} work the window, not the padding, must grow: resolving +sidebands at $f_{\mathrm{spin}} = S/60$ (e.g.\ 50\,Hz at 3,000\,rpm) +requires windows of $\gtrsim40$\,ms, during which a 150\,mph ball +decelerates and the central line \emph{chirps} --- so the practical +estimator de-chirps first (track the central line per +US8845442's spectral-trace step~\cite{us8845442}, resample the phase to +remove it), then measures the residual modulation. + +\subsection{Spin-rate comb estimation} + +The patent-documented chain (\cref{sec:radarspin}) maps to this concrete +pipeline~\cite{us8845442,trackmanspinpatentblog}: +\begin{enumerate}\itemsep2pt +\item STFT with 50--75\% overlap over the post-impact 50--250\,ms; + track the ball ridge (max-SNR bin per frame with continuity + constraint). +\item De-chirp: mix each frame down by the tracked ridge frequency so + the ball line sits at DC. +\item Estimate the sideband comb spacing on the de-chirped spectrum via + cepstrum or harmonic product spectrum --- both are robust to + missing harmonics; the patent's \emph{qualification} step + (verify equal spacing across $\ge$3 consecutive frames, and + consistency of the harmonic-number assignment) is what separates + real spin from clutter~\cite{us8845442}. +\item Report spin only when the qualified comb persists; otherwise fall + back to a flagged estimate from club priors + (\cref{app:priors}) --- the Garmin R10's documented + behavior~\cite{garminr10accuracy}. +\end{enumerate} +Expected detection physics: sideband amplitude scales with +ball-surface asymmetry~\cite{us8845442}; range balls and clean urethane +balls read weakly (the reason for Titleist RCT metal-tagged +balls~\cite{mygolfspymlm2pro} and FlightScope's metallic-dot +stickers~\cite{mevoteardown}). Logging which ball type produced each +detection will quantify this for a given deployment. + +\emph{Patent posture:} this method is claimed by +US8845442 to $\sim$2029 (US10393870 to Dec.\ 2026)~\cite{us8845442}; +the FlightScope phase-demodulation alternative (US9868044, dielectric +lens~\cite{us9868044}) is claimed to $\sim$2034. See \cref{sec:fto}. + +\subsection{Club-speed extraction} + +The pre-impact spectrum contains a velocity \emph{smear} from heel +(slow) to toe (fast), plus shaft returns below. TrackMan resolves this +by reconstructing the head silhouette and reporting the geometric +center~\cite{trackmanclubspeed}; a single-radar approximation that +tracks a stable reference is: gate the last 30--50\,ms before the +trigger timestamp, form the velocity histogram of CFAR-passing bins, +discard the bottom decile (shaft/hosel) and top decile (toe glint), and +report a fixed percentile (median of the remainder). Validate against +the loft-dependent smash ceiling of \cref{sec:smash} +(\cite{tutelmansmash}); reject or flag shots exceeding it, which +independent testing shows is the signature of toe-lock +errors~\cite{leach2017}. + +\section{Angle measurement (K-LD7) and the EKF} +\label{app:ekf} + +\subsection{Interferometric angles} + +The K-LD7's two receive patches implement \cref{eq:interferometry} with +a $\lambda/2$-class baseline; per-bin phase comparison of the two ADC +channels after the range-Doppler FFT yields one angle per detection --- +the same phase-monopulse principle as +US10850179~\cite{us10850179} and the R10's three-receiver +array~\cite{garminr10data}. Two practical constraints from the +commercial art: (i) angle error grows as SNR falls, so weight each +detection by measured SNR; (ii) mechanical alignment dominates the +error budget --- a $1\degs$ mount error is a $1\degs$ bias on every +launch direction, amplified $\sim$1.15$\times$ into face angle +(\cref{eq:faceinversion}). + +\subsection{Recommended filter} + +Implement the \cref{sec:ekf} smoother concretely as: +state $\vect{x} = (\vect{p}, \vect{v})$ (add spin states later); +process model \cref{eq:eom} with Smits--Smith +coefficients~\cite{smitssmith}; measurements: OPS243-A radial speed +($\dot r$, high rate, low noise), K-LD7 angle+range detections (lower +rate, SNR-weighted covariance). Run a forward EKF then an RTS +(Rauch--Tung--Striebel) backward smoother over the 50--150\,ms burst, +and evaluate the smoothed state at the sound-trigger timestamp minus +the acoustic delay --- this back-extrapolation is how commercial radars +report launch conditions robustly despite early-flight +clutter~\cite{us8845442,us10338209}. The innovation-gating step of the +EKF doubles as the outlier rejector for multipath and club returns. +The same filtering architecture extends from point tracking (the ball) +to rigid-body tracking (the club) via the screw-theoretic formulation +of \cref{app:screw}, which is the recommended estimation layer for the +IWR6843 integration. + +\subsection{Alignment calibration procedure} + +Adopt the commercial patterns: (i) Uneekor-style floor chart --- a +printed target-line chart at known positions establishes the +target-line azimuth for both K-LD7s~\cite{uneekorcalib}; (ii) +FlightScope-style known-trajectory check --- roll or swing balls along +a surveyed line and verify reported directions +(US10338209 uses a Doppler simulator for the same +purpose~\cite{us10338209}); (iii) record the mount pose in the session +log so data from different setups is never silently mixed. + +\section{Derived club data, with priors} +\label{app:priors} + +Implement the D-plane module once, use it both ways +(\cref{sec:dplane,sec:faceangle}): +\begin{itemize}\itemsep2pt +\item \textbf{Forward} (simulation/validation): Tutelman's calibrated +closed form, \cref{eq:obliqueness,eq:tutelmanlaunch}, plus spin from +\cref{eq:spinrate}~\cite{tutelman3d}. +\item \textbf{Inverse} (reporting): face angle from +\cref{eq:faceinversion} with $w_f$ interpolated in dynamic loft between +0.87 (driver) and 0.75 (wedge)~\cite{trackmanballflightlaws,tutelman3d}; +dynamic loft analogously from launch angle and attack angle. Tag both +as \emph{derived} per \cref{tab:hierarchy}. +\item \textbf{Priors table} per club type (driver\ldots{}wedge): static +loft, typical dynamic-loft delta, spin-loft range, smash ceiling +(\cref{sec:smash}), PGA/LPGA reference deliveries~\cite{trackman40params}. +Used for: spin fallback estimates, outlier gating, and the smash sanity +check. +\item \textbf{Gear-effect bound}: when impact location is unknown, +attach an uncertainty of up to $\pm6\degs$ of spin-axis tilt per +0.14\,in of possible driver miss~\cite{perfectgolfswing,tutelmangear} to +any derived face-to-path interpretation --- and surface it in the UI +rather than hiding it. +\end{itemize} + +\section{Optical module (Phase 2) design parameters} +\label{app:optical} + +The expired Wintriss patents~\cite{us7292711} plus PiTrac's published +design~\cite{pitrac} fix the working parameters: +\begin{itemize}\itemsep2pt +\item \textbf{Sensor}: Raspberry Pi Global Shutter camera (IMX296, +$1456\times1088$); global shutter is non-negotiable (rolling shutter +skews a 150\,mph ball by several pixels per row-time). +\item \textbf{Strobed multi-exposure}: $N=3$--5 IR pulses +(850\,nm, tens of \si{\micro\second} each) inside one long exposure +freeze $N$ ball images per frame; at 150\,mph the ball moves 6.7\,cm/ms, +so pulse spacing of $\sim$300--500\,\si{\micro\second} spaces images +2--3\,cm apart in a 30\,cm capture volume --- matching the commercial +capture geometry~\cite{foresightgcquad,pitrac}. +\item \textbf{Trigger}: reuse the SEN-14262 sound trigger; its +$\sim$10\,\si{\micro\second} latency is far inside the strobe-timing +budget, solving the triggering problem the Wintriss patent addressed +with a microphone+radar pair~\cite{us7292711}. +\item \textbf{Ball detection}: Hough circles on the strobed frame +(PiTrac-proven~\cite{pitrac}); depth from the known 42.67\,mm diameter +(the Wintriss mono-camera range cue~\cite{us7292711}) or from a second +camera via \cref{eq:depth}. +\item \textbf{Spin}: register the dimple texture between successive +ball images over $SO(3)$ (\cref{eq:rotangle}); Gabor-filter +pre-enhancement of dimples is documented in +US12401909~\cite{us12401909}; with $\Delta t \approx 400$\,\si{\micro +\second}, 3,000\,rpm is only $7.2\degs$ of rotation --- comfortably +below the aliasing limit, and small enough that a local search around +the D-plane-predicted axis converges quickly +(\cref{sec:dimplespin}). This is the public-domain +(post-2025) Wintriss/Foresight method~\cite{us7292711,foresightspherical}. +\item \textbf{Impact location / measured face angle} (later): either +face fiducials per the expired Acushnet recipes +(US5501463/US6758759: dots + stereo pose)~\cite{us5501463,us6758759}, +or an overhead second camera per the Uneekor +geometry~\cite{uneekoreyexo}. +\end{itemize} + +\section{Flight model and validation protocol} + +Ship Smits--Smith (\cref{eq:smits}) with spin +decay~\cite{smitssmith}, version the coefficients, and calibrate +against measured trajectories using the US6186002 fitting +approach~\cite{us6186002} --- outdoor sessions with the MLM2PRO (or +simple carry ground-truth) provide the data. Validation against the +MLM2PRO should follow the Leach protocol +structure~\cite{leach2017}: per-club shot blocks, Bland--Altman limits +of agreement per parameter, ball data compared directly, spin compared +only on RPT/RCT balls (where the MLM2PRO's spin is +camera-measured~\cite{mygolfspymlm2pro}), and club speed compared with +an explicit reference-point caveat (\cref{sec:radarclub}). Log raw +I/Q and (later) raw frames for every shot so algorithm changes can be +replayed against history --- the practice that made this review's +accuracy analysis possible for the commercial units is exactly what an +open project can do better. diff --git a/tech-review/sections/appendix-c-hardware.tex b/tech-review/sections/appendix-c-hardware.tex index 5a48d23..4b7a03e 100644 --- a/tech-review/sections/appendix-c-hardware.tex +++ b/tech-review/sections/appendix-c-hardware.tex @@ -1,187 +1,194 @@ -\chapter{Sensor Hardware and Integration Reference} -\label{app:hardware} - -This appendix is a specification-level reference for OpenFlight's actual -and planned building blocks, drawn from vendor datasheets and application -notes (all linked). Notably, OmniPreSense's own sports application note -AN-029 documents the exact OpenFlight golf configuration and cites the -OpenFlight repository by name as its reference -implementation~\cite{an029}. - -\section{OmniPreSense OPS243-A (24\,GHz CW Doppler)} - -\subsection{Hardware} -Per the product brief~\cite{ops243brief}: 24.00--24.25\,GHz ISM band, -11\,dBm transmit power (FCC ID 2ALLL243A), patch antenna with -\textbf{20$\degs$ azimuth $\times$ 24$\degs$ elevation} $-3$\,dB -beamwidth (footprint $\sim$0.4\,m wide at 1\,m, 1.8\,m at 5\,m); motion -detection 1--100\,m; speed to 348\,mph at 50\,ksps; accuracy spec -0.5\%; USB CDC + 3.3\,V UART (default 19{,}200\,8N1); 5--24\,V supply, -1.7\,W active. - -\subsection{API essentials} -From AN-010~\cite{an010}: sample rate \texttt{S=n} (1--1000\,ksps; -10\,ksps default); buffer 1024/512/256/128 via -\texttt{S>}/\texttt{S<}/\texttt{S[}/\texttt{S(}; zero-padding -\texttt{Xn}/\texttt{X=16}/\texttt{X=32} to a 4096-point FFT. Speed -ceiling and resolution scale with sample rate (10\,ksps -$\to$ 31.1\,m/s at 0.061\,m/s; 50\,ksps $\to$ 155.4\,m/s at -0.304\,m/s per 1024-sample buffer). Output modes: \texttt{OJ} JSON, -\texttt{OT} timestamps, \texttt{OM} magnitudes, \texttt{O=n} -multi-object (to 16), \texttt{OF} post-FFT, \texttt{OR} raw I/Q. -Filters: \texttt{R>}/\texttt{R<} speed, \texttt{R$\pm$} direction, -\texttt{M>} magnitude, \texttt{K+} peak averaging; built-in -cosine-error correction \texttt{\^{}/$\pm$n.n} (0--89$\degs$). -\texttt{A!}\ persists settings to flash. - -\subsection{Rolling buffer and triggering} -From AN-027~\cite{an027}: \texttt{G1} enters rolling-buffer mode with a -fixed \textbf{4096-sample I/Q buffer organized as 32 segments of 128 -samples}; trigger by software (\texttt{S!}) or a 3.3\,V rising edge on -\textbf{J3 pin 3 (HOST\_INT)}; \texttt{S\#n} sets the pre/post-trigger -split (default 8 $\to$ 1024 pre + 3072 post). At OpenFlight's 30\,ksps -the buffer spans 136.5\,ms with a 208.5\,mph ceiling --- AN-027's -``golf ball setting.'' The app note wires a \textbf{SparkFun SEN-14262 -Gate output directly to HOST\_INT} (OpenFlight's exact trigger) and -flags the acoustic-latency budget: sound from 2\,m arrives -$\sim$6.6\,ms late, so the pre-trigger split must cover the -impact-to-trigger gap (their example \texttt{S\#18}). - -\subsection{The vendor golf recipe (AN-029)} -AN-029~\cite{an029} specifies: \texttt{S=30} (209\,mph ceiling), -\texttt{S(} 128-sample segments, \texttt{X=32} (4096-point FFT, -0.1\,mph resolution, $\sim$200\,Hz report rate), \texttt{US}, -\texttt{R>10} to mask waggle, \texttt{M>10}, \texttt{O2} to report -ball + club for smash factor (gated 1.0--1.50, matching -\cref{sec:smash}), \texttt{K+} averaging, sensor 2--3\,m behind the -ball. Golf balls are rated ``high'' reflectivity, detectable 5--10\,m. - -\section{RFbeam K-LD7 (24\,GHz FSK, dual-RX angle)} - -Per the datasheet~\cite{kld7}: 24.050--24.250\,GHz FSK (two -frequencies, enabling range via phase difference); EIRP 6\,dBm; 1\,TX + -\textbf{2 I/Q RX patches at 6.223\,mm ($\approx\lambda/2$) spacing} --- -the interferometric baseline of \cref{eq:interferometry}; beam -80$\degs$\,H $\times$ 34$\degs$\,V. Per-frame 256-point complex FFT; -\textbf{angle $\pm$90$\degs$ at 1$\degs$ resolution from the -Rx1--Rx2 phase difference}; distance 5\,cm--100\,m (resolution 5\,cm at -the 5\,m range setting); speed 0.1--100\,km/h --- note the -\textbf{62\,mph speed ceiling}, which confines the K-LD7 to angle and -club-speed work; ball speed must come from the OPS243-A. Frame time at -the 100\,km/h setting is 29\,ms ($\sim$34\,Hz). - -UART protocol (115200\,8E1 default, to 3\,Mbaud via \texttt{INIT}): -message types \texttt{RADC} (raw ADC: 256\,I + 256\,Q for Rx1@$f_A$, -Rx2@$f_A$, Rx1@$f_B$ --- the payload OpenFlight's interferometry -consumes), \texttt{RFFT} (spectrum + threshold), \texttt{PDAT} (up to -12 raw targets: distance/speed/angle/magnitude), \texttt{TDAT} -(tracked target), \texttt{DDAT} (flags), \texttt{DONE} (frame counter ---- use it to detect dropped frames); requested via the \texttt{GNFD} -bitfield. Configuration: \texttt{RSPI} max speed, \texttt{RRAI} max -range, \texttt{THOF} threshold offset (10--60\,dB), \texttt{RBFR} base -frequency (three channels for multi-module coexistence --- set the two -OpenFlight units to different channels), \texttt{TRFT} tracking filter, -detection-window bounds (\texttt{MIRA}/\texttt{MARA}/\texttt{MIAN}/ -\texttt{MAAN}/\texttt{MISP}/\texttt{MASP}). Positive speed = receding. - -\section{TI IWR6843 (60--64\,GHz FMCW MIMO, on order)} - -Per the datasheet~\cite{iwr6843}: 60--64\,GHz with \textbf{4\,GHz -chirp bandwidth} ($\sim$3.75\,cm native range resolution); -\textbf{3\,TX / 4\,RX = 12 virtual antennas} (TDM-MIMO); on-chip -C674x DSP + radar hardware accelerator (FFT, log-magnitude, CFAR); -complex-baseband ADC to 12.5\,Msps. The LEVM/ISK-class EVMs give -$\sim$120$\degs$ azimuth FoV with $\sim$15$\degs$ azimuth angular -resolution (8 virtual azimuth antennas) and coarse elevation; the AOP -variant trades resolution for a 130$\degs\times$130$\degs$ field. The -out-of-box mmWave SDK demo streams a TLV point cloud -($x,y,z$, Doppler) at $\sim$10--20\,Hz --- \emph{too slow for a 3\,ms -launch window}; using the IWR6843 for launch measurement requires a -custom chirp/frame configuration (short frames, high Doppler span) and -low-level processing, for which TI's people-tracking labs -(TIDEP-01000/01010) are the closest starting points~\cite{iwr6843}. -TI's forums confirm no golf-specific lab exists. The natural OpenFlight -role: a single sensor that measures range, angle, and radial speed -simultaneously (replacing both K-LD7s) once custom chirp work is done. - -\section{Raspberry Pi Global Shutter camera (optical module)} - -Sony IMX296 sensor: 1456$\times$1088, 3.45\,\si{\micro\meter} pixels, -true global shutter, exposures to $\sim$30\,\si{\micro\second}, max -$\sim$60\,fps streaming~\cite{pigscam}. The key feature for -\cref{app:optical} is the \textbf{XTR external-trigger pad}: pulse low -to expose (exposure = pulse width + 14.26\,\si{\micro\second}); frame -rate follows the pulse train; multiple cameras on one trigger line are -hardware-synchronized; enable with -\texttt{v4l2-ctl -c trigger\_mode=1} (early boards: remove R11 if Q2 -is fitted)~\cite{pigscam}. Continuous 60\,fps cannot capture flight --- -the strobed multi-exposure design of \cref{app:optical} is the correct -use of this sensor. - -\section{Simulator integration: GSPro Open Connect} -\label{app:gspro} - -GSPro's Open Connect v1~\cite{gspro} is the only fully documented open -launch-monitor protocol and should be OpenFlight's native output -(PiTrac ships it; E6/TruGolf and Foresight FSX require partnership -agreements~\cite{pitrac}). Mechanics: JSON over TCP to -\texttt{127.0.0.1:0921}, launch monitor as client. Minimum shot -message: \texttt{DeviceID}, \texttt{ShotNumber}, \texttt{APIversion}, -\texttt{ShotDataOptions\{ContainsBallData, ContainsClubData\}}, and -\texttt{BallData} with the five required fields: -\begin{center}\small -\begin{tabular}{@{}llll@{}} -\toprule -Field & Units & Required & Maps to \\ -\midrule -\texttt{Speed} & mph & yes & ball speed (\cref{tab:ballparams}) \\ -\texttt{VLA} & deg & yes & launch angle \\ -\texttt{HLA} & deg & yes & launch direction \\ -\texttt{TotalSpin} & rpm & yes$^{*}$ & spin rate \\ -\texttt{SpinAxis} & deg & yes$^{*}$ & spin-axis tilt ($-$ = draw) \\ -\bottomrule -\end{tabular} - -\smallskip -\footnotesize $^{*}$or \texttt{BackSpin}+\texttt{SideSpin}, related by -\cref{eq:spincomponents}. -\end{center} -Optional \texttt{ClubData} carries \texttt{Speed}, -\texttt{AngleOfAttack}, \texttt{Path}, \texttt{FaceToTarget}, -\texttt{Loft}, \texttt{Lie}, \texttt{SpeedAtImpact}, -\texttt{VerticalFaceImpact}, \texttt{HorizontalFaceImpact}, -\texttt{ClosureRate} --- precisely the \cref{tab:clubparams} set, so -the provenance tagging of \cref{ch:implications} carries through -unchanged. Status flags (\texttt{LaunchMonitorIsReady}, -\texttt{LaunchMonitorBallDetected}, \texttt{IsHeartBeat}) and the -201 player-info response (handedness, selected club --- useful for -per-club priors, \cref{app:priors}) complete the loop. - -\section{Regulatory constants for the physics engine} - -USGA/R\&A equipment rules anchor the models of -\cref{ch:impact,ch:flight}~\cite{usgarules}: ball mass -$\le45.93$\,g and diameter $\ge42.67$\,mm (the constants in -\cref{eq:eom}); clubhead characteristic time -$\mathrm{CT}\le239$\,\si{\micro\second} (+18 tolerance) -$\approx$ COR 0.830 --- the $e$ in \cref{eq:ballspeed}; head MOI -$\le5900$\,g\,cm$^2$ (+100) about the vertical CG axis --- the upper -bound on $I_h$ in \cref{eq:gear}; volume $\le460$\,cc. The Overall -Distance Standard (317\,yd + 3 at 120\,mph clubhead / 10$\degs$ / -2520\,rpm; from January 2028, 125\,mph / 11$\degs$ / 2200\,rpm) is a -useful end-to-end sanity envelope for the flight model: a conforming -ball simulated at ALC conditions must not materially exceed -320\,yd~\cite{usgarules}. - -\section{Detection theory: CFAR selection} - -OpenFlight's current CFAR (SNR $>15$ over a 150-bin DC mask) is a -cell-averaging scheme. The radar literature~\cite{cfartutorial} -distinguishes: CA-CFAR (mean of training cells around the cell under -test, guard cells excluded; threshold $\alpha\hat P_n$ with $\alpha$ -set by the desired false-alarm probability) --- optimal in homogeneous -noise; and \textbf{OS-CFAR} (order statistic: the $k$-th ranked -training cell) --- robust when two targets sit close together, at -$\sim$0.5--1\,dB detection loss. The club-then-ball geometry of a golf -shot is precisely the two-closely-spaced-targets case, so OS-CFAR is -the better default for the impact window. +\chapter{Sensor Hardware and Integration Reference} +\label{app:hardware} + +This appendix is a specification-level reference for the commodity sensing +components a launch monitor can be built from, drawn from vendor datasheets +and application notes (all linked). The parts covered here are +representative rather than prescriptive: they are the modules for which +manufacturers publish enough detail to reason about performance, which makes +them useful worked examples whether or not they end up in a given design. + +Two of them are documented for this application by their own manufacturers. +OmniPreSense's sports application note AN-029 covers a golf configuration +directly~\cite{an029}, which is unusual and worth exploiting --- most radar +modules are documented for traffic and presence sensing, leaving the +sports-specific parameters to be derived from first principles. + +\section{OmniPreSense OPS243-A (24\,GHz CW Doppler)} + +\subsection{Hardware} +Per the product brief~\cite{ops243brief}: 24.00--24.25\,GHz ISM band, +11\,dBm transmit power (FCC ID 2ALLL243A), patch antenna with +\textbf{20$\degs$ azimuth $\times$ 24$\degs$ elevation} $-3$\,dB +beamwidth (footprint $\sim$0.4\,m wide at 1\,m, 1.8\,m at 5\,m); motion +detection 1--100\,m; speed to 348\,mph at 50\,ksps; accuracy spec +0.5\%; USB CDC + 3.3\,V UART (default 19{,}200\,8N1); 5--24\,V supply, +1.7\,W active. + +\subsection{API essentials} +From AN-010~\cite{an010}: sample rate \texttt{S=n} (1--1000\,ksps; +10\,ksps default); buffer 1024/512/256/128 via +\texttt{S>}/\texttt{S<}/\texttt{S[}/\texttt{S(}; zero-padding +\texttt{Xn}/\texttt{X=16}/\texttt{X=32} to a 4096-point FFT. Speed +ceiling and resolution scale with sample rate (10\,ksps +$\to$ 31.1\,m/s at 0.061\,m/s; 50\,ksps $\to$ 155.4\,m/s at +0.304\,m/s per 1024-sample buffer). Output modes: \texttt{OJ} JSON, +\texttt{OT} timestamps, \texttt{OM} magnitudes, \texttt{O=n} +multi-object (to 16), \texttt{OF} post-FFT, \texttt{OR} raw I/Q. +Filters: \texttt{R>}/\texttt{R<} speed, \texttt{R$\pm$} direction, +\texttt{M>} magnitude, \texttt{K+} peak averaging; built-in +cosine-error correction \texttt{\^{}/$\pm$n.n} (0--89$\degs$). +\texttt{A!}\ persists settings to flash. + +\subsection{Rolling buffer and triggering} +From AN-027~\cite{an027}: \texttt{G1} enters rolling-buffer mode with a +fixed \textbf{4096-sample I/Q buffer organized as 32 segments of 128 +samples}; trigger by software (\texttt{S!}) or a 3.3\,V rising edge on +\textbf{J3 pin 3 (HOST\_INT)}; \texttt{S\#n} sets the pre/post-trigger +split (default 8 $\to$ 1024 pre + 3072 post). At 30\,ksps +the buffer spans 136.5\,ms with a 208.5\,mph ceiling --- AN-027's +``golf ball setting.'' The app note wires a \textbf{SparkFun SEN-14262 +Gate output directly to HOST\_INT} (the standard hardware-trigger wiring) and +flags the acoustic-latency budget: sound from 2\,m arrives +$\sim$6.6\,ms late, so the pre-trigger split must cover the +impact-to-trigger gap (their example \texttt{S\#18}). + +\subsection{The vendor golf recipe (AN-029)} +AN-029~\cite{an029} specifies: \texttt{S=30} (209\,mph ceiling), +\texttt{S(} 128-sample segments, \texttt{X=32} (4096-point FFT, +0.1\,mph resolution, $\sim$200\,Hz report rate), \texttt{US}, +\texttt{R>10} to mask waggle, \texttt{M>10}, \texttt{O2} to report +ball + club for smash factor (gated 1.0--1.50, matching +\cref{sec:smash}), \texttt{K+} averaging, sensor 2--3\,m behind the +ball. Golf balls are rated ``high'' reflectivity, detectable 5--10\,m. + +\section{RFbeam K-LD7 (24\,GHz FSK, dual-RX angle)} + +Per the datasheet~\cite{kld7}: 24.050--24.250\,GHz FSK (two +frequencies, enabling range via phase difference); EIRP 6\,dBm; 1\,TX + +\textbf{2 I/Q RX patches at 6.223\,mm ($\approx\lambda/2$) spacing} --- +the interferometric baseline of \cref{eq:interferometry}; beam +80$\degs$\,H $\times$ 34$\degs$\,V. Per-frame 256-point complex FFT; +\textbf{angle $\pm$90$\degs$ at 1$\degs$ resolution from the +Rx1--Rx2 phase difference}; distance 5\,cm--100\,m (resolution 5\,cm at +the 5\,m range setting); speed 0.1--100\,km/h --- note the +\textbf{62\,mph speed ceiling}, which confines the K-LD7 to angle and +club-speed work; ball speed must come from a separate CW module. Frame time at +the 100\,km/h setting is 29\,ms ($\sim$34\,Hz). + +UART protocol (115200\,8E1 default, to 3\,Mbaud via \texttt{INIT}): +message types \texttt{RADC} (raw ADC: 256\,I + 256\,Q for Rx1@$f_A$, +Rx2@$f_A$, Rx1@$f_B$ --- the payload an interferometric angle solution +consumes), \texttt{RFFT} (spectrum + threshold), \texttt{PDAT} (up to +12 raw targets: distance/speed/angle/magnitude), \texttt{TDAT} +(tracked target), \texttt{DDAT} (flags), \texttt{DONE} (frame counter +--- use it to detect dropped frames); requested via the \texttt{GNFD} +bitfield. Configuration: \texttt{RSPI} max speed, \texttt{RRAI} max +range, \texttt{THOF} threshold offset (10--60\,dB), \texttt{RBFR} base +frequency (three channels for multi-module coexistence --- set +co-located units to different channels), \texttt{TRFT} tracking filter, +detection-window bounds (\texttt{MIRA}/\texttt{MARA}/\texttt{MIAN}/ +\texttt{MAAN}/\texttt{MISP}/\texttt{MASP}). Positive speed = receding. + +\section{TI IWR6843 (60--64\,GHz FMCW MIMO)} + +Per the datasheet~\cite{iwr6843}: 60--64\,GHz with \textbf{4\,GHz +chirp bandwidth} ($\sim$3.75\,cm native range resolution); +\textbf{3\,TX / 4\,RX = 12 virtual antennas} (TDM-MIMO); on-chip +C674x DSP + radar hardware accelerator (FFT, log-magnitude, CFAR); +complex-baseband ADC to 12.5\,Msps. The LEVM/ISK-class EVMs give +$\sim$120$\degs$ azimuth FoV with $\sim$15$\degs$ azimuth angular +resolution (8 virtual azimuth antennas) and coarse elevation; the AOP +variant trades resolution for a 130$\degs\times$130$\degs$ field. The +out-of-box mmWave SDK demo streams a TLV point cloud +($x,y,z$, Doppler) at $\sim$10--20\,Hz --- \emph{too slow for a 3\,ms +launch window}; using the IWR6843 for launch measurement requires a +custom chirp/frame configuration (short frames, high Doppler span) and +low-level processing, for which TI's people-tracking labs +(TIDEP-01000/01010) are the closest starting points~\cite{iwr6843}. +TI's forums confirm no golf-specific lab exists. The natural +role: a single sensor that measures range, angle, and radial speed +simultaneously --- replacing a pair of single-baseline angle modules --- +once the custom chirp work is done. + +\section{Raspberry Pi Global Shutter camera (optical module)} + +Sony IMX296 sensor: 1456$\times$1088, 3.45\,\si{\micro\meter} pixels, +true global shutter, exposures to $\sim$30\,\si{\micro\second}, max +$\sim$60\,fps streaming~\cite{pigscam}. The key feature for +\cref{app:optical} is the \textbf{XTR external-trigger pad}: pulse low +to expose (exposure = pulse width + 14.26\,\si{\micro\second}); frame +rate follows the pulse train; multiple cameras on one trigger line are +hardware-synchronized; enable with +\texttt{v4l2-ctl -c trigger\_mode=1} (early boards: remove R11 if Q2 +is fitted)~\cite{pigscam}. Continuous 60\,fps cannot capture flight --- +the strobed multi-exposure design of \cref{app:optical} is the correct +use of this sensor. + +\section{Simulator integration: GSPro Open Connect} +\label{app:gspro} + +GSPro's Open Connect v1~\cite{gspro} is the only fully documented open +launch-monitor protocol and is the sensible native output +(PiTrac ships it; E6/TruGolf and Foresight FSX require partnership +agreements~\cite{pitrac}). Mechanics: JSON over TCP to +\texttt{127.0.0.1:0921}, launch monitor as client. Minimum shot +message: \texttt{DeviceID}, \texttt{ShotNumber}, \texttt{APIversion}, +\texttt{ShotDataOptions\{ContainsBallData, ContainsClubData\}}, and +\texttt{BallData} with the five required fields: +\begin{center}\small +\begin{tabular}{@{}llll@{}} +\toprule +Field & Units & Required & Maps to \\ +\midrule +\texttt{Speed} & mph & yes & ball speed (\cref{tab:ballparams}) \\ +\texttt{VLA} & deg & yes & launch angle \\ +\texttt{HLA} & deg & yes & launch direction \\ +\texttt{TotalSpin} & rpm & yes$^{*}$ & spin rate \\ +\texttt{SpinAxis} & deg & yes$^{*}$ & spin-axis tilt ($-$ = draw) \\ +\bottomrule +\end{tabular} + +\smallskip +\footnotesize $^{*}$or \texttt{BackSpin}+\texttt{SideSpin}, related by +\cref{eq:spincomponents}. +\end{center} +Optional \texttt{ClubData} carries \texttt{Speed}, +\texttt{AngleOfAttack}, \texttt{Path}, \texttt{FaceToTarget}, +\texttt{Loft}, \texttt{Lie}, \texttt{SpeedAtImpact}, +\texttt{VerticalFaceImpact}, \texttt{HorizontalFaceImpact}, +\texttt{ClosureRate} --- precisely the \cref{tab:clubparams} set, so +the provenance tagging of \cref{ch:implications} carries through +unchanged. Status flags (\texttt{LaunchMonitorIsReady}, +\texttt{LaunchMonitorBallDetected}, \texttt{IsHeartBeat}) and the +201 player-info response (handedness, selected club --- useful for +per-club priors, \cref{app:priors}) complete the loop. + +\section{Regulatory constants for the physics engine} + +USGA/R\&A equipment rules anchor the models of +\cref{ch:impact,ch:flight}~\cite{usgarules}: ball mass +$\le45.93$\,g and diameter $\ge42.67$\,mm (the constants in +\cref{eq:eom}); clubhead characteristic time +$\mathrm{CT}\le239$\,\si{\micro\second} (+18 tolerance) +$\approx$ COR 0.830 --- the $e$ in \cref{eq:ballspeed}; head MOI +$\le5900$\,g\,cm$^2$ (+100) about the vertical CG axis --- the upper +bound on $I_h$ in \cref{eq:gear}; volume $\le460$\,cc. The Overall +Distance Standard (317\,yd + 3 at 120\,mph clubhead / 10$\degs$ / +2520\,rpm; from January 2028, 125\,mph / 11$\degs$ / 2200\,rpm) is a +useful end-to-end sanity envelope for the flight model: a conforming +ball simulated at ALC conditions must not materially exceed +320\,yd~\cite{usgarules}. + +\section{Detection theory: CFAR selection} + +A typical CFAR setting (SNR $>15$ over a 150-bin DC mask) is a +cell-averaging scheme. The radar literature~\cite{cfartutorial} +distinguishes: CA-CFAR (mean of training cells around the cell under +test, guard cells excluded; threshold $\alpha\hat P_n$ with $\alpha$ +set by the desired false-alarm probability) --- optimal in homogeneous +noise; and \textbf{OS-CFAR} (order statistic: the $k$-th ranked +training cell) --- robust when two targets sit close together, at +$\sim$0.5--1\,dB detection loss. The club-then-ball geometry of a golf +shot is precisely the two-closely-spaced-targets case, so OS-CFAR is +the better default for the impact window. diff --git a/tech-review/sections/appendix-d-patent-compendium.tex b/tech-review/sections/appendix-d-patent-compendium.tex index 1308711..c70b730 100644 --- a/tech-review/sections/appendix-d-patent-compendium.tex +++ b/tech-review/sections/appendix-d-patent-compendium.tex @@ -1,400 +1,400 @@ -\chapter{Patent Portfolio Compendium} -\label{app:patents} - -This appendix enumerates, company by company, every US patent identified -in the portfolio sweep (July 2026), with each number hyperlinked to its -Google Patents page. Coverage notes: all 45 numbers on TrackMan's -official legal page~\cite{trackmanpatents} are included plus seven -granted TrackMan patents absent from that page; Uneekor's marking -page~\cite{uneekorpatents} and Justia/FreePatentsOnline assignee sweeps -were used as completeness cross-checks. Priority years are US/PCT -filing-based (Korean assignees typically claim a KR priority -$\sim$12 months earlier). Status is as reported by Google Patents; -\emph{verify claim-by-claim with counsel before relying on any entry}. - -Two attribution corrections surfaced by this sweep are worth flagging -prominently: (i) the widely cited ``radar + image data 3D tracking'' -family US10596416 / US11697046 / US12128275 belongs to -\textbf{Topgolf Sweden AB (Toptracer)}, not TrackMan; and (ii) Full -Swing's launch-monitor application US2020/0147470 granted as -\patent{US11311789B2} (expiry $\sim$2039). - -\section{TrackMan A/S (incl.\ Interactive Sports Games A/S)} - -\subsection*{Radar fundamentals and target-line deviation (2004--2011)} -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US8085188B2} & Deviation of launched projectile vs.\ - image-designated target direction & 2004 & family expires - 2026--27 \\ -\patent{US8912945B2} & Continuation: camera+radar launch/target/ - trajectory correlation & 2004 & not on legal page \\ -\patent{US9857459B2} & Continuation: camera on radar identifies target - feature & 2004 & lapsed 2022 \\ -\patent{US10473778B2} & Continuation & 2004 & \\ -\patent{US10690764B2} & Continuation & 2004 & \\ -\patent{US9958527B2} & Direction-of-arrival sensor: extra RX antenna - resolves monopulse phase ambiguity & 2011 & the sparse-array - geometry of \cref{sec:interferometry} \\ -\bottomrule -\end{longtable} - -\subsection*{Spin rate and spin axis} -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US8845442B2} & Spin rate via harmonic sidebands; spin axis via - trajectory/Magnus inversion & 2005 & to $\sim$2029 (PTA); - EP\,1\,698\,380 litigated \\ -\patent{US9645235B2} & Continuation & 2005 & \\ -\patent{US10393870B2} & Continuation & 2005 & to Dec.\ 2026 \\ -\patent{US10962635B2} & Continuation & 2005 & not on legal page \\ -\patent{US11143754B2} & Continuation & 2005 & not on legal page \\ -\patent{US10850179B2} & Spin axis from multi-receiver Doppler - decomposition & 2018 & \\ -\patent{US11446546B2} & Continuation: phase differences $\to$ axis & - 2018 & \\ -\patent{US11938375B2} & Continuation: $\ge$3 non-colinear receivers & - 2018 & \\ -\patent{US11673029B2} & Marked-ball radar spin (great-circle marker - layout) & 2019 & the RCT-ball patent \\ -\patent{US12179068B2} & Continuation & 2019 & \\ -\patent{US12042698B2} & Toppling frequency of non-spherical rotating - objects & 2018 & \\ -\bottomrule -\end{longtable} - -\subsection*{Club impact (markerless, single camera)} -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US10953303B2} & Impact when/where via fixed club points across - frames & 2017 & the OERT impact-location family \\ -\patent{US11439886B2} & Single camera, no markers or stereo & 2017 & \\ -\patent{US11612801B2} & Continuation & 2017 & \\ -\patent{US12263393B2} & Fix points + fix lines $\to$ 3D orientation & - 2017 & \\ -\bottomrule -\end{longtable} - -\subsection*{Radar+camera fusion, calibration, tracer, range, short game} -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US10052542B2} & Coordinating radar + image data; overlay & - 2004 & \\ -\patent{US10471328B2} & Continuation & 2004 & \\ -\patent{US10989791B2} & Fused radar range/rate + imager angles track & - 2016 & core fusion patent \\ -\patent{US11828867B2} & Continuation & 2016 & \\ -\patent{US11619708B2} & Inter-sensor calibration by track comparison & - 2020 & \\ -\patent{US12517218B2} & Continuation: automatic calibration & 2020 & \\ -\patent{US11748985B2} & Master clock; composite multi-moment images & - 2019 & \\ -\patent{US12067775B2} & Continuation & 2019 & \\ -\patent{US12586211B2} & Imager event detection; camera power-mode - switch & 2023 & not on legal page \\ -\patent{US9855481B2} & Broadcast tracer overlay & 2009 & 5-patent - family: also \patent{US10315093B2}, \patent{US10441863B2}, - \patent{US11135495B2}, \patent{US11291902B2} \\ -\patent{US10379214B2} & Multi-bay range tracking (one radar, many - bays) & 2016 & also \patent{US11086005B2}, - \patent{US11921190B2}, \patent{US12618962B2} \\ -\patent{US11452911B2} & Bay imager + range radar arbitration & 2019 & - also \patent{US11986698B2} \\ -\patent{US12036465B2} & Player ID via wearable + trajectory - correlation & 2021 & \\ -\patent{US12186643B2} & Camera line-of-sight $\cap$ terrain model - $\to$ ball rest position & 2021 & \\ -\patent{US10444339B2} & Bounce/slide/roll classification from velocity - profile & 2016 & also \patent{US11079483B2}, - \patent{US11619731B2}, \patent{US11946997B2} (green speed) \\ -\patent{US11285367B2} & Strategy simulation from player capability & - 2018 & also \patent{US12109473B2} \\ -\patent{US11951372B2} & Mishit filtering, optimal-shot analytics & - 2020 & also \patent{US12539454B2} \\ -\patent{US12616891B2} & Automated ball/strike, biometric strike zone & - 2021 & baseball; not on legal page \\ -\bottomrule -\end{longtable} - -\section{Topgolf Sweden AB (Toptracer / Protracer)} - -A separate company from TrackMan; camera-first range tracking. -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US8077917B2} & Enhancing images in sports video (the founding - Protracer tracer, Forsgren) & 2006 & \\ -\patent{US10596416B2} & 3D tracking: radar + image data & 2017 & - also \patent{US11697046B2}, \patent{US12128275B2} \\ -\patent{US10898757B2} & 3D tracking: radar speed + 2D image & 2020 & - also \patent{US11504582B2}, \patent{US11883716B2}, - \patent{US12330020B2} \\ -\patent{US11335013B2} & Motion-based pre-processing, virtual time - sync & 2020 & also \patent{US11557044B2}, \patent{US12322122B2} \\ -\patent{US11644562B2} & Trajectory extrapolation, origin - determination & 2020 & also \patent{US11771957B2}, - \patent{US12121771B2}, \patent{US11964188B2} \\ -\patent{US11513208B2} & Camera-based projectile spin & 2021 & also - \patent{US12105184B2}; club-parameter spin - \patent{US12544624B2} \\ -\patent{US11995846B2} & Tracking with unverified detections & 2021 & - also \patent{US12361570B2} \\ -\patent{US11815618B2} & Doppler radar coexistence & 2021 & also - \patent{US12253622B2} \\ -\patent{US12206977B2} & Predictive camera control & 2022 & \\ -\patent{US12298326B2} & Wind velocity estimation & 2022 & \\ -\patent{US12594460B2} & Blob management for projectile tracking & - 2023 & \\ -\bottomrule -\end{longtable} - -\section{FlightScope / EDH (Henri Johnson)} - -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{WO2003032006A1} & Foundational golf-ball tracking: Doppler + - antenna array phase monopulse & 2001 & GB/WO only; expired art \\ -\patent{US8189857B2} & Bounce-mark detection + tracking (cricket) & - 2007 & \\ -\patent{US9036864B2} & Trajectory and bounce position & 2011 & - reinstated \\ -\patent{US9868044B2} & Spin rate from phase modulation - (dielectric-lens) & 2013 & to $\sim$2034; reinstated \\ -\patent{US10775492B2} & Spin axis from perpendicular receiver pairs & - 2013 & to $\sim$2035 \\ -\patent{US10338209B2} & Fusion Tracking (multi-receiver + camera) & - 2015 & also \patent{US11016188B2} \\ -\patent{US11573082B2} & Tracking in varied environmental conditions & - 2019 & \\ -\patent{US12528005B2} & Weather-based range prediction, club selector - & 2023 & \\ -\patent{US20160306036A1} & Putting-green tracking & 2013 & - abandoned; citable art \\ -\patent{US20180239012A1} & Antenna with boresight optical system & - 2013 & abandoned; Fusion hardware disclosure \\ -\bottomrule -\end{longtable} - -\section{Full Swing Golf} - -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US11311789B2} & CW + FMCW dual-mode radar, non-uniform array - (the KIT patent; grant of US2020/0147470) & 2018 & to - $\sim$2039; also \patent{US11844990B2} \\ -\patent{US11875517B2} & Frame-difference ball tracking, screen impact - point & 2020 & also \patent{US12354282B2} \\ -\patent{US8758103B2} & IR light-curtain translation + imaging - rotation (legacy simulators) & 2009 & also \patent{US9616346B2}, - \patent{US11033826B2} \\ -\patent{US8926416B2} & Simulator: spin via image analysis & 2007 & - also \patent{US10058733B2} \\ -\patent{US8414408B2} & Ball-permeable screen, ball return & 2009 & - also \patent{US8834284B2} \\ -\bottomrule -\end{longtable} - -Caution: \patent{US10605910B2}/\patent{US11086008B2} (Alphawave Golf) -and \patent{US11565166B2} (individual) surface in ``Full Swing'' text -searches but are unrelated assignees. - -\section{Garmin} - -\patent{US11351436B2} --- ``Hybrid golf launch monitor'' (2019 -priority): the Approach R10 patent, Doppler radar with camera -supplement/correction. Garmin's golf-radar estate is essentially this -single family; supporting art: \patent{US8647214B2} (2008, -motion-sensor swing analysis), \patent{US7467060B2} family (2006, -wearable motion-parameter estimation). - -\section{Rapsodo Pte.\ Ltd.} - -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US9955126B2} & Core camera+radar moving-object analysis & - 2015 & \\ -\patent{US11170513B2} & Marked-ball spin via surface-template matching - & 2016 & the RPT-ball patent \\ -\patent{US11747461B2} & Radar+camera data fusion & 2018 & \\ -\patent{US20210299540A1} & 3D reconstruction of the launch scene & - 2018 & application \\ -\patent{US20230065614A1} & Spin detection/estimation pipeline & 2021 & - application \\ -\patent{US20230364468A1} & Deep-learning ball/swing parameters from - radar+image & 2021 & also club-side - \patent{US20230070986A1} \\ -\patent{US12169941B1} & Target-plane crossing localization & 2024 & \\ -\patent{US12586248B2} & Newest camera+radar fusion grants & 2024 & - also \patent{US12548194B2} \\ -\patent{US12158517B1} & Range-gated imager & 2024 & \\ -\bottomrule -\end{longtable} - -\section{Camera vendors: Foresight/Wintriss, Creatz/Uneekor, Golfzon} - -\subsection*{Foresight Sports (Wintriss $\to$ WAWGD $\to$ Wawgd Newco)} -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US5333874A} & IR light-curtain sports simulator (Kiraly/ - Wintriss prehistory) & 1992 & expired \\ -\patent{US7292711B2} & Mono-camera photometric monitor; markerless - dimple-feature spin & 2002 & \textbf{expired Apr.\ 2025} \\ -\patent{US7324663B2} & Smart-camera sibling & 2002 & - \textbf{expired Aug.\ 2025} \\ -\patent{US7497780B2} & Integrated monitor UX (GC2 architecture) & - 2006 & to 2027 \\ -\patent{US7540500B2} & Foldable monitor housing & 2006 & to - $\sim$2027 \\ -\patent{US7641565B2} & Ball-placement detection / auto-arm & 2006 & - to 2027 \\ -\patent{US8951138B2} & Club head measurement (camera + optional - inertial): face, path, loft/lie, impact & 2012 & the HMT/GCQuad - club-data patent \\ -\patent{US9737757B1} & Alignment-stick target alignment & 2016 & \\ -\patent{US10639537B2} & Range tracking fused with launch monitor - strike & 2018 & \\ -\bottomrule -\end{longtable} - -\subsection*{Creatz Inc.\ (Uneekor)} -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US9448067B2} & Multi-camera (unsynchronized) trajectory via - projection-plane intersection & 2011 & to 2033 \\ -\patent{US9605960B2} & Single-camera plane-intersection trajectory & - 2011 & to 2032 \\ -\patent{US9752875B2} & Exposure/gain control from ambient brightness & - 2011 & to 2032 \\ -\patent{US10247553B2} & Start sensor: ball state at first movement & - 2011 & to 2032 \\ -\patent{US10587797B2} & Ball-image brightness compensation for spin - marks & 2016 & to 2037 \\ -\patent{US10776929B2} & Dynamic ROI from predicted ball motion & 2016 - & to 2037 \\ -\patent{US11191998B2} & Mark-based spin with model fallback & 2018 & - to 2039 \\ -\patent{US12008770B2} & Dimple-constellation markless spin (Dimple - Optix) & 2020 & to 2042 \\ -\bottomrule -\end{longtable} -Uneekor's marking page also lists the four licensed Wintriss/Foresight -patents (US7497780, US7292711, US7641565, -US7324663)~\cite{uneekorpatents,businesswireforesight}. - -\subsection*{Golfzon Co., Ltd.\ (sensing core)} -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US9242158B2} & Two-stage sensing $\to$ simulation (latency - hiding) & 2011 & to $\sim$2032 \\ -\patent{US9333409B2} & Ball-candidate 2D-trajectory analysis, low-fps - cameras & 2011 & also \patent{US9333412B2}, - \patent{US9162132B2} \\ -\patent{US9514379B2} & Low-res launch + club trajectory $\to$ cheap - spin estimate & 2011 & \\ -\patent{US10045008B2} & Unsynchronized stereo cross-acquisition - (doubled frame rate) & 2011 & clever budget-hardware trick \\ -\patent{US11364428B2} & Spin fit by trajectory iteration vs.\ observed - positions & 2018 & \\ -\patent{US12002222B2} & Database spin lookup with correction & 2017 & - \\ -\patent{US12599828B2} & Marker-constellation spin between frames & - 2022 & \\ -\patent{US12605593B2} & Rolling predictive ROI & 2022 & \\ -\patent{US12478849B2} & Single-camera putting-mat sensing & 2021 & \\ -\patent{US20230347209A1} & Stereo impact position on club face & 2021 - & pending \\ -\bottomrule -\end{longtable} - -\section{Acushnet (Titleist) --- the full lineage} - -\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} -\toprule -\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ -\midrule -\endhead -\patent{US4136387A} & The ancestral optical impact/launch monitor & - 1977 & expired \\ -\patent{US5471383A} & Shutterable cameras + retroreflective markers & - 1992 & expired \\ -\patent{US5501463A} & Stereo + club/ball dots: face, path, contact - location & 1992 & expired \\ -\patent{US6241622B1} & Portable dual-camera + strobe; aerodynamic - trajectory & 1998 & expired; also \patent{US6533674B1} - (multishutter), \patent{US6616543B1}, \patent{US7086955B2} \\ -\patent{US6500073B1} & Stereo trajectory + flight integration & 1998 - & expired \\ -\patent{US6758759B2} & Dual stereo monitors; measured face angle & - 2001 & expired \\ -\patent{US7143639B2} & Portable four-camera monitor & 2004 & expired; - continuations \patent{US7395696B2} (optical fingerprinting, - expired), \patent{US8500568B2}, \patent{US8556267B2} \\ -\patent{US10668350B2} & Stereo / light-field ``true 3D'' capture & - 2017 & to $\sim$2038 \\ -\patent{US6186002B1} & $C_D$/$C_L$ from measured trajectories & 1998 - & calibration template \\ -\bottomrule -\end{longtable} - -\section{Others and foundational radar art} - -\textbf{SkyTrak / SkyHawke:} \patent{US12515116B2} (2023, swing-tag + -launch-monitor fusion display) is the only relevant grant; the SkyTrak -photometric unit itself is unmarked. \textbf{AccuSport, Zelocity, -GolfTek, Ernest Sports, ProTee United:} no attributable US patents -found --- their methods rest on the expired Wintriss/Acushnet art. -\textbf{Voice Caddie (Ucomm):} \patent{US10338212B2} (2014, portable -Doppler swing/ball analyzer). \textbf{Sports Sensors (Dilz):} -\patent{US6079269A} (1997 Swing Speed Radar), -\patent{US6898971B2}, \patent{US8007367B2} (club speed + tempo) --- -all expired, free art. \textbf{Weibel Scientific} (TrackMan's -engineering origin): \patent{EP1735637B1} (2004 multi-antenna CW -Doppler tracking), MFCW ranging family (2014). \textbf{Applied -Concepts (Stalker):} \patent{US10935657B2} (2019, baseball spin via -Doppler micro-modulation) and the autocorrelation continuation --- -directly relevant prior art for radar spin outside golf. - -\begin{implication} -The compendium sharpens the FTO picture of \cref{sec:fto}: the -\emph{entire pre-2006 optical stack} (Acushnet 1977--2004, Wintriss -2002) and the \emph{entire foundational radar-speed stack} (Sports -Sensors, EDH 2001, Weibel 2004) are expired. What remains encumbered -clusters in exactly three areas OpenFlight should treat carefully: -radar spin extraction (TrackMan 2005 family to $\sim$2029; FlightScope -2013 families to $\sim$2034--35; Applied Concepts 2019), markerless -camera club/impact measurement (TrackMan 2017 family; Foresight 2012 -US8951138), and radar+camera fusion (TrackMan 2016/2020 families, -FlightScope 2015, Rapsodo 2018--24, Topgolf Sweden 2017--23). -\end{implication} +\chapter{Patent Portfolio Compendium} +\label{app:patents} + +This appendix enumerates, company by company, every US patent identified +in the portfolio sweep (July 2026), with each number hyperlinked to its +Google Patents page. Coverage notes: all 45 numbers on TrackMan's +official legal page~\cite{trackmanpatents} are included plus seven +granted TrackMan patents absent from that page; Uneekor's marking +page~\cite{uneekorpatents} and Justia/FreePatentsOnline assignee sweeps +were used as completeness cross-checks. Priority years are US/PCT +filing-based (Korean assignees typically claim a KR priority +$\sim$12 months earlier). Status is as reported by Google Patents; +\emph{verify claim-by-claim with counsel before relying on any entry}. + +Two attribution corrections surfaced by this sweep are worth flagging +prominently: (i) the widely cited ``radar + image data 3D tracking'' +family US10596416 / US11697046 / US12128275 belongs to +\textbf{Topgolf Sweden AB (Toptracer)}, not TrackMan; and (ii) Full +Swing's launch-monitor application US2020/0147470 granted as +\patent{US11311789B2} (expiry $\sim$2039). + +\section{TrackMan A/S (incl.\ Interactive Sports Games A/S)} + +\subsection*{Radar fundamentals and target-line deviation (2004--2011)} +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US8085188B2} & Deviation of launched projectile vs.\ + image-designated target direction & 2004 & family expires + 2026--27 \\ +\patent{US8912945B2} & Continuation: camera+radar launch/target/ + trajectory correlation & 2004 & not on legal page \\ +\patent{US9857459B2} & Continuation: camera on radar identifies target + feature & 2004 & lapsed 2022 \\ +\patent{US10473778B2} & Continuation & 2004 & \\ +\patent{US10690764B2} & Continuation & 2004 & \\ +\patent{US9958527B2} & Direction-of-arrival sensor: extra RX antenna + resolves monopulse phase ambiguity & 2011 & the sparse-array + geometry of \cref{sec:interferometry} \\ +\bottomrule +\end{longtable} + +\subsection*{Spin rate and spin axis} +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US8845442B2} & Spin rate via harmonic sidebands; spin axis via + trajectory/Magnus inversion & 2005 & to $\sim$2029 (PTA); + EP\,1\,698\,380 litigated \\ +\patent{US9645235B2} & Continuation & 2005 & \\ +\patent{US10393870B2} & Continuation & 2005 & to Dec.\ 2026 \\ +\patent{US10962635B2} & Continuation & 2005 & not on legal page \\ +\patent{US11143754B2} & Continuation & 2005 & not on legal page \\ +\patent{US10850179B2} & Spin axis from multi-receiver Doppler + decomposition & 2018 & \\ +\patent{US11446546B2} & Continuation: phase differences $\to$ axis & + 2018 & \\ +\patent{US11938375B2} & Continuation: $\ge$3 non-colinear receivers & + 2018 & \\ +\patent{US11673029B2} & Marked-ball radar spin (great-circle marker + layout) & 2019 & the RCT-ball patent \\ +\patent{US12179068B2} & Continuation & 2019 & \\ +\patent{US12042698B2} & Toppling frequency of non-spherical rotating + objects & 2018 & \\ +\bottomrule +\end{longtable} + +\subsection*{Club impact (markerless, single camera)} +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US10953303B2} & Impact when/where via fixed club points across + frames & 2017 & the OERT impact-location family \\ +\patent{US11439886B2} & Single camera, no markers or stereo & 2017 & \\ +\patent{US11612801B2} & Continuation & 2017 & \\ +\patent{US12263393B2} & Fix points + fix lines $\to$ 3D orientation & + 2017 & \\ +\bottomrule +\end{longtable} + +\subsection*{Radar+camera fusion, calibration, tracer, range, short game} +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US10052542B2} & Coordinating radar + image data; overlay & + 2004 & \\ +\patent{US10471328B2} & Continuation & 2004 & \\ +\patent{US10989791B2} & Fused radar range/rate + imager angles track & + 2016 & core fusion patent \\ +\patent{US11828867B2} & Continuation & 2016 & \\ +\patent{US11619708B2} & Inter-sensor calibration by track comparison & + 2020 & \\ +\patent{US12517218B2} & Continuation: automatic calibration & 2020 & \\ +\patent{US11748985B2} & Master clock; composite multi-moment images & + 2019 & \\ +\patent{US12067775B2} & Continuation & 2019 & \\ +\patent{US12586211B2} & Imager event detection; camera power-mode + switch & 2023 & not on legal page \\ +\patent{US9855481B2} & Broadcast tracer overlay & 2009 & 5-patent + family: also \patent{US10315093B2}, \patent{US10441863B2}, + \patent{US11135495B2}, \patent{US11291902B2} \\ +\patent{US10379214B2} & Multi-bay range tracking (one radar, many + bays) & 2016 & also \patent{US11086005B2}, + \patent{US11921190B2}, \patent{US12618962B2} \\ +\patent{US11452911B2} & Bay imager + range radar arbitration & 2019 & + also \patent{US11986698B2} \\ +\patent{US12036465B2} & Player ID via wearable + trajectory + correlation & 2021 & \\ +\patent{US12186643B2} & Camera line-of-sight $\cap$ terrain model + $\to$ ball rest position & 2021 & \\ +\patent{US10444339B2} & Bounce/slide/roll classification from velocity + profile & 2016 & also \patent{US11079483B2}, + \patent{US11619731B2}, \patent{US11946997B2} (green speed) \\ +\patent{US11285367B2} & Strategy simulation from player capability & + 2018 & also \patent{US12109473B2} \\ +\patent{US11951372B2} & Mishit filtering, optimal-shot analytics & + 2020 & also \patent{US12539454B2} \\ +\patent{US12616891B2} & Automated ball/strike, biometric strike zone & + 2021 & baseball; not on legal page \\ +\bottomrule +\end{longtable} + +\section{Topgolf Sweden AB (Toptracer / Protracer)} + +A separate company from TrackMan; camera-first range tracking. +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US8077917B2} & Enhancing images in sports video (the founding + Protracer tracer, Forsgren) & 2006 & \\ +\patent{US10596416B2} & 3D tracking: radar + image data & 2017 & + also \patent{US11697046B2}, \patent{US12128275B2} \\ +\patent{US10898757B2} & 3D tracking: radar speed + 2D image & 2020 & + also \patent{US11504582B2}, \patent{US11883716B2}, + \patent{US12330020B2} \\ +\patent{US11335013B2} & Motion-based pre-processing, virtual time + sync & 2020 & also \patent{US11557044B2}, \patent{US12322122B2} \\ +\patent{US11644562B2} & Trajectory extrapolation, origin + determination & 2020 & also \patent{US11771957B2}, + \patent{US12121771B2}, \patent{US11964188B2} \\ +\patent{US11513208B2} & Camera-based projectile spin & 2021 & also + \patent{US12105184B2}; club-parameter spin + \patent{US12544624B2} \\ +\patent{US11995846B2} & Tracking with unverified detections & 2021 & + also \patent{US12361570B2} \\ +\patent{US11815618B2} & Doppler radar coexistence & 2021 & also + \patent{US12253622B2} \\ +\patent{US12206977B2} & Predictive camera control & 2022 & \\ +\patent{US12298326B2} & Wind velocity estimation & 2022 & \\ +\patent{US12594460B2} & Blob management for projectile tracking & + 2023 & \\ +\bottomrule +\end{longtable} + +\section{FlightScope / EDH (Henri Johnson)} + +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{WO2003032006A1} & Foundational golf-ball tracking: Doppler + + antenna array phase monopulse & 2001 & GB/WO only; expired art \\ +\patent{US8189857B2} & Bounce-mark detection + tracking (cricket) & + 2007 & \\ +\patent{US9036864B2} & Trajectory and bounce position & 2011 & + reinstated \\ +\patent{US9868044B2} & Spin rate from phase modulation + (dielectric-lens) & 2013 & to $\sim$2034; reinstated \\ +\patent{US10775492B2} & Spin axis from perpendicular receiver pairs & + 2013 & to $\sim$2035 \\ +\patent{US10338209B2} & Fusion Tracking (multi-receiver + camera) & + 2015 & also \patent{US11016188B2} \\ +\patent{US11573082B2} & Tracking in varied environmental conditions & + 2019 & \\ +\patent{US12528005B2} & Weather-based range prediction, club selector + & 2023 & \\ +\patent{US20160306036A1} & Putting-green tracking & 2013 & + abandoned; citable art \\ +\patent{US20180239012A1} & Antenna with boresight optical system & + 2013 & abandoned; Fusion hardware disclosure \\ +\bottomrule +\end{longtable} + +\section{Full Swing Golf} + +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US11311789B2} & CW + FMCW dual-mode radar, non-uniform array + (the KIT patent; grant of US2020/0147470) & 2018 & to + $\sim$2039; also \patent{US11844990B2} \\ +\patent{US11875517B2} & Frame-difference ball tracking, screen impact + point & 2020 & also \patent{US12354282B2} \\ +\patent{US8758103B2} & IR light-curtain translation + imaging + rotation (legacy simulators) & 2009 & also \patent{US9616346B2}, + \patent{US11033826B2} \\ +\patent{US8926416B2} & Simulator: spin via image analysis & 2007 & + also \patent{US10058733B2} \\ +\patent{US8414408B2} & Ball-permeable screen, ball return & 2009 & + also \patent{US8834284B2} \\ +\bottomrule +\end{longtable} + +Caution: \patent{US10605910B2}/\patent{US11086008B2} (Alphawave Golf) +and \patent{US11565166B2} (individual) surface in ``Full Swing'' text +searches but are unrelated assignees. + +\section{Garmin} + +\patent{US11351436B2} --- ``Hybrid golf launch monitor'' (2019 +priority): the Approach R10 patent, Doppler radar with camera +supplement/correction. Garmin's golf-radar estate is essentially this +single family; supporting art: \patent{US8647214B2} (2008, +motion-sensor swing analysis), \patent{US7467060B2} family (2006, +wearable motion-parameter estimation). + +\section{Rapsodo Pte.\ Ltd.} + +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US9955126B2} & Core camera+radar moving-object analysis & + 2015 & \\ +\patent{US11170513B2} & Marked-ball spin via surface-template matching + & 2016 & the RPT-ball patent \\ +\patent{US11747461B2} & Radar+camera data fusion & 2018 & \\ +\patent{US20210299540A1} & 3D reconstruction of the launch scene & + 2018 & application \\ +\patent{US20230065614A1} & Spin detection/estimation pipeline & 2021 & + application \\ +\patent{US20230364468A1} & Deep-learning ball/swing parameters from + radar+image & 2021 & also club-side + \patent{US20230070986A1} \\ +\patent{US12169941B1} & Target-plane crossing localization & 2024 & \\ +\patent{US12586248B2} & Newest camera+radar fusion grants & 2024 & + also \patent{US12548194B2} \\ +\patent{US12158517B1} & Range-gated imager & 2024 & \\ +\bottomrule +\end{longtable} + +\section{Camera vendors: Foresight/Wintriss, Creatz/Uneekor, Golfzon} + +\subsection*{Foresight Sports (Wintriss $\to$ WAWGD $\to$ Wawgd Newco)} +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US5333874A} & IR light-curtain sports simulator (Kiraly/ + Wintriss prehistory) & 1992 & expired \\ +\patent{US7292711B2} & Mono-camera photometric monitor; markerless + dimple-feature spin & 2002 & \textbf{expired Apr.\ 2025} \\ +\patent{US7324663B2} & Smart-camera sibling & 2002 & + \textbf{expired Aug.\ 2025} \\ +\patent{US7497780B2} & Integrated monitor UX (GC2 architecture) & + 2006 & to 2027 \\ +\patent{US7540500B2} & Foldable monitor housing & 2006 & to + $\sim$2027 \\ +\patent{US7641565B2} & Ball-placement detection / auto-arm & 2006 & + to 2027 \\ +\patent{US8951138B2} & Club head measurement (camera + optional + inertial): face, path, loft/lie, impact & 2012 & the HMT/GCQuad + club-data patent \\ +\patent{US9737757B1} & Alignment-stick target alignment & 2016 & \\ +\patent{US10639537B2} & Range tracking fused with launch monitor + strike & 2018 & \\ +\bottomrule +\end{longtable} + +\subsection*{Creatz Inc.\ (Uneekor)} +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US9448067B2} & Multi-camera (unsynchronized) trajectory via + projection-plane intersection & 2011 & to 2033 \\ +\patent{US9605960B2} & Single-camera plane-intersection trajectory & + 2011 & to 2032 \\ +\patent{US9752875B2} & Exposure/gain control from ambient brightness & + 2011 & to 2032 \\ +\patent{US10247553B2} & Start sensor: ball state at first movement & + 2011 & to 2032 \\ +\patent{US10587797B2} & Ball-image brightness compensation for spin + marks & 2016 & to 2037 \\ +\patent{US10776929B2} & Dynamic ROI from predicted ball motion & 2016 + & to 2037 \\ +\patent{US11191998B2} & Mark-based spin with model fallback & 2018 & + to 2039 \\ +\patent{US12008770B2} & Dimple-constellation markless spin (Dimple + Optix) & 2020 & to 2042 \\ +\bottomrule +\end{longtable} +Uneekor's marking page also lists the four licensed Wintriss/Foresight +patents (US7497780, US7292711, US7641565, +US7324663)~\cite{uneekorpatents,businesswireforesight}. + +\subsection*{Golfzon Co., Ltd.\ (sensing core)} +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US9242158B2} & Two-stage sensing $\to$ simulation (latency + hiding) & 2011 & to $\sim$2032 \\ +\patent{US9333409B2} & Ball-candidate 2D-trajectory analysis, low-fps + cameras & 2011 & also \patent{US9333412B2}, + \patent{US9162132B2} \\ +\patent{US9514379B2} & Low-res launch + club trajectory $\to$ cheap + spin estimate & 2011 & \\ +\patent{US10045008B2} & Unsynchronized stereo cross-acquisition + (doubled frame rate) & 2011 & clever budget-hardware trick \\ +\patent{US11364428B2} & Spin fit by trajectory iteration vs.\ observed + positions & 2018 & \\ +\patent{US12002222B2} & Database spin lookup with correction & 2017 & + \\ +\patent{US12599828B2} & Marker-constellation spin between frames & + 2022 & \\ +\patent{US12605593B2} & Rolling predictive ROI & 2022 & \\ +\patent{US12478849B2} & Single-camera putting-mat sensing & 2021 & \\ +\patent{US20230347209A1} & Stereo impact position on club face & 2021 + & pending \\ +\bottomrule +\end{longtable} + +\section{Acushnet (Titleist) --- the full lineage} + +\begin{longtable}{@{}p{2.5cm}p{8.2cm}p{1.2cm}p{2.2cm}@{}} +\toprule +\textbf{Patent} & \textbf{Subject} & \textbf{Prio.} & \textbf{Notes}\\ +\midrule +\endhead +\patent{US4136387A} & The ancestral optical impact/launch monitor & + 1977 & expired \\ +\patent{US5471383A} & Shutterable cameras + retroreflective markers & + 1992 & expired \\ +\patent{US5501463A} & Stereo + club/ball dots: face, path, contact + location & 1992 & expired \\ +\patent{US6241622B1} & Portable dual-camera + strobe; aerodynamic + trajectory & 1998 & expired; also \patent{US6533674B1} + (multishutter), \patent{US6616543B1}, \patent{US7086955B2} \\ +\patent{US6500073B1} & Stereo trajectory + flight integration & 1998 + & expired \\ +\patent{US6758759B2} & Dual stereo monitors; measured face angle & + 2001 & expired \\ +\patent{US7143639B2} & Portable four-camera monitor & 2004 & expired; + continuations \patent{US7395696B2} (optical fingerprinting, + expired), \patent{US8500568B2}, \patent{US8556267B2} \\ +\patent{US10668350B2} & Stereo / light-field ``true 3D'' capture & + 2017 & to $\sim$2038 \\ +\patent{US6186002B1} & $C_D$/$C_L$ from measured trajectories & 1998 + & calibration template \\ +\bottomrule +\end{longtable} + +\section{Others and foundational radar art} + +\textbf{SkyTrak / SkyHawke:} \patent{US12515116B2} (2023, swing-tag + +launch-monitor fusion display) is the only relevant grant; the SkyTrak +photometric unit itself is unmarked. \textbf{AccuSport, Zelocity, +GolfTek, Ernest Sports, ProTee United:} no attributable US patents +found --- their methods rest on the expired Wintriss/Acushnet art. +\textbf{Voice Caddie (Ucomm):} \patent{US10338212B2} (2014, portable +Doppler swing/ball analyzer). \textbf{Sports Sensors (Dilz):} +\patent{US6079269A} (1997 Swing Speed Radar), +\patent{US6898971B2}, \patent{US8007367B2} (club speed + tempo) --- +all expired, free art. \textbf{Weibel Scientific} (TrackMan's +engineering origin): \patent{EP1735637B1} (2004 multi-antenna CW +Doppler tracking), MFCW ranging family (2014). \textbf{Applied +Concepts (Stalker):} \patent{US10935657B2} (2019, baseball spin via +Doppler micro-modulation) and the autocorrelation continuation --- +directly relevant prior art for radar spin outside golf. + +\begin{implication} +The compendium sharpens the FTO picture of \cref{sec:fto}: the +\emph{entire pre-2006 optical stack} (Acushnet 1977--2004, Wintriss +2002) and the \emph{entire foundational radar-speed stack} (Sports +Sensors, EDH 2001, Weibel 2004) are expired. What remains encumbered +clusters in exactly three areas a new entrant should treat carefully: +radar spin extraction (TrackMan 2005 family to $\sim$2029; FlightScope +2013 families to $\sim$2034--35; Applied Concepts 2019), markerless +camera club/impact measurement (TrackMan 2017 family; Foresight 2012 +US8951138), and radar+camera fusion (TrackMan 2016/2020 families, +FlightScope 2015, Rapsodo 2018--24, Topgolf Sweden 2017--23). +\end{implication} diff --git a/tech-review/sections/appendix-e-screw-kinematics.tex b/tech-review/sections/appendix-e-screw-kinematics.tex index eae4fa7..2e37f1e 100644 --- a/tech-review/sections/appendix-e-screw-kinematics.tex +++ b/tech-review/sections/appendix-e-screw-kinematics.tex @@ -1,181 +1,181 @@ -\chapter{Clubhead Kinematics from Radar Velocities: A Screw-Theoretic How-To} -\label{app:screw} - -This appendix develops, at implementation depth, the estimation layer that turns per-detection radar velocities into clubhead motion: what the current OpenFlight hardware can and cannot recover, why the twist (screw) representation of rigid-body motion is the natural formalism for the problem, and a step-by-step recipe for building the estimator on the IWR6843-class sensor described in \cref{app:hardware}. -It extends the EKF architecture of \cref{app:ekf} from point tracking (the ball) to rigid-body tracking (the club). - -\section{Context: what the commercial systems actually recover} -\label{sec:screw-context} - -TrackMan's club-data pipeline, as described in its documentation and patent family, tracks the clubhead ``from about knee height to impact,'' resolves the head's radar return into velocity components across multiple receivers, and reports the trajectory of the head's \emph{geometric center}~\cite{trackmanclubspeed,us10850179,trackmanoert}. -The physical basis is that a rotating, translating clubhead is not a point target: the toe moves up to $\sim$7\mph{} faster than the heel, so the club's return occupies a spread of Doppler bins, and multi-receiver phase interferometry (\cref{sec:interferometry}) locates each velocity component in angle. -What is fitted to those observations is a \emph{rigid-body motion model}, not an image; ``3D silhouette'' is marketing shorthand for that model fit. - -\paragraph{Is screw theory used by the industry?} -There is no public evidence that TrackMan (or any launch-monitor vendor) formulates this fit in screw/twist coordinates: the patents describe point-trajectory tracking, Doppler-component decomposition, and silhouette correlation, without reference to the screw formalism~\cite{us8845442,us10850179}. -The instantaneous screw axis (ISA) \emph{is}, however, an established tool in golf biomechanics: Vena et al.\ applied ISA theory to optical motion capture of the swing in a two-part \emph{Sports Engineering} study, verifying that segment motion during the downswing is dominantly rotational about a well-defined moving axis (at least 71\% of marker velocity attributable to ISA rotation) and using ISA smoothness to characterize the kinematic sequence~\cite{vena2010a,vena2010b}. -The contribution proposed here --- estimating the club's twist \emph{directly from Doppler detections} rather than from marker positions --- is, to our knowledge, not published in the golf literature, although the underlying mathematics is standard in robotics~\cite{murrayliss} and radar micro-Doppler analysis~\cite{chenmicrodoppler}. -For OpenFlight this is an opportunity: the formalism is public-domain mathematics, distinct from the specific claimed pipelines in \cref{app:patents}. - -\section{Screw theory in the minimum required dose} -\label{sec:screw-primer} - -A rigid body's instantaneous motion is fully described by a \textbf{twist} -\begin{equation} -\label{eq:screw-twist} -\xi = (\vect{\omega},\, \vect{v}_O) \in \mathfrak{se}(3), -\end{equation} -where $\vect{\omega}$ is the angular velocity and $\vect{v}_O$ is the linear velocity of a chosen body reference point $O$. -The velocity of any body-fixed point at position $\vect{r}$ relative to $O$ is then -\begin{equation} -\label{eq:screw-pointvel} -\vect{v}(\vect{r}) = \vect{v}_O + \vect{\omega} \times \vect{r}. -\end{equation} -Chasles' theorem states that every such motion is instantaneously a rotation about, plus a translation along, a unique line in space: the \textbf{instantaneous screw axis} (ISA). -Its direction is $\hat{\vect{\omega}}$; a point on it is -\begin{equation} -\label{eq:screw-isa} -\vect{r}_{\mathrm{ISA}} = \frac{\vect{\omega} \times \vect{v}_O}{\lVert\vect{\omega}\rVert^{2}}, -\qquad -h = \frac{\vect{\omega} \cdot \vect{v}_O}{\lVert\vect{\omega}\rVert^{2}}, -\end{equation} -where the \textbf{pitch} $h$ is the translation per radian along the axis. -For a downswing near impact the club's motion is close to a pure rotation about a hub near the hands: the ISA passes near the grip and the pitch is small. -That geometric fact is both a physical insight (the ISA trajectory \emph{is} a rigorous definition of swing plane) and, later, a regularization prior. -Standard references: Murray, Li \& Sastry for the mathematics~\cite{murrayliss}; Vena et al.\ for golf-specific ISA practice and its error behavior~\cite{vena2010a}. - -\section{The measurement model: Doppler is linear in the twist} -\label{sec:screw-measurement} - -A radar detection assigns to some scattering center at known position $\vect{p}_i$ (from range and monopulse angle) a radial velocity $\dot d_i$ along the unit line of sight $\uvec{u}_i = \vect{p}_i / \lVert\vect{p}_i\rVert$. -Substituting \cref{eq:screw-pointvel} with $\vect{r}_i = \vect{p}_i - \vect{p}_O$: -\begin{equation} -\label{eq:screw-doppler} -\dot d_i -= \uvec{u}_i \cdot \vect{v}(\vect{r}_i) -= \underbrace{\uvec{u}_i}_{1\times3} \cdot\, \vect{v}_O -\;+\; \underbrace{(\vect{r}_i \times \uvec{u}_i)}_{1\times3} \cdot\, \vect{\omega}. -\end{equation} -This is the reciprocal product of the sight line (as a Pl\"ucker line) with the twist, and it is \textbf{exactly linear} in the six unknowns $(\vect{v}_O, \vect{\omega})$. -Each detection contributes one row of a linear system -\begin{equation} -\label{eq:screw-ls} -\vect{z} = A\,\xi + \vect{\epsilon}, -\qquad -A_i = \bigl[\; \uvec{u}_i^{\mathsf T} \;\big|\; (\vect{r}_i \times \uvec{u}_i)^{\mathsf T} \;\bigr], -\end{equation} -so the per-frame twist estimate is weighted least squares --- no iteration, no linearization error, and a covariance $(A^{\mathsf T} W A)^{-1}\sigma^2$ for free. -This is the property that makes the screw formulation not merely elegant but \emph{operationally} correct for radar: the sensor's native observable is already a linear functional of the twist. -(Camera systems enter the same framework from the other side: a fiducial-tracked face gives an $SE(3)$ pose per frame, and the matrix logarithm of the frame-to-frame relative pose is a finite twist~\cite{murrayliss}; one downstream representation serves both modalities.) - -\section{What the current hardware can observe} -\label{sec:screw-ceiling} - -Apply \cref{eq:screw-ls} to each OpenFlight sensor to see the ceiling precisely. - -\subsection{OPS243-A: one row, no position} -The OPS243-A has a single receive channel: it measures $\dot d_i$ but neither range nor angle, so $\vect{p}_i$ is unknown and \cref{eq:screw-ls} cannot be assembled. -What survives is the \emph{marginal distribution} of $\dot d$ over the head: at 30\,ksps with 128-sample segments the raw Doppler bin is $\approx$3.3\mph{} (\cref{app:hardware}), so the full toe--heel spread of a driver spans only $\sim$2 raw bins. -Software can and should still extract (\cref{app:radardsp}): the spread's midpoint or a fixed percentile as a stable club-speed reference (the peak is toe glint); the spread \emph{width} as a crude proxy for $\lVert\vect{\omega}\rVert$ projected on the line of sight; and head/shaft separation by gating the slow tail. -That is the honest ceiling of the current stack: a one-dimensional shadow of the twist, useful for de-biasing club speed, incapable of yielding path or attack angle. - -\subsection{K-LD7: the right equation, the wrong operating envelope} -The K-LD7's dual receive patches provide per-bin monopulse angle --- rows of \cref{eq:screw-ls} in principle --- but its fastest setting has a 100\,km/h ($\approx$62\mph) unambiguous-velocity ceiling and $\sim$29\,ms frames (\cref{app:hardware}), so a driver head aliases and traverses more than a meter between frames. -It remains a ball-burst angle sensor, not a club tracker. - -\subsection{IWR6843: all three ingredients in one package} -The IWR6843 supplies everything \cref{eq:screw-ls} needs, given custom chirp firmware (\cref{app:hardware}): range at 3.75\,cm resolution (separates head from shaft and arms), per-chirp Doppler with both span and resolution set by the chirp plan, and per-detection monopulse angle from 12 virtual antennas. -Representative chirp budget for the club problem: -\begin{center}\small -\begin{tabular}{@{}llll@{}} -\toprule -\textbf{Choice} & \textbf{Value} & \textbf{Consequence} & \textbf{Governing relation} \\ -\midrule -Chirp repetition $T_c$ & 25\,\si{\micro\second} & $v_{\max} = \lambda/4T_c \approx 50$\,m/s (112\mph) & unambiguous velocity \\ -Chirps per frame $N$ & 128 & $\Delta v = \lambda/2NT_c \approx 0.8$\,m/s & velocity resolution \\ -Frame time & 3.2\,ms & $\sim$300\,Hz frame rate & swing-resolved motion \\ -Bandwidth $B$ & 4\,GHz & $\Delta R = c/2B = 3.75$\,cm & 3--4 cells across the head \\ -\bottomrule -\end{tabular} -\end{center} -At $\lambda = 5$\,mm the toe--heel spread ($\sim$3\,m/s) covers $\sim$4 velocity cells --- twice the OPS243-A's resolving power, with each cell additionally localized in range and angle. -The out-of-box SDK point cloud at 10--20\,Hz is useless here; the custom chirp configuration plus on-chip range-Doppler processing is the enabling (and largest) engineering task, as flagged in \cref{app:hardware}. - -\section{Estimation recipe, step by step} -\label{sec:screw-recipe} - -The following is the full pipeline, in execution order, for one swing. -Notation: frames indexed $k$, detections within a frame indexed $i$. - -\subsection*{Step 1 --- Detect and localize} -Run 2D CFAR on each frame's range-Doppler map (OS-CFAR preferred over cell-averaging: club and ball are exactly the closely-spaced-targets case it is designed for, \cref{app:hardware}). -For each detection, compute monopulse azimuth/elevation from the virtual-array phase and form $\vect{p}_i = (R_i, \theta_i, \phi_i)$ in Cartesian sensor coordinates, with a per-detection covariance driven by SNR (angle variance $\propto 1/\mathrm{SNR}$; range variance from the window function). - -\subsection*{Step 2 --- Segment the club} -Gate detections to the club by a joint predicate: range inside the swing corridor, radial speed in the club band (above waggle, below ball speeds), and --- once tracking has started --- Mahalanobis distance to the propagated track. -Reject the shaft by its distinct signature: shaft returns sit at lower speed and nearer range, forming an elongated cluster whose major axis points at the head cluster. -Body and arm clutter falls out on speed alone. - -\subsection*{Step 3 --- Per-frame twist solve} -Choose the body reference point $O_k$ as the SNR-weighted centroid of the head cluster (this choice only re-parameterizes $\vect{v}_O$; the twist itself is frame-invariant). -Assemble \cref{eq:screw-ls} over the frame's $m_k$ detections and solve weighted least squares with a robust loss (Huber or Cauchy) on the residuals --- robustness is not optional, because \emph{glint migration} (specular points wandering across the curved metal head as aspect changes) violates the fixed-scatterer assumption at the few-centimeter level and manifests as heavy-tailed residuals. -Record $\hat\xi_k$ and its covariance $\Sigma_k = (A^{\mathsf T} W A)^{-1}$. - -\subsection*{Step 4 --- Read the conditioning honestly} -Compute the SVD of the weighted $A$. -Expect, from a single vantage $\sim$2\,m away with detections spanning $\sim$10\,cm: one strong singular value (bulk radial velocity --- essentially club speed), one or two moderate ones (the transverse velocity component resolved by angle diversity, and the $\vect{\omega}$ combination that generates the Doppler spread), and the rest weak. -\textbf{Do not invert the weak directions per frame.} -Either truncate the SVD (solve only the well-conditioned subspace and carry the null-space explicitly) or defer those components entirely to the smoother of Step 5. -A per-frame 6-DOF solve that ``works'' numerically will hallucinate the unobservable components from noise; this is the single most likely implementation failure mode. - -\subsection*{Step 5 --- Smooth the twist trajectory on $SE(3)$} -The rank deficiency resolves \emph{across} frames: as the head sweeps through the beam over $\sim$30\,ms ($\sim$10 frames at 300\,Hz), the sight-line geometry rotates and different frames constrain different twist combinations. -Estimate a smooth trajectory rather than independent snapshots: -state $x_k = (T_k \in SE(3),\, \xi_k)$, i.e., pose and twist; -process model $T_{k+1} = T_k \exp\!\bigl((\xi_k \Delta t)^{\wedge}\bigr)$ with a slowly varying twist (white-noise angular/linear acceleration, tuned to swing dynamics --- the head gains roughly 1\mph{} per millisecond late in the downswing); -measurements = the raw rows of \cref{eq:screw-doppler} (preferable to feeding the Step-3 point estimates, since rows carry their true information content); -run an extended/unscented filter with the standard Lie-group state handling~\cite{murrayliss}, then an RTS backward smoother, exactly as in \cref{app:ekf}. -Add two physically motivated priors, weighted weakly enough to be overruled by data: -\begin{enumerate} -\item \textbf{Low pitch}: penalize $h^2 = (\vect{\omega}\cdot\vect{v}_O)^2/\lVert\vect{\omega}\rVert^4$ --- the downswing is close to a pure rotation~\cite{vena2010a}. -\item \textbf{Hub proximity}: penalize distance of the ISA (\cref{eq:screw-isa}) from a broad prior region around the golfer's hands. -\end{enumerate} - -\subsection*{Step 6 --- Evaluate at impact, then stop} -Rigidity holds before impact and fails during it ($\sim$500\,\si{\micro\second} of gross deformation), so fit only up to the last pre-impact frame and evaluate the smoothed twist at the impact timestamp (from the sound trigger, minus the acoustic delay budget of \cref{app:hardware}). -This mirrors the commercial convention: TrackMan defines club speed ``just prior to first contact''~\cite{trackmanclubspeed}. - -\subsection*{Step 7 --- Project out the parameters} -All club-delivery parameters are now projections of one estimated object: -\begin{center}\small -\begin{tabular}{@{}p{3.6cm}p{9.6cm}@{}} -\toprule -\textbf{Parameter} & \textbf{Projection of the impact-time twist} \\ -\midrule -Club speed & $\lVert \vect{v}_O + \vect{\omega}\times\vect{r}_{gc} \rVert$ at a \emph{declared} reference point $\vect{r}_{gc}$ (cluster centroid, or a per-club calibrated offset) \\ -Club path & horizontal direction angle of that velocity vector vs.\ the target line \\ -Attack angle & vertical direction angle of the same vector \\ -Closure rate & component of $\vect{\omega}$ about the estimated shaft axis, in \si{\degree\per\second} --- the GCQuad-exclusive parameter (\cref{sec:camclub}), free here \\ -Swing plane / direction & orientation of the ISA (\cref{eq:screw-isa}) and of the plane its trajectory sweeps \\ -Low point & extrapolate the reference-point arc to its velocity-vertical zero \\ -Gear-effect recoil & (post-impact, optional) the discontinuity in $\vect{\omega}$ across impact estimates the head's angular recoil, cross-checkable against \cref{eq:gear} \\ -\bottomrule -\end{tabular} -\end{center} -Report each with the covariance propagated from the smoother, and tag provenance per \cref{tab:hierarchy}: with this pipeline, path and attack angle move from \emph{derived} to \emph{measured}, while face angle and impact location remain optics problems (\cref{sec:faceangle}). - -\section{Validation plan} -\label{sec:screw-validation} - -Validate in order of increasing realism, reusing the standards of \cref{ch:accuracy}: -\begin{enumerate} -\item \textbf{Synthetic}: simulate scatterers on a CAD clubhead following a recorded swing trajectory, generate detections with realistic SNR and glint migration, and verify the recovered twist against truth --- this exercises Steps 3--5 without hardware and quantifies the observability claims of Step 4. -\item \textbf{Pendulum rig}: a club swung as a physical pendulum has an analytically known, planar, fixed-axis twist (pitch exactly zero, ISA fixed); any bias in the pipeline shows up immediately. -\item \textbf{Cross-device}: compare club speed, path, and attack angle against the MLM2PRO per the protocol of \cref{ch:accuracy}, with the reference-point caveat of \cref{sec:radarclub} stated up front; sanity-gate every shot against the loft-dependent smash ceiling (\cref{sec:smash}). -\item \textbf{Internal consistency}: the measured path must satisfy the swing-geometry identity (path as a function of swing direction, swing plane, attack angle --- \cref{ch:impact}) within uncertainty; violations indicate reference-point drift or alignment error. -\end{enumerate} - -\begin{implication} -The twist formulation costs nothing extra to adopt --- the per-frame solve is a small weighted least squares --- and buys three things the point-tracking alternative cannot: a principled, declared club-speed reference point (ending the largest inter-device disagreement), closure rate and a rigorous swing plane as free by-products, and honest covariances on every club parameter. -It should be specified as the estimation layer for the IWR6843 integration from day one, with the OPS243-A velocity-distribution analytics (\cref{app:radardsp}) as the degenerate 1D special case of the same model. -\end{implication} +\chapter{Clubhead Kinematics from Radar Velocities: A Screw-Theoretic How-To} +\label{app:screw} + +This appendix develops, at implementation depth, the estimation layer that turns per-detection radar velocities into clubhead motion: what commodity radar hardware can and cannot recover, why the twist (screw) representation of rigid-body motion is the natural formalism for the problem, and a step-by-step recipe for building the estimator on the IWR6843-class sensor described in \cref{app:hardware}. +It extends the EKF architecture of \cref{app:ekf} from point tracking (the ball) to rigid-body tracking (the club). + +\section{Context: what the commercial systems actually recover} +\label{sec:screw-context} + +TrackMan's club-data pipeline, as described in its documentation and patent family, tracks the clubhead ``from about knee height to impact,'' resolves the head's radar return into velocity components across multiple receivers, and reports the trajectory of the head's \emph{geometric center}~\cite{trackmanclubspeed,us10850179,trackmanoert}. +The physical basis is that a rotating, translating clubhead is not a point target: the toe moves up to $\sim$7\mph{} faster than the heel, so the club's return occupies a spread of Doppler bins, and multi-receiver phase interferometry (\cref{sec:interferometry}) locates each velocity component in angle. +What is fitted to those observations is a \emph{rigid-body motion model}, not an image; ``3D silhouette'' is marketing shorthand for that model fit. + +\paragraph{Is screw theory used by the industry?} +There is no public evidence that TrackMan (or any launch-monitor vendor) formulates this fit in screw/twist coordinates: the patents describe point-trajectory tracking, Doppler-component decomposition, and silhouette correlation, without reference to the screw formalism~\cite{us8845442,us10850179}. +The instantaneous screw axis (ISA) \emph{is}, however, an established tool in golf biomechanics: Vena et al.\ applied ISA theory to optical motion capture of the swing in a two-part \emph{Sports Engineering} study, verifying that segment motion during the downswing is dominantly rotational about a well-defined moving axis (at least 71\% of marker velocity attributable to ISA rotation) and using ISA smoothness to characterize the kinematic sequence~\cite{vena2010a,vena2010b}. +The contribution proposed here --- estimating the club's twist \emph{directly from Doppler detections} rather than from marker positions --- is, to our knowledge, not published in the golf literature, although the underlying mathematics is standard in robotics~\cite{murrayliss} and radar micro-Doppler analysis~\cite{chenmicrodoppler}. +This is an opportunity for any implementer: the formalism is public-domain mathematics, distinct from the specific claimed pipelines in \cref{app:patents}. + +\section{Screw theory in the minimum required dose} +\label{sec:screw-primer} + +A rigid body's instantaneous motion is fully described by a \textbf{twist} +\begin{equation} +\label{eq:screw-twist} +\xi = (\vect{\omega},\, \vect{v}_O) \in \mathfrak{se}(3), +\end{equation} +where $\vect{\omega}$ is the angular velocity and $\vect{v}_O$ is the linear velocity of a chosen body reference point $O$. +The velocity of any body-fixed point at position $\vect{r}$ relative to $O$ is then +\begin{equation} +\label{eq:screw-pointvel} +\vect{v}(\vect{r}) = \vect{v}_O + \vect{\omega} \times \vect{r}. +\end{equation} +Chasles' theorem states that every such motion is instantaneously a rotation about, plus a translation along, a unique line in space: the \textbf{instantaneous screw axis} (ISA). +Its direction is $\hat{\vect{\omega}}$; a point on it is +\begin{equation} +\label{eq:screw-isa} +\vect{r}_{\mathrm{ISA}} = \frac{\vect{\omega} \times \vect{v}_O}{\lVert\vect{\omega}\rVert^{2}}, +\qquad +h = \frac{\vect{\omega} \cdot \vect{v}_O}{\lVert\vect{\omega}\rVert^{2}}, +\end{equation} +where the \textbf{pitch} $h$ is the translation per radian along the axis. +For a downswing near impact the club's motion is close to a pure rotation about a hub near the hands: the ISA passes near the grip and the pitch is small. +That geometric fact is both a physical insight (the ISA trajectory \emph{is} a rigorous definition of swing plane) and, later, a regularization prior. +Standard references: Murray, Li \& Sastry for the mathematics~\cite{murrayliss}; Vena et al.\ for golf-specific ISA practice and its error behavior~\cite{vena2010a}. + +\section{The measurement model: Doppler is linear in the twist} +\label{sec:screw-measurement} + +A radar detection assigns to some scattering center at known position $\vect{p}_i$ (from range and monopulse angle) a radial velocity $\dot d_i$ along the unit line of sight $\uvec{u}_i = \vect{p}_i / \lVert\vect{p}_i\rVert$. +Substituting \cref{eq:screw-pointvel} with $\vect{r}_i = \vect{p}_i - \vect{p}_O$: +\begin{equation} +\label{eq:screw-doppler} +\dot d_i += \uvec{u}_i \cdot \vect{v}(\vect{r}_i) += \underbrace{\uvec{u}_i}_{1\times3} \cdot\, \vect{v}_O +\;+\; \underbrace{(\vect{r}_i \times \uvec{u}_i)}_{1\times3} \cdot\, \vect{\omega}. +\end{equation} +This is the reciprocal product of the sight line (as a Pl\"ucker line) with the twist, and it is \textbf{exactly linear} in the six unknowns $(\vect{v}_O, \vect{\omega})$. +Each detection contributes one row of a linear system +\begin{equation} +\label{eq:screw-ls} +\vect{z} = A\,\xi + \vect{\epsilon}, +\qquad +A_i = \bigl[\; \uvec{u}_i^{\mathsf T} \;\big|\; (\vect{r}_i \times \uvec{u}_i)^{\mathsf T} \;\bigr], +\end{equation} +so the per-frame twist estimate is weighted least squares --- no iteration, no linearization error, and a covariance $(A^{\mathsf T} W A)^{-1}\sigma^2$ for free. +This is the property that makes the screw formulation not merely elegant but \emph{operationally} correct for radar: the sensor's native observable is already a linear functional of the twist. +(Camera systems enter the same framework from the other side: a fiducial-tracked face gives an $SE(3)$ pose per frame, and the matrix logarithm of the frame-to-frame relative pose is a finite twist~\cite{murrayliss}; one downstream representation serves both modalities.) + +\section{What the current hardware can observe} +\label{sec:screw-ceiling} + +Apply \cref{eq:screw-ls} to each sensor in a given architecture to see the ceiling precisely. + +\subsection{OPS243-A: one row, no position} +The OPS243-A has a single receive channel: it measures $\dot d_i$ but neither range nor angle, so $\vect{p}_i$ is unknown and \cref{eq:screw-ls} cannot be assembled. +What survives is the \emph{marginal distribution} of $\dot d$ over the head: at 30\,ksps with 128-sample segments the raw Doppler bin is $\approx$3.3\mph{} (\cref{app:hardware}), so the full toe--heel spread of a driver spans only $\sim$2 raw bins. +Software can and should still extract (\cref{app:radardsp}): the spread's midpoint or a fixed percentile as a stable club-speed reference (the peak is toe glint); the spread \emph{width} as a crude proxy for $\lVert\vect{\omega}\rVert$ projected on the line of sight; and head/shaft separation by gating the slow tail. +That is the honest ceiling of the current stack: a one-dimensional shadow of the twist, useful for de-biasing club speed, incapable of yielding path or attack angle. + +\subsection{K-LD7: the right equation, the wrong operating envelope} +The K-LD7's dual receive patches provide per-bin monopulse angle --- rows of \cref{eq:screw-ls} in principle --- but its fastest setting has a 100\,km/h ($\approx$62\mph) unambiguous-velocity ceiling and $\sim$29\,ms frames (\cref{app:hardware}), so a driver head aliases and traverses more than a meter between frames. +It remains a ball-burst angle sensor, not a club tracker. + +\subsection{IWR6843: all three ingredients in one package} +The IWR6843 supplies everything \cref{eq:screw-ls} needs, given custom chirp firmware (\cref{app:hardware}): range at 3.75\,cm resolution (separates head from shaft and arms), per-chirp Doppler with both span and resolution set by the chirp plan, and per-detection monopulse angle from 12 virtual antennas. +Representative chirp budget for the club problem: +\begin{center}\small +\begin{tabular}{@{}llll@{}} +\toprule +\textbf{Choice} & \textbf{Value} & \textbf{Consequence} & \textbf{Governing relation} \\ +\midrule +Chirp repetition $T_c$ & 25\,\si{\micro\second} & $v_{\max} = \lambda/4T_c \approx 50$\,m/s (112\mph) & unambiguous velocity \\ +Chirps per frame $N$ & 128 & $\Delta v = \lambda/2NT_c \approx 0.8$\,m/s & velocity resolution \\ +Frame time & 3.2\,ms & $\sim$300\,Hz frame rate & swing-resolved motion \\ +Bandwidth $B$ & 4\,GHz & $\Delta R = c/2B = 3.75$\,cm & 3--4 cells across the head \\ +\bottomrule +\end{tabular} +\end{center} +At $\lambda = 5$\,mm the toe--heel spread ($\sim$3\,m/s) covers $\sim$4 velocity cells --- twice the OPS243-A's resolving power, with each cell additionally localized in range and angle. +The out-of-box SDK point cloud at 10--20\,Hz is useless here; the custom chirp configuration plus on-chip range-Doppler processing is the enabling (and largest) engineering task, as flagged in \cref{app:hardware}. + +\section{Estimation recipe, step by step} +\label{sec:screw-recipe} + +The following is the full pipeline, in execution order, for one swing. +Notation: frames indexed $k$, detections within a frame indexed $i$. + +\subsection*{Step 1 --- Detect and localize} +Run 2D CFAR on each frame's range-Doppler map (OS-CFAR preferred over cell-averaging: club and ball are exactly the closely-spaced-targets case it is designed for, \cref{app:hardware}). +For each detection, compute monopulse azimuth/elevation from the virtual-array phase and form $\vect{p}_i = (R_i, \theta_i, \phi_i)$ in Cartesian sensor coordinates, with a per-detection covariance driven by SNR (angle variance $\propto 1/\mathrm{SNR}$; range variance from the window function). + +\subsection*{Step 2 --- Segment the club} +Gate detections to the club by a joint predicate: range inside the swing corridor, radial speed in the club band (above waggle, below ball speeds), and --- once tracking has started --- Mahalanobis distance to the propagated track. +Reject the shaft by its distinct signature: shaft returns sit at lower speed and nearer range, forming an elongated cluster whose major axis points at the head cluster. +Body and arm clutter falls out on speed alone. + +\subsection*{Step 3 --- Per-frame twist solve} +Choose the body reference point $O_k$ as the SNR-weighted centroid of the head cluster (this choice only re-parameterizes $\vect{v}_O$; the twist itself is frame-invariant). +Assemble \cref{eq:screw-ls} over the frame's $m_k$ detections and solve weighted least squares with a robust loss (Huber or Cauchy) on the residuals --- robustness is not optional, because \emph{glint migration} (specular points wandering across the curved metal head as aspect changes) violates the fixed-scatterer assumption at the few-centimeter level and manifests as heavy-tailed residuals. +Record $\hat\xi_k$ and its covariance $\Sigma_k = (A^{\mathsf T} W A)^{-1}$. + +\subsection*{Step 4 --- Read the conditioning honestly} +Compute the SVD of the weighted $A$. +Expect, from a single vantage $\sim$2\,m away with detections spanning $\sim$10\,cm: one strong singular value (bulk radial velocity --- essentially club speed), one or two moderate ones (the transverse velocity component resolved by angle diversity, and the $\vect{\omega}$ combination that generates the Doppler spread), and the rest weak. +\textbf{Do not invert the weak directions per frame.} +Either truncate the SVD (solve only the well-conditioned subspace and carry the null-space explicitly) or defer those components entirely to the smoother of Step 5. +A per-frame 6-DOF solve that ``works'' numerically will hallucinate the unobservable components from noise; this is the single most likely implementation failure mode. + +\subsection*{Step 5 --- Smooth the twist trajectory on $SE(3)$} +The rank deficiency resolves \emph{across} frames: as the head sweeps through the beam over $\sim$30\,ms ($\sim$10 frames at 300\,Hz), the sight-line geometry rotates and different frames constrain different twist combinations. +Estimate a smooth trajectory rather than independent snapshots: +state $x_k = (T_k \in SE(3),\, \xi_k)$, i.e., pose and twist; +process model $T_{k+1} = T_k \exp\!\bigl((\xi_k \Delta t)^{\wedge}\bigr)$ with a slowly varying twist (white-noise angular/linear acceleration, tuned to swing dynamics --- the head gains roughly 1\mph{} per millisecond late in the downswing); +measurements = the raw rows of \cref{eq:screw-doppler} (preferable to feeding the Step-3 point estimates, since rows carry their true information content); +run an extended/unscented filter with the standard Lie-group state handling~\cite{murrayliss}, then an RTS backward smoother, exactly as in \cref{app:ekf}. +Add two physically motivated priors, weighted weakly enough to be overruled by data: +\begin{enumerate} +\item \textbf{Low pitch}: penalize $h^2 = (\vect{\omega}\cdot\vect{v}_O)^2/\lVert\vect{\omega}\rVert^4$ --- the downswing is close to a pure rotation~\cite{vena2010a}. +\item \textbf{Hub proximity}: penalize distance of the ISA (\cref{eq:screw-isa}) from a broad prior region around the golfer's hands. +\end{enumerate} + +\subsection*{Step 6 --- Evaluate at impact, then stop} +Rigidity holds before impact and fails during it ($\sim$500\,\si{\micro\second} of gross deformation), so fit only up to the last pre-impact frame and evaluate the smoothed twist at the impact timestamp (from the sound trigger, minus the acoustic delay budget of \cref{app:hardware}). +This mirrors the commercial convention: TrackMan defines club speed ``just prior to first contact''~\cite{trackmanclubspeed}. + +\subsection*{Step 7 --- Project out the parameters} +All club-delivery parameters are now projections of one estimated object: +\begin{center}\small +\begin{tabular}{@{}p{3.6cm}p{9.6cm}@{}} +\toprule +\textbf{Parameter} & \textbf{Projection of the impact-time twist} \\ +\midrule +Club speed & $\lVert \vect{v}_O + \vect{\omega}\times\vect{r}_{gc} \rVert$ at a \emph{declared} reference point $\vect{r}_{gc}$ (cluster centroid, or a per-club calibrated offset) \\ +Club path & horizontal direction angle of that velocity vector vs.\ the target line \\ +Attack angle & vertical direction angle of the same vector \\ +Closure rate & component of $\vect{\omega}$ about the estimated shaft axis, in \si{\degree\per\second} --- the GCQuad-exclusive parameter (\cref{sec:camclub}), free here \\ +Swing plane / direction & orientation of the ISA (\cref{eq:screw-isa}) and of the plane its trajectory sweeps \\ +Low point & extrapolate the reference-point arc to its velocity-vertical zero \\ +Gear-effect recoil & (post-impact, optional) the discontinuity in $\vect{\omega}$ across impact estimates the head's angular recoil, cross-checkable against \cref{eq:gear} \\ +\bottomrule +\end{tabular} +\end{center} +Report each with the covariance propagated from the smoother, and tag provenance per \cref{tab:hierarchy}: with this pipeline, path and attack angle move from \emph{derived} to \emph{measured}, while face angle and impact location remain optics problems (\cref{sec:faceangle}). + +\section{Validation plan} +\label{sec:screw-validation} + +Validate in order of increasing realism, reusing the standards of \cref{ch:accuracy}: +\begin{enumerate} +\item \textbf{Synthetic}: simulate scatterers on a CAD clubhead following a recorded swing trajectory, generate detections with realistic SNR and glint migration, and verify the recovered twist against truth --- this exercises Steps 3--5 without hardware and quantifies the observability claims of Step 4. +\item \textbf{Pendulum rig}: a club swung as a physical pendulum has an analytically known, planar, fixed-axis twist (pitch exactly zero, ISA fixed); any bias in the pipeline shows up immediately. +\item \textbf{Cross-device}: compare club speed, path, and attack angle against the MLM2PRO per the protocol of \cref{ch:accuracy}, with the reference-point caveat of \cref{sec:radarclub} stated up front; sanity-gate every shot against the loft-dependent smash ceiling (\cref{sec:smash}). +\item \textbf{Internal consistency}: the measured path must satisfy the swing-geometry identity (path as a function of swing direction, swing plane, attack angle --- \cref{ch:impact}) within uncertainty; violations indicate reference-point drift or alignment error. +\end{enumerate} + +\begin{implication} +The twist formulation costs nothing extra to adopt --- the per-frame solve is a small weighted least squares --- and buys three things the point-tracking alternative cannot: a principled, declared club-speed reference point (ending the largest inter-device disagreement), closure rate and a rigorous swing plane as free by-products, and honest covariances on every club parameter. +It should be specified as the estimation layer for the IWR6843 integration from day one, with the OPS243-A velocity-distribution analytics (\cref{app:radardsp}) as the degenerate 1D special case of the same model. +\end{implication}