Sensor Integration
Four sensor sources unified into one queryable database
Apple Watch
100Hz
sample rate
IMU
sensor type
Wrist
position
Data Captured
- Accelerometer (x, y, z)
- Gyroscope rotation rates
- Device motion quaternions
- Heart rate (optional)
Database
tennis_watch.db - sessions table + raw_sensor_buffer
Sync Method
Mac server at 192.168.8.108:8080
Zepp Universal
333Hz
sample rate
IMU
sensor type
Racquet
position
Data Captured
- Impact position (x, y)
- Swing type classification
- Rotation speed
- Swing power metrics
Database
ztennis.db - swings table + origins
Sync Method
Zepp app export to SQLite
Babolat PIQ
PIQ
score system
Shot
classification
Racquet
position
Data Captured
- PIQ score (0-200 scale)
- Shot type (FH/BH/Serve)
- Ball speed (m/s)
- Spin and power metrics
Database
BabPopExt.db - extracted from app logs
Sync Method
ADB pull from Android phone
Garmin Heart Rate
1Hz
sample rate
HR
primary metric
Wrist
position
Data Captured
Heart rate timeseries during matches and practice sessions. Used for fatigue analysis, win/loss correlation, and performance zone tracking.
Database
Integrated via match_history.csv linking
Unified Data Layer
| Source | Database | Primary Table | Key Metrics |
|---|---|---|---|
| Apple Watch | tennis_watch.db | raw_sensor_buffer | Rotation rate, acceleration, timestamps |
| Zepp Universal | ztennis.db | swings, origins | Impact position, swing type, power |
| Babolat PIQ | BabPopExt.db | tb_activities, tb_shots | PIQ score, speed, shot classification |
| Garmin | garmin_hr.db | hr_samples | Heart rate, HR zones |
| Match History | match_history.csv | - | Opponent, score, outcome, tournament |
Linked Sessions
TennisAgent can detect and link sessions from multiple sensors recorded on the same date. This enables cross-sensor validation and richer analysis.
| Link Type | Sensors | Use Case |
|---|---|---|
| AW + Zepp | Apple Watch + Zepp Universal | Compare wrist vs racquet swing detection, validate swing counts |
| Match + Babolat | match_history + Babolat PIQ | Correlate PIQ scores with match outcomes |
| Match + Garmin | match_history + Garmin HR | Analyze heart rate in wins vs losses |