EEC 490 Spring 2012 Kinect Fitness Trainer -Baljeet Aulakh -Arnold Csok -Jared Shepherd -Amandeep Singh 1 Project Overview Recognition of Body Movements and Exercises Everything is Voice Controlled Ability to Calculate Velocity And Acceleration Write Statistics of Movements to an Output File User Interface Implementation 2 Requirements Hardware: Kinect + Laptop(2.66Hz above) Software: Kinect SDK + Microsoft Speech Platform + C# 2010 Environment: Quite Room(voice) + Only one thing moving at a time 3 User Interface 4 Step by Step Voice Recognition Detection Algorithms Velocity and Acceleration Ability to Write Statistics to an Output file Documentation and Website 5 Voice Recognition Allow User To Control Kinect By Voice Ease of Access to the Program As Simple as- Start && Stop Say Which Exercise to Count 6 How Voice Recognition Work Initialize the Audio Source from the Sensors Initialize Speech Recognition by Speech Recognizer Create a Speech Recognition Engine with Exercise Names Listen to User Speech Respond to User Speech 7 Problem With Voice Recognition The First Release of Language Pack Doesn't Have a Reliable Confidence Model Kinect Tries To Match Every Audio Source It Picks Up Problem with Matching the Right Exercise Because of This 8 Possible Solutions For Voice Recognition Test Confidence Interval for Best Accuracy Use Fitness Trainer in a Quiet Environment Introduce Noise Cancelation Use of Headset/Bluetooth Wait for a More Reliable Language Pack 9 Detection Algorithms Resources Recognition algorithms List of Recognized Body Movements An Example Velocity and Acceleration 10 20 Joint Skeleton System Provided By Microsoft Research Kinect 11 Resources 20 Joint Skeleton System Each joint gives x, y and z values Vector Math to find the angle Timer functionality Voice recognition functionality Flag Variables in programming. Counters to store the repetition. 12 Recognition algorithms Simple cases: • Displacement of the Joints • Displacement in the X, Y, Z Direction Moderate cases: • Calculating Angles Between Joints • Setting Threshold For Some Angles Complex cases: • Set a Step by Step Routine using all of the above to detect a motion 13 Recognized Exercises The Following Exercises Are Recognized: 1. Squats 2. Upper Left Punch 3. Upper Right Punch 4. Right Punch 5. Left Punch 6. Right Arm Curl 7. Left Arm Curl 14 Recognized Exercises: Continued 8. 9. 10. 11. 12. 13. Left Kick Right Kick Bowling Hip Abduction Lateral Weight Shift Hamstring Stretch Counter For All Of These Exercises 15 An example: Bowling motion 16 Bowling final position 17 JOINT STATISTICS Each exercise has the average acceleration and velocity of all joints calculated. The statistics are time stamped and saved into a text file. AVERAGE VELOCITY Two points Distance between them Time to travel between them AVERAGE VELOCITY Initial and final position of the joint The distance formula A Stopwatch INITIAL AND FINAL POSITION Save reference position(point) of skeleton for use in all calculations in defaultPosition[20]. getDisplayPosition(data.Joints[JointID.HipCenter]) ; getDisplayPosition(data.Joints[JointID.Spine]); The order is very important DISTANCE FORMULA Joints lie on a Cartesian plane However there is a caveat; The position is measured in pixels Pixels Are Converted Into Centimeters with the conversion factor of 72 DPI x2 = (x2 * 2.54) / (72); TEXT FILE For every joint returned from the array generated from GetValues foreach (JointID joint in Enum.GetValues(typeof(JointID))) JointID Joint = (JointID)i; When int is typecasted to JointID it returns the name of the joint at that position, NOT A STRING Display / Interface The display on the bottom of the screen shows what exercise is being done by the user The state: Start / Stop Exercise counter Exercise to be detected Exercise that was detected 24 Known Limitations 1. Blocked by an object 2. Overlapping joints 3. Distance from the Kinect Throws Off X, Y, Z coordinates 4. Two People In Front Of Kinect 5. Joints Move During Angle Calculation These Limitations Make The Accuracy of the Exercise Recognition Difficult E.g. Crossed arms... 25 Future Approaches Fix Voice Recognition problem Have a new accurate Skeleton System Be able to record and replay exercises More complex body motions Introduce more exercises Find solutions to the Limitations for example a solution to the overlapping joints and blocking objects. 26 Conclusion Learned about Kinect programming Use with windows Use of Kinect in different areas other than gaming Learned and getting used to C# 27 Website And Facebook Page Link To Our Webpage: “http://www.baljeetaulakh.com” Link To Our Facebook Page: “https://www.facebook.com/pages/KinectFitness-Trainer/236918233072748” 28 Questions????? OR Suggestions? 29 End of Slides 30 Fun Time!!!!! Demonstration!!!!! 31