PitchTracker is a Windows desktop app that uses two cameras to track baseball and softball pitches. It shows the operator what was captured, what the system could measure, and which results are uncertain.
The software is ready for simulator use and controlled engineering tests.
Physical speed and plate-location accuracy are not validated for public
claims. The current public v2.0.0 release has no installer asset, so the
supported public path is running from source.
See Current Status for the latest test, release, and hardware evidence. See the glossary if terms such as “global shutter,” “stereo,” or “setup snapshot” are unfamiliar.
- Try the simulator: follow Quick Start. No cameras are required.
- Run the desktop app: follow Installation and the operator runbook.
- Test cameras or field accuracy: start with Testing Help Needed.
- Contribute code or documentation: read Contributing.
- Report a problem: use Support and choose the appropriate issue form.
- Helps an operator select and qualify a camera pair.
- Captures synchronized views of the pitch lane.
- Finds ball candidates and reconstructs a 3D trajectory when the evidence is sufficient.
- Records replayable video, observations, decisions, and quality diagnostics.
- Presents coaching and review information without hiding missing or rejected measurements.
Automated tests use simulated and synthetic inputs. They prove software behavior; they do not prove real-world measurement accuracy.
The project currently has software coverage for setup contracts, capture and tracking behavior, evidence recording, replay, and validation gates. It does not yet have an independently reviewed physical confirmation dataset for speed or plate-location accuracy.
Do not describe a camera model, trajectory mode, or measurement error bound as validated unless an active physical-validation approval explicitly covers the exact rig, software, environment, protocol, and dataset.
Requirements:
- Windows 10 or 11;
- Python 3.13 or newer;
- no cameras for simulator development;
- two matching, qualified global-shutter UVC cameras for field testing.
git clone https://github.com/berginj/PitchTracker.git
cd PitchTracker
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
python setup_validator.py
python launcher.py --backend simFor a camera-backed run, use the same launcher after setup, or run:
.\run.ps1 -Backend uvcMost automated tests do not require cameras:
python -m pytest -qThe guided setup has ten stages:
- Select cameras.
- Verify paired preview.
- Qualify synchronization.
- Lock and verify focus and exposure controls.
- Validate image overlap.
- Compute coarse rectification.
- Optionally refine with ChArUco.
- Align camera coordinates to the measured field fixture.
- Persist the rig profile and setup snapshot.
- Review the quality report and blockers.
Completing the wizard does not establish physical accuracy. The setup snapshot, calibration artifacts, physical approval, current preflight, and pitch evidence must remain eligible.
Field testing requires a rigid mount, two matching cameras with stable identities, a verified target capture mode, and an independent calibrated reference device for accuracy claims. Read the testing guide before collecting data. It explains what each test needs, what to record, and how to keep development data separate from confirmation data.
Frames, recordings, calibration files, logs, athlete information, and facility details may be sensitive. Keep them local by default. Public reports should use anonymized summaries, hashes, and filenames—not athlete media, raw serials, private paths, or secrets.
- Documentation index
- Quick Start
- Glossary
- Current Status
- Roadmap
- Testing Help Needed
- Operator runbook
- Physical validation checklist
- Architecture
- Troubleshooting
- Support
- Security policy
- Contributing
Historical and exploratory material is retained under archive/ and
docs/archive/; it is not current product status.