From db48a79d7155ae37b63edef4cb2196bdc30b8247 Mon Sep 17 00:00:00 2001 From: Dieter Olson Date: Mon, 3 Aug 2026 09:41:31 -0700 Subject: [PATCH 1/2] Genericise the review into a vendor- and project-neutral reference Removes the OpenFlight-specific framing so the document stands as a general technical reference on how launch monitors work, usable by anyone building or evaluating one. The technical content is unchanged; what changes is who the document addresses. Structural changes: - Retitled. Subtitle is now "A comprehensive technical reference"; the author field and the "technical foundation for OpenFlight" line are gone. - The callout box that appears throughout was titled "Implication for OpenFlight" on all ten uses. It is now "Design implication" -- a consequence an implementer must act on, independent of any product. - Chapter 10 rewritten from "Implications for OpenFlight" (a project roadmap keyed to one parts list) to "Design Guidance for Implementers", organised as four cumulative CAPABILITY TIERS defined by what each moves from derived to measured. File renamed 10-openflight-implications.tex -> 10-design-guidance.tex. - Appendix B: "Detailed Implementation Guidance for OpenFlight" -> "Detailed Implementation Guidance". - Appendix C reframed from "OpenFlight's actual and planned building blocks" to a reference on commodity sensing components, explicitly representative rather than prescriptive. - Theme colours ofblue/ofgreen renamed accentblue/accentgreen; running header now "Launch Monitor Technology". Prose: ~20 first-person-project references rewritten to address "an implementer", "a radar-first system", or "a new entrant" as appropriate. Two additions rather than deletions: - The introduction gains an explicit neutrality statement, because the document names products constantly and often critically. Naming a system is a citation, not a recommendation -- and the reason products are cited so heavily is that vendor definitions, patent claims and measured tolerances are the primary evidence available here, the peer-reviewed literature being thin. - Chapter 10's closing section now argues reporting honesty as a design feature, noting that Garmin and TrackMan both publish provenance and reference-point disclosures without commercial harm. Deliberately KEPT: OpenFlight and PiTrac in the commercial survey's open-source section, and their links in the reference appendix. Catalogueing them alongside TrackMan and Foresight is what a neutral survey should do. CONVENTIONS.md gains a Neutrality section stating the rule for future edits: name a product only as evidence, write for "an implementer", and if a section can only be written by assuming one architecture it belongs in Chapter 10 as a capability tier. Verified with a full pdflatex/biber/pdflatex x2 build: zero undefined references, zero errors, TOC confirms the renamed chapter. NOTE: main.pdf is stale in this commit -- it is file-locked by an open Acrobat window and could not be rewritten. Rebuild after closing the viewer. Co-Authored-By: Claude Fable 5 --- tech-review/CONVENTIONS.md | 386 +++++---- tech-review/README.md | 82 +- tech-review/main.tex | 104 +-- tech-review/preamble.tex | 169 ++-- tech-review/sections/01-introduction.tex | 185 ++-- tech-review/sections/02-parameters.tex | 448 +++++----- tech-review/sections/03-impact-physics.tex | 538 ++++++------ tech-review/sections/04-radar-systems.tex | 516 +++++------ tech-review/sections/05-camera-systems.tex | 348 ++++---- tech-review/sections/06-commercial-survey.tex | 258 +++--- tech-review/sections/07-patents.tex | 416 ++++----- .../sections/08-ball-flight-models.tex | 212 ++--- tech-review/sections/09-accuracy.tex | 144 ++-- tech-review/sections/10-design-guidance.tex | 146 ++++ .../sections/10-openflight-implications.tex | 111 --- tech-review/sections/abstract.tex | 23 +- .../sections/appendix-a-references.tex | 708 ++++++++-------- .../sections/appendix-b-implementation.tex | 410 ++++----- tech-review/sections/appendix-c-hardware.tex | 381 +++++---- .../sections/appendix-d-patent-compendium.tex | 800 +++++++++--------- .../sections/appendix-e-screw-kinematics.tex | 362 ++++---- 21 files changed, 3405 insertions(+), 3342 deletions(-) create mode 100644 tech-review/sections/10-design-guidance.tex delete mode 100644 tech-review/sections/10-openflight-implications.tex diff --git a/tech-review/CONVENTIONS.md b/tech-review/CONVENTIONS.md index ed226e6..85980a1 100644 --- a/tech-review/CONVENTIONS.md +++ b/tech-review/CONVENTIONS.md @@ -1,188 +1,198 @@ -# 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. + +**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..f9ada25 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{ofgray}{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{ofgray}} + +\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..2761fcd 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[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. + +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} From 7f6c953a79d47b0f837a801c5a75a2af80ed25e7 Mon Sep 17 00:00:00 2001 From: Dieter Olson Date: Mon, 3 Aug 2026 09:50:55 -0700 Subject: [PATCH 2/2] Fix theme-colour rename that broke the build The previous commit renamed ofblue/ofgreen to accentblue/accentgreen in preamble.tex but left ofgray undefined-by-omission and, more importantly, left the TikZ figures in sections/*.tex still referencing the old names. An undefined colour only errors where it is USED, so the failure surfaced in 03-impact-physics.tex, a chapter away from the file I edited. Renames all three consistently across preamble.tex and every section file: ofblue -> accentblue, ofgreen -> accentgreen, ofgray -> accentgray. No stale of* colour references remain. My local verification missed this because I ran pdflatex WITHOUT -halt-on-error and then grepped the log for error strings. Without that flag pdflatex recovers from a fatal error, continues, and still emits a PDF -- so the grep came back clean on a build CI correctly rejected. Rebuilt with CI's flags and checked the exit code: pass 1 exit 0, final exit 0, zero fatal errors, zero undefined references. CONVENTIONS.md gains that lesson, plus the two failure modes behind it: that an undefined colour or macro surfaces at its use site rather than its definition site, and that on Windows an open PDF viewer file-locks main.pdf and leaves a stale artefact -- build with -jobname=verify to check around it. Co-Authored-By: Claude Fable 5 --- tech-review/CONVENTIONS.md | 17 +++++++++++++++++ tech-review/preamble.tex | 4 ++-- tech-review/sections/03-impact-physics.tex | 14 +++++++------- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/tech-review/CONVENTIONS.md b/tech-review/CONVENTIONS.md index 85980a1..62316a4 100644 --- a/tech-review/CONVENTIONS.md +++ b/tech-review/CONVENTIONS.md @@ -167,6 +167,23 @@ cd tech-review && latexmk -pdf main.tex 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 diff --git a/tech-review/preamble.tex b/tech-review/preamble.tex index f9ada25..f041ab0 100644 --- a/tech-review/preamble.tex +++ b/tech-review/preamble.tex @@ -33,7 +33,7 @@ % Color scheme \definecolor{accentblue}{RGB}{20,60,110} -\definecolor{ofgray}{RGB}{90,95,100} +\definecolor{accentgray}{RGB}{90,95,100} \definecolor{accentgreen}{RGB}{25,110,60} \titleformat{\chapter}[display] @@ -41,7 +41,7 @@ {\chaptertitlename\ \thechapter}{12pt}{\Huge} \titlespacing*{\chapter}{0pt}{0pt}{24pt} \titleformat*{\section}{\Large\bfseries\color{accentblue}} -\titleformat*{\subsection}{\large\bfseries\color{ofgray}} +\titleformat*{\subsection}{\large\bfseries\color{accentgray}} \pagestyle{fancy} \fancyhf{} diff --git a/tech-review/sections/03-impact-physics.tex b/tech-review/sections/03-impact-physics.tex index 2761fcd..066e6f7 100644 --- a/tech-review/sections/03-impact-physics.tex +++ b/tech-review/sections/03-impact-physics.tex @@ -36,21 +36,21 @@ \section{The D-plane} \centering \begin{tikzpicture}[scale=1.05,>=Stealth] % target line - \draw[ofgray,dashed,->] (0,0) -- (9.5,0) node[right] {\small target line}; + \draw[accentgray,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)}) + \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,ofblue,->] (0,0) -- ({8*cos(-2)},{8*sin(-2)}) + \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[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$}; + \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