-
Notifications
You must be signed in to change notification settings - Fork 0
Genericise the review into a vendor- and project-neutral technical reference #33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -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} | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,84 +1,85 @@ | ||
| % Shared preamble for the OpenFlight launch monitor technology review | ||
| \usepackage[T1]{fontenc} | ||
| \usepackage[utf8]{inputenc} | ||
| \usepackage{lmodern} | ||
| \usepackage{microtype} | ||
| \usepackage[margin=1in]{geometry} | ||
| \usepackage{amsmath,amssymb,bm} | ||
| \usepackage{siunitx} | ||
| \usepackage{graphicx} | ||
| \usepackage{booktabs} | ||
| \usepackage{longtable} | ||
| \usepackage{array} | ||
| \usepackage{multirow} | ||
| \usepackage{caption} | ||
| \usepackage{subcaption} | ||
| \usepackage{enumitem} | ||
| \usepackage{xcolor} | ||
| \usepackage{tikz} | ||
| \usetikzlibrary{arrows.meta,positioning,calc,angles,quotes} | ||
| \usepackage{fancyhdr} | ||
| \usepackage{titlesec} | ||
| \usepackage[hidelinks,pdfusetitle]{hyperref} | ||
| \usepackage[capitalise,noabbrev]{cleveref} | ||
|
|
||
| % Bibliography: structured BibTeX database (references.bib), biber backend. | ||
| % Entries are grouped in the printed bibliography by their `keywords` | ||
| % field -- see CONVENTIONS.md before adding references. | ||
| \usepackage[backend=biber,style=numeric,sorting=nyt,giveninits=true, | ||
| maxbibnames=6,minbibnames=6,isbn=false,eprint=false]{biblatex} | ||
| \addbibresource{references.bib} | ||
| % Print the URL note field compactly for online/manual sources. | ||
| \setlength{\bibitemsep}{0.5ex} | ||
|
|
||
| % Color scheme | ||
| \definecolor{ofblue}{RGB}{20,60,110} | ||
| \definecolor{ofgray}{RGB}{90,95,100} | ||
| \definecolor{ofgreen}{RGB}{25,110,60} | ||
|
|
||
| \titleformat{\chapter}[display] | ||
| {\normalfont\huge\bfseries\color{ofblue}} | ||
| {\chaptertitlename\ \thechapter}{12pt}{\Huge} | ||
| \titlespacing*{\chapter}{0pt}{0pt}{24pt} | ||
| \titleformat*{\section}{\Large\bfseries\color{ofblue}} | ||
| \titleformat*{\subsection}{\large\bfseries\color{ofgray}} | ||
|
|
||
| \pagestyle{fancy} | ||
| \fancyhf{} | ||
| \fancyhead[L]{\small\itshape OpenFlight Technology Review} | ||
| \fancyhead[R]{\small\itshape\nouppercase{\leftmark}} | ||
| \fancyfoot[C]{\thepage} | ||
| \renewcommand{\headrulewidth}{0.4pt} | ||
|
|
||
| \sisetup{per-mode=symbol,range-phrase=--,range-units=single} | ||
|
|
||
| % Convenience macros | ||
| \newcommand{\degs}{\si{\degree}} | ||
| \newcommand{\mph}{\,mph} | ||
| \newcommand{\rpm}{\,rpm} | ||
| \newcommand{\patent}[1]{\href{https://patents.google.com/patent/#1}{#1}} | ||
| \newcommand{\vect}[1]{\bm{#1}} | ||
| \newcommand{\uvec}[1]{\hat{\bm{#1}}} | ||
|
|
||
| % Callout box for design implications | ||
| \usepackage[most]{tcolorbox} | ||
| \newtcolorbox{implication}{ | ||
| colback=ofgreen!6, colframe=ofgreen!70!black, | ||
| title=Implication for OpenFlight, fonttitle=\bfseries, | ||
| boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, | ||
| breakable | ||
| } | ||
| \newtcolorbox{keypoint}{ | ||
| colback=ofblue!5, colframe=ofblue!70, | ||
| title=Key point, fonttitle=\bfseries, | ||
| boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, | ||
| breakable | ||
| } | ||
| % Callout for widely-repeated claims that are wrong, contested, or unsourced. | ||
| % Used to flag corrections so they are not silently absorbed on later edits. | ||
| \newtcolorbox{warning}{ | ||
| colback=red!4, colframe=red!55!black, | ||
| title=Caution, fonttitle=\bfseries, | ||
| boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, | ||
| breakable | ||
| } | ||
| % Shared preamble for the launch monitor technology review | ||
| \usepackage[T1]{fontenc} | ||
| \usepackage[utf8]{inputenc} | ||
| \usepackage{lmodern} | ||
| \usepackage{microtype} | ||
| \usepackage[margin=1in]{geometry} | ||
| \usepackage{amsmath,amssymb,bm} | ||
| \usepackage{siunitx} | ||
| \usepackage{graphicx} | ||
| \usepackage{booktabs} | ||
| \usepackage{longtable} | ||
| \usepackage{array} | ||
| \usepackage{multirow} | ||
| \usepackage{caption} | ||
| \usepackage{subcaption} | ||
| \usepackage{enumitem} | ||
| \usepackage{xcolor} | ||
| \usepackage{tikz} | ||
| \usetikzlibrary{arrows.meta,positioning,calc,angles,quotes} | ||
| \usepackage{fancyhdr} | ||
| \usepackage{titlesec} | ||
| \usepackage[hidelinks,pdfusetitle]{hyperref} | ||
| \usepackage[capitalise,noabbrev]{cleveref} | ||
|
|
||
| % Bibliography: structured BibTeX database (references.bib), biber backend. | ||
| % Entries are grouped in the printed bibliography by their `keywords` | ||
| % field -- see CONVENTIONS.md before adding references. | ||
| \usepackage[backend=biber,style=numeric,sorting=nyt,giveninits=true, | ||
| maxbibnames=6,minbibnames=6,isbn=false,eprint=false]{biblatex} | ||
| \addbibresource{references.bib} | ||
| % Print the URL note field compactly for online/manual sources. | ||
| \setlength{\bibitemsep}{0.5ex} | ||
|
|
||
| % Color scheme | ||
| \definecolor{accentblue}{RGB}{20,60,110} | ||
| \definecolor{accentgray}{RGB}{90,95,100} | ||
| \definecolor{accentgreen}{RGB}{25,110,60} | ||
|
Comment on lines
+35
to
+37
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Renaming these definitions removes Useful? React with 👍 / 👎. |
||
|
|
||
| \titleformat{\chapter}[display] | ||
| {\normalfont\huge\bfseries\color{accentblue}} | ||
| {\chaptertitlename\ \thechapter}{12pt}{\Huge} | ||
| \titlespacing*{\chapter}{0pt}{0pt}{24pt} | ||
| \titleformat*{\section}{\Large\bfseries\color{accentblue}} | ||
| \titleformat*{\subsection}{\large\bfseries\color{accentgray}} | ||
|
|
||
| \pagestyle{fancy} | ||
| \fancyhf{} | ||
| \fancyhead[L]{\small\itshape Launch Monitor Technology} | ||
| \fancyhead[R]{\small\itshape\nouppercase{\leftmark}} | ||
| \fancyfoot[C]{\thepage} | ||
| \renewcommand{\headrulewidth}{0.4pt} | ||
|
|
||
| \sisetup{per-mode=symbol,range-phrase=--,range-units=single} | ||
|
|
||
| % Convenience macros | ||
| \newcommand{\degs}{\si{\degree}} | ||
| \newcommand{\mph}{\,mph} | ||
| \newcommand{\rpm}{\,rpm} | ||
| \newcommand{\patent}[1]{\href{https://patents.google.com/patent/#1}{#1}} | ||
| \newcommand{\vect}[1]{\bm{#1}} | ||
| \newcommand{\uvec}[1]{\hat{\bm{#1}}} | ||
|
|
||
| % Callout box for design implications. Generic by design: this box flags a | ||
| % consequence an implementer must act on, independent of any particular product. | ||
| \usepackage[most]{tcolorbox} | ||
| \newtcolorbox{implication}{ | ||
| colback=accentgreen!6, colframe=accentgreen!70!black, | ||
| title=Design implication, fonttitle=\bfseries, | ||
| boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, | ||
| breakable | ||
| } | ||
| \newtcolorbox{keypoint}{ | ||
| colback=accentblue!5, colframe=accentblue!70, | ||
| title=Key point, fonttitle=\bfseries, | ||
| boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, | ||
| breakable | ||
| } | ||
| % Callout for widely-repeated claims that are wrong, contested, or unsourced. | ||
| % Used to flag corrections so they are not silently absorbed on later edits. | ||
| \newtcolorbox{warning}{ | ||
| colback=red!4, colframe=red!55!black, | ||
| title=Caution, fonttitle=\bfseries, | ||
| boxrule=0.6pt, arc=2pt, left=6pt, right=6pt, top=4pt, bottom=4pt, | ||
| breakable | ||
| } | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The repository directs readers to
main.pdfas the compiled report, but this commit leaves that PDF byte-for-byte identical to the parent while changing the title, author, date, and Chapter 10 source. Readers opening the tracked artifact therefore still receive the old OpenFlight-specific edition rather than the vendor-neutral document described by the updated README.Useful? React with 👍 / 👎.