AW

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

ZU

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

BB

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

GM

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

Sensor Sync Commands

Use these tools to keep your data current:

  • sync_apple_watch - Pull latest sessions from Mac server
  • refresh_babolat_data - Regenerate BabPopExt.db from logs
  • pull_babolat_from_phone - ADB pull from Android
  • detect_linked_sessions - Auto-detect and save session pairs