Skip to content
 
 

Latest commit

 

History

103 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Skilleye: Tennis Swing Quality Analysis System

Python PyTorch OpenCV KiCad PCB ESP32

Skeleton-based swing quality analysis for tennis players.

✧ Project Video ✧

Submission for the 8th CTCI Science and Technology Creativity Competition 2026 (Sports theme).

Sections
Description
Results
Sensor
Website
Repo Layout
Technical Report
Acknowledgements

Description

Consumer tennis apps help users track and ball and answer if the shot landed in or out of the court. However, the app never tells the user what they did with their body for the shot to land the way it did. Skilleye helps answer to this issue with a free AI-powered analysis of the user's body such as elbow position at contact, hip rotation timing, and follow-through.

A swing video goes in and RTMPose extracts the user's 2D skeleton. A tracking step locks onto a single subject and normalizes the pose, and an ST-GCN models the result as a spatio-temporal graph. From that one representation, the system identifies the stroke, scores how well it was executed against expert templates, and turns the joints it flags into written corrections. A racket-mounted IMU adds the wrist and racket-face motion a single frontal camera cannot see.

System architecture: swing video through RTMPose, both ST-GCN classifiers, quality scoring, optional LLM explainer, the Streamlit UI, and the sensor-fusion prototype branch

Results

Trained and evaluated on the THETIS dataset (1,980 clips from 55 subjects), every split is subject-disjoint, so no subject appears in both training and validation.

Result Baseline
Pose extraction 1,980 / 1,980 clips, 0 failures
Stroke classification (6-way) 81.7% ± 4.9% 16.7%
Beginner vs. expert (2-way) 82.4% ± 3.8% 54.6%

Both accuracies are means across 5-fold subject-disjoint cross-validation, not a single split. The quality scorer itself has no ground truth to validate against yet, so it is checked directionally: held-out expert clips outscore held-out beginner clips on 5 of 6 strokes. Smash does not pass, and that is reported as an open finding rather than tuned away.

Sensor

A racket-mounted IMU board, designed in KiCad and fabricated by PCBWay. The board pairs a Seeed Studio XIAO ESP32-C6 with a GY-521 (MPU6050) and a TP4056 charging breakout. The board hosts its own WiFi network and streams accelerometer and gyroscope data at 200 Hz the moment a laptop connects. It is built and tested on real takes across all six strokes.

Website

A live site can be found here: https://kyriosaa.github.io/skilleye/

Repo Layout

ml/skilleye/        pose extraction, ST-GCN models, quality scoring, demo UI
ml/results/         trained metrics, figures, expert templates
hardware/           KiCad projects, firmware, gerbers, capture and monitoring clients
website/            project site, published to GitHub Pages
docs/               schematics, diagrams, design specs

Technical Report

REPORT.md has the complete write-up: dataset analysis, model architecture & training setup, the evaluation protocol and why it is subject-disjoint, the quality-scoring & skill-rule modules, hardware revisions, full results with per-class breakdowns, limitations, and remaining work.

Acknowledgements

PCB fabrication for the sensor board was sponsored by PCBWay.

About

Skeleton-based swing quality analysis system for tennis players

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages