App: Tennis AI

Description

Tennis AI, your ultimate tennis workout assistant. My app tracks tennis strokes using built-in accelerometer of Garmin watch, helping you improve game with precision data. It can recognize type of strokes during the workout and provide detailed statistics for each of your trainings.

Get app from store

Tennis AI features:

  • Tracking activity:
    •  Time,
    •  Heart Rate,
    •  Distance,
    •  GPS,
    •  Other measures provided by your Garmin watch,
  • Tennis strokes recognition, count and power measure for the following stroke types:
    •  Forehand,
    •  Backhand,
    •  Serve,
    •  Backhand Slice,
  • Real time graph showing history of your strokes during activity,
  • Record of Winners and Errors for each stroke type,
  • Summary of recorded strokes in Garmin Connect app,
  • Time dependent graphs of all strokes recorded during activity displayed in Garmin Connect app,
  • In-app graphs showing stroke statistics for series of workouts based on stroke types:
    •  Count (total and per training),
    •  Average power,
    •  Winner count,
    •  Error count,
    •  Last training power distribution,
  • Tennis stroke recognition for left-handed users,
  • Dark Mode,
  • Update log prompts on app startup for better communication with the users,

  • Hi , I got a passion for development and tennis and I try to develop an app for myself to analyse my own shot etc. I m a web developer so I don't have a lot of knowledge about monkey C. I  have been trying to detect a mouvement through accelerometer and glycometer but I use a simulator to develop this app. Do you mind to give me some advice to help me to be more confortable in my development:), for exemple how can I simulator forehand shot to the simulator, also I don't know if there are  some different memory issues between simulator and the real watch.

    you can find my LinkedIn => www.linkedin.com/.../samuel-poudroux

  • Hello Samuel,

    Actually I dont use sdk Simulator for stroke detection tests. If I were to give you any advice it would be to break entire project into manageable pieces and work step by step, like:

    1. Collect real accelerometer signal from your trainings. Make sure you can backtrack signal to the real event on the court eg. You need to know when forehands, backhands etc are happening when comparing to collected data (taking a video is a good idea)

    2. Transform raw data into format that you can consume later on.

    3. Label the data. Prepare sets of data representing forehands, backhands etc.

    4. Start applying your ideas about how to detect and recognize strokes and keep testing it on real, labeled data. You need to filter out any irrelevant events like running,  sraching your butt etc so that you can just focus on signal patterns when strokes are actually taking place.  You can do it in python, Excel or whatever suits you best. Its not worth to start learning money c and app development if you get poor outcomes from tests on a real data.

    5. Once you are satisfied with your algorithms try to translate it to money c, keeping in mind you need to make it memory and computation efficient (watchdog), accelerometer has low threshold so you need to figure out how to handle signal that is trimmed > 8G, plus signal itself comes in batches /not in a stream. 

    6. Once you are satisfied with the app and would like to publish it you may realize everyone has individual playstyle. Not even one handed vs two handed backhand, or kick/slice/flat serves but also each particular stroke type can differ from person to person so you will need to collect more data from varius players on the court or somehow came up with a way to collect a data from your users, postprocess and hope it does not introduce more mess eg forehands hit above shoulder lvl are not misrecognized as serves. Remember the data from users can have very poor quality or value if user tells you he is advanced player but in fact he has just started playing tennis.. there is no good way to verify it.

    I think the bottom line is you need a broad plan and start working on it step by step:)