Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
403 changes: 215 additions & 188 deletions tech-review/CONVENTIONS.md

Large diffs are not rendered by default.

82 changes: 41 additions & 41 deletions tech-review/README.md
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 OpenFlightphased 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 implementerscapability 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
104 changes: 52 additions & 52 deletions tech-review/main.tex
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{}
Comment on lines +5 to +7

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Regenerate the checked-in PDF with the neutralized source

The repository directs readers to main.pdf as 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 👍 / 👎.

\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}
169 changes: 85 additions & 84 deletions tech-review/preamble.tex
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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Update the remaining users of the renamed colors

Renaming these definitions removes ofblue and ofgreen, but the D-plane TikZ figure in sections/03-impact-physics.tex still uses those names on lines 41 and 44. Building the document therefore raises an xcolor “Undefined color” error, and the checked tech-review.yml workflow runs LaTeX with -halt-on-error, so every CI build of this commit fails. Update the figure or retain aliases for the old names.

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
}
Loading
Loading