Skip to content
open-flightPublic

About

Open source force plates for golf performance

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

open-fp

Tests Lint Firmware Hardware

Open source force plates for golf performance.

Two low-profile golf force plates, one per foot. Each plate has four load cells, eight in total. A single Arduino UNO Q reads them, and a web dashboard on the LAN shows live weight shift and swing replay.

Status: Hardware bring-up is under way. Four of the eight load cells read on one SPI bus through the toe stripboard carrier, at about 944 Hz each (bench/ads1220_all; results in docs/VERIFIED.md). An assembled, no-solder ADC board for all eight channels has been designed and ordered (hardware/pcb/adc-board). The pure-Python processing (app/python/open_fp/: protocol, clock, pipeline, calibration, swing detection, storage) is written and tested, and runs under pytest with no hardware. The web UI and a desktop simulator work too: run python tools/sim/sim_server.py and open http://localhost:7070 to see live weight shift, swing capture, replay and diagnostics on synthetic swings. Not written yet: the production MCU firmware (app/sketch/) and the board-side main.py that links it to the pipeline. Milestones: docs/PROJECT_INIT.md §12 (M0–M1 done, M2 in progress).

What it measures

Output Notes
Vertical force per foot (Fz) N and %BW
Centre of pressure (CoP) per foot and combined mm, in the stance frame
Lead/trail weight % set by handedness (RH/LH)
Swing capture and metrics address, max trail, transition, max lead, finish

Limitations

  • Vertical force only. Each plate has four vertical cells, which give Fz and CoP (x, y) per plate. The plates cannot measure shear (horizontal) forces or torque about the vertical axis, so the app does not report ground torque or horizontal force.
  • Inter-channel skew up to ~1 ms. Each ADC runs on its own oscillator. All eight are read on the DRDY signal of one board.
  • 200 Hz stream. The MCU↔Linux router link runs at 115200 baud. That is enough for weight shift but too slow for impact transients.
  • Temperature drift. Half-bridge cells and their completion resistors drift with temperature. The app auto-zeros when the plates are empty.
  • Impact timing is external. Impact is known only when the OpenFlight launch monitor sends a shot event or you mark it by hand. Over Wi-Fi with NTP, expect 5–20 ms of error.

Hardware

Repository layout

app/        Arduino App Lab app: MCU sketch, Python processing, static web UI
bench/      bring-up sketches for the ADS1220s
docs/       project spec, assembly, wiring, calibration, VERIFIED log
hardware/   BOM and CAD (STL/STEP in Git LFS)
tools/      deploy scripts, desktop simulator, offline analysis
tests/      pytest suite, runs without hardware

Setup

Full walkthrough from a fresh clone and an unboxed board: docs/SETUP.md. The short version:

tools/dev_setup.sh          # dev machine: git-lfs, arduino-cli + UNO Q core, CAD files, .venv
# App Lab: first-boot the board as "open-fp", then create app "open-fp" with the WebUI - HTML brick
tools/board_setup.sh        # install your SSH key on the board
tools/deploy.sh             # push app/ and restart; UI at http://open-fp.local:7000
tools/logs.sh               # follow the app's Python logs

Contributing

Build reports, fixes and new features are welcome. Start with CONTRIBUTING.md: it covers the dev setup (no hardware needed), the checks CI runs, and how hardware changes are recorded. Please follow the Code of Conduct, and report security issues privately as described in SECURITY.md.

License

AGPL-3.0, the same license as OpenFlight.

About

Open source force plates for golf performance

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages