menggproject nitin guleria
DESCRIPTION
about a projectTRANSCRIPT
-
University of Toronto
Masters of Engineering Project
Absement (time integral of distance),Integral Kinematics based Applications
for Wearables
Author:
Nitin Guleria
Supervisor:
Dr. Steve Mann
A project submitted in fulfillment of the requirements
for the degree of Masters of Engineering
in the
field of Computer Engineering
The Edward S. Rogers Sr. Department of Electrical and Computer Engineering
-
UNIVERSITY OF TORONTO
Abstract
Faculty of Applied Science and Engineering
Department of Electrical and Computer Engineering
Masters of Computer Engineering
Absement (time integral of distance), Integral Kinematics based Mobile
Application
by Nitin Guleria
-
ii
The objective of the project is to develop fitness system based application for mobile
and wearables using the concept of Integral Kinematics and Integral Kinesiology, i.e.
Absement (time integral of distance) for different systems such as wearables and mobile
phones. Other competing fitness systems and approaches rely on parameters such as
distance and its time derivatives such as velocity, acceleration etc. The Mannfit sys-
tem proposes a new paradigm for fitness based on the time integrals of distance i.e.
absement. Rather than increasing distance, velocity or acceleration, the goal is to re-
duce absement to maintain stability and control. The main goal is to introduce and
spread the importance of this new field of Integral Kinematics (absement, etc.) for the
fitness industry.Three simple applications were made that demonstrate the concept of
Integral Kinematics using absement. The first application showcases the concept of an
absement bar (destabilizing bar) which may be used directly for pull-ups, or may have
rings attached to it for other exercises. The goal of this exercise was to keep the bar
stable and not to allow the bar to move significantly. When the user does pull-ups, dips,
leg-raises, etc. on the bar, their stability was measured using the tilt on the bar, as
well as the downward force on the bar. This was recorded in a mobile app connected
to it. A virtual bucket filled up in the mobile app as the user tilts the bar. Then, the
user was given a score (absement) based on his/her stability. The second application
was for a destabilizing plate (wobble board) upon which exercises like push ups were
performed. A user placed his or her phone in the center of the plate (wobble board).
Then, he/she placed his/her hands on the wobble board and started doing the push-ups.
When the wobble board wobbled from its initial position, a virtual bucket started to
fill in the mobile app and user was given a score on keeping the bucket from filling (i.e.
minimizing absement). The third was a car racing game for absemental fitness systems.
Various other wearables such as Muse, Myo, Moverio and Meta Glasses were utilized for
measuring the users performance based on different kind of sensor technologies.
-
Acknowledgements
Id like to extend my deepest appreciation to a lot of people who made this project
possible.
It is difficult to overstate my gratitude to my project Supervisor Dr. Steve Mann.
With his enthusiasm and his great vision to bring the concept of integral kinematics to
practicality on a mobile device, he helped me in making the process of creativity and
coding, fun. He was source of constant encouragement and inspiration with his sound
advice and never ending quest for questioning the very fundamentals of science.
I would like to thank Professor Mohamed AbdelRazik and Professor Matt Medland for
providing the financial support as teaching assistantships as well as wonderful exposure
to the undergraduate education and entrepreneurial spirit at University of Toronto.
I would like to thank many people in the Humanistic Intelligence Research Lab especially
the driving force of the lab, Ryan Janzen and Mir Adnan Ali for providing constructive
feedback, clarifying concepts and for help with overcoming difficulties. Also, Malcom
Smith for sharing experiences, providing suggestions and encouragement.
I am indebted to many students and friends for providing a fun and creative environ-
ment in the lab and help their diverse skills, ideas and insights. I would especially like
to thank Pete Scourboutakos, Rifdhan Nazeer,Arkin Ai, David Cheong, Arjun Subra-
manian, Tobias Chen, Hang Wu, Abhinav Rajaseshan, Sarthak Bansal and Celine Wei
for project participation and feedback.
I am grateful to people at Meta, Thalmic, Muse and Epson corporations for providing
the wearables for experimentation and having fun with their emerging wearables.
Finally, and most importantly, I wish to thank my parents and family whose belief,
support and well wishes made this experiment come to life for me.
iii
-
Contents
Abstract i
Acknowledgements iii
List of Figures vi
List of Tables vii
Abbreviations viii
1 Introduction 1
1.1 Absement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.1.1 Integral Kinematics . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Related Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2 Feedback Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Basic Prototype and Mobile Applications 5
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Basic Embodiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Mobile Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3.1 Fitness based on arduino hardware on destabilizing rings . . . . . 7
2.3.2 Fitness based on a Mobile device without Arduino . . . . . . . . . 8
2.3.3 Wobble Board based mobile application . . . . . . . . . . . . . . . 9
3 Player Concentration using Muse and Moverio Applications 10
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2 Neural Networks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.1 Data collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.2.2 Details of the algorithm . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Epson Moverio Android App . . . . . . . . . . . . . . . . . . . . . . . . . 12
4 Myo and Meta Spaceglasses 13
4.1 Myo and Meta Spaceglasses . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 Games for Mannfit on Spaceglasses . . . . . . . . . . . . . . . . . . . . . . 13
5 Results 15
5.1 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
iv
-
Contents v
6 Conclusion 17
6.1 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
6.1.1 Future works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
A Mannfit Mobile Application with Arduino Set Up 19
A.1 Public Github Repository Url . . . . . . . . . . . . . . . . . . . . . . . . . 19
A.2 Equipment parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
A.3 Important Code Snippets from android app with Arduino . . . . . . . . . 19
A.3.1 Initial communication setup between arduino and android . . . . . 19
A.3.2 Network Communication with Arduino from android . . . . . . . . 20
B Mannfit Mobile Application without Arduino for Rings 23
B.1 Public Github Repository Url . . . . . . . . . . . . . . . . . . . . . . . . . 23
B.2 Equipment parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
B.3 Important Code Snippets from android app without Arduino . . . . . . . 23
B.3.1 Basic Absement calculation based on gyroscope rotation . . . . . . 23
C Mannfit Mobile Application wobble Board Set Up 25
C.1 Public Github Repository Url . . . . . . . . . . . . . . . . . . . . . . . . . 25
C.2 Equipment parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
C.3 Important Code Snippets from android app for Wobble Board . . . . . . 25
C.3.1 OpenGl ES code for the bubble centering . . . . . . . . . . . . . . 25
C.3.2 Fill the bucket as the bubble gets displaced from the center . . . . 27
D Muse Application Running On Moverio bt-200 Set Up 29
D.1 Public Github Repository Url . . . . . . . . . . . . . . . . . . . . . . . . . 29
D.2 Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
D.3 Important Code Snippets . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
D.3.1 Basic neural networks classifier . . . . . . . . . . . . . . . . . . . . 29
E Meta Spaceglasses 32
E.1 Source Code Rar file Url . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
E.2 Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
E.3 Important Code Snippets . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
E.3.1 Gyroscope movement and songs pitch modulation based on Dis-tance in BoatMovement.cs . . . . . . . . . . . . . . . . . . . . . . . 32
Bibliography 35
-
List of Figures
1.1 Derivatives of Displacement . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Fitness rings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Kinematics graphs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 A Wearable device/Computer . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1 A Wearable device or Computer Feedback loop . . . . . . . . . . . . . . . 5
2.2 Ball Valve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Valve Absement metaphor or reality . . . . . . . . . . . . . . . . . . . . . 7
2.4 Mobile Application: Bucket filling . . . . . . . . . . . . . . . . . . . . . . 7
2.5 A simple potentiometer circuit attached . . . . . . . . . . . . . . . . . . . 7
2.6 Mobile Application: Phone attached to Mannfit . . . . . . . . . . . . . . . 8
2.7 Mobile Application: Wobble board . . . . . . . . . . . . . . . . . . . . . . 9
3.1 Muse Application: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2 Muse Headband . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Epson Moverio bt-200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.4 Muse Mobile Application . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.1 Myo Arm Band . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.2 Meta spaceglasses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
4.3 Car game for spaceglasses . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.4 Screenshot of EA Sports game real racing 3 . . . . . . . . . . . . . . . . . 14
4.5 Screenshots from Meta app . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4.6 Screenshot from Meta app . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.1 Results on Mannfit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
vi
-
List of Tables
1.1 Time Integrals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
A.1 List of items for Mannfit android Mobile Application with Arduino . . . . 19
B.1 List of items for Mannfit android Mobile Application without Arduino . . 23
C.1 List of items for Mannfit android Mobile Application with WobbleBoard . 25
D.1 List of items for Mannfit Epson Moverio and Muse for player concentra-tion detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
E.1 List of items for Mannfit on meta Spaceglasses platform . . . . . . . . . . 32
vii
-
Abbreviations
IMU Inertial Measurement Unit
ANN Artificial Neural Network
viii
-
Chapter 1
Introduction
1.1 Absement
Figure 1.1: Kinematics generally only considers positive derivatives of displacement,i.e. it often fails to consider also the negative derivatives (integrals) of displacement.
Figure from [1]
Concepts like distance, speed, and acceleration appear commonly in sport and fitness.
Speed is the time-derivative of distance and is thus measured in units of distance divided
by time (e.g. metres per second or kilometers per hour). Kinematics is the study of
classical mechanics and the word kinematics comes from the Greek word kinema which
means movement. Typically the study of kinematics involves displacement (and its
magnitude, distance), and its time-derivatives: velocity (and its magnitude, speed),
acceleration, etc., which form an ordered list of derivatives of displacement, as shown
1
-
Chapter 1. Introduction 2
in Fig. 1.1. In this context ,the traditional kinematics are referred to as differential
kinematics. A more complete two-sided conceptualization of kinematics is proposed
that includes also the time-integrals of displacement. See Fig. 1.3
Figure 1.2: The study of integral kinematics originated with water flow. The hy-draulophone (underwater pipe organ) exhibits the phenomenon of absement. Thetwo-stage hydraulophone exhibits the phenomenon of absity (the double integral of
displacement).
Figure 1.3: Two-sided Kinematics (differential AND integral) of an object (e.g. ballvalve T-handle) undergoing motion. The amount of water flowing through the valve(instrumented with an angle sensor) is the absement of the tilt. Tilt is the distance ofone end from center position, approximately proportional to angle (for small angles).We integrate the absolute value of angle, distance. The bar swings freely through an
angle of pi /6
-
Chapter 1. Introduction 3
1.1.1 Integral Kinematics
The concept of absement was introduced, the time-integral of displacement, and demon-
strated and how it arises in flow-based processes such as water-based musical instru-
ments. [2] . See Fig 1.2. Others have also built upon the concept of integrated kine-
matics and applied it to the field of electrical engineering [3]. More recently, concepts of
integral kinematics, such as absement (the time-integral of displacement) have entered
the mainstream high school curriculum and are being explored in science fairs and the
like [4].
1.1.2 Related Concepts
A number of related concepts, also include: momentement, as in the following ordered
list (each being the time derivative of the one before it): momentement; momentum;
force; yank; tug; snatch; shake, and also actergy (or total action or Hamiltonian action),
as shown in the table below:
Unit First Integral Second Integral
Power Energy Actergy(Total Action)
Watt Watt Second(Joules) Joule second
Strength Endurance Longevity
Table 1.1: Time Integrals
where, power is roughly analogous to strength (i.e. short term burst mode output), en-
ergy is roughly analogous to endurance (i.e. longer-term output), and the new concept,
actergy, as measured in Joules seconds, is roughly analogous to longevity (i.e. overall
health) on a much longer time-scale. Integral Kinesiology as the use of integral kine-
matics in the study of human movement is introduced, towards the goal of long-term
health and wellness, based on developing lean muscle mass and combining strength, en-
durance, and fine control, with stability and absemental stability. Next, we review the
requirements of a wearable computer/device for building such a system.
1.2 Feedback Loop
A wearable system [5] should have the aspects mentioned in Fig. 2.1
-
Chapter 1. Introduction 4
Figure 1.4: Feedback loop of a wearable device/ computer with a human.
While individual embodiments of wearable computing may use some mixture of these
concepts, the signal path depicted in Fig 2.1 provides a general framework for comparison
and study of these systems. Each signal path typically , in fact, include multiple signals,
hence multiple parallel signal paths are depicted in this figure to make this plurality of
signals explicit. These features of a feedback loop can enable a user to have an effortless
experience during the fitness routine.
-
Chapter 2
Basic Prototype and Mobile
Applications
2.1 Introduction
Figure 2.1: Feedback loop of a wearable device or computer with a human.
Most sports, fitness training and evaluation is based on differential kinematics. Here
integral kinematics[6] is explored as a mobile application prototype. In order to do this,
an apparatus was constructed that required steadiness rather than speed. In particular,
an existing stability-demanding apparatus, fitness rings was taken and modified by an
5
-
Chapter 2. Mobile Applications 6
even greater challenge by incorporation of a destabilizing bar, hung from a single chain.
A pair of rings were hung to this fitness system, as shown in Fig 2.1.
2.2 Basic Embodiment
Figure 2.2: Ball Valves: (1) Ball valve in the closed position. Figure adapted from[7] (2) Ball valve in the open position. Figure adapted from [8] (3-5) Ball Valve withT-handle: (3) T-handle ball valve in the closed position. (4) T-handle ball valve in apartially open position. (5, rightmost) View looking into the end of the valve when it
is partially open.
A ball valve is a valve that controls the flow of water using a ball that has a hole drilled
through the ball. When the ball is turned so the hole is at a right angle (90 degrees)
from the flow pipe, the water is shut off, as shown in Fig 2.2 (leftmost). When the ball
is turned so the hole runs along the pipe, the valve is turned on, as shown rightmost in
Fig 2.2.
A simple implementation of the MannFit system is based on a bar attached to a ball
valve, or a ball valve metaphor (e.g. a simulated ball valve running on a smartphone).
When the bar is straight across, the valve is closed and no fluid flows through the valve.
When the bar tips away from the horizontal, fluid flows through the ball valve to a
greater degree when there is a greater tilt.
A long metal bar attached to the ball valve, together with a flow sensor or virtual flow
sensor (e.g. tilt sensor), is shown in Fig 2.3. Doing exercises like pull ups, dips, leg
raises, etc from the bar creates an absemental fluid flow metaphor or reality.
2.3 Mobile Application
An Android smartphone app was written for simulating a bucket that fills when the bar
tilts away from horizontal. See Fig 2.4. The participant attempts to stop (or minimize)
-
Chapter 2. Mobile Applications 7
Figure 2.3: Valve Absement metaphor or reality: Rings supported by the ball valve:creates a fluid minimization reality or metaphor. Real water (or any liquid such as agreen slime) drips down on the participant when the bar deviates from horizontal. Themore the bar deviates from horizontal, the greater the fluid flow. A goal is to minimize
total accumulated fluid flow while performing the exercises.
Figure 2.4: Screen captures of MannFit app, with virtual bucket as time-integratorrunning on smartphone. (rightmost) Simplified version with simply a bar hanging from
a chain (no rings) and the smartphone attached to the bar
the filling of the virtual bucket by keeping the bar straight.
2.3.1 Fitness based on arduino hardware on destabilizing rings
Figure 2.5: A simple potentiometer circuit [9]
-
Chapter 2. Mobile Applications 8
The hardware and the devices used for the project are listed in the table in Appendix
A.
The arduino based Mannfit application utilizes a wifi shield on it to transmit the tilt
data. The tilt calcuation based on a potentiometer circuit connected wirelessly to a
mobile phone via arduino.
This potentiometer circuit acts as an arduino input for the tilt or angle measurements of
the tilting rings or bars. Absement was measured as an integral of the net displacement
of the bar with time in an android mobile app. Also, a weight cell was added to calculate
the force exerted by the user on the equipment.
Figure 2.6: Mobile phone directly attached to the Mannfit rings. User attaches theirphone in the provided slot and carries out L seat Pull ups.
2.3.2 Fitness based on a Mobile device without Arduino
In this version of the mobile application, instead of using the Arduino, the IMU of the
mobile phone is used for measuring the instability of the user on the fitness rings. As
the user tilts the bars, the phone tilts as well. The gyroscope inside the phone is then
used to measure the net displacement of the user from the horizontal stable position of
the bar.
The amount of water in the bucket (virtual) or the amount of real liquid that pours out
of the valve (Fig 2.3) is equal to the absement of the distance of deviation.
-
Chapter 2. Mobile Applications 9
Moreover, in actual embodiment, the smart phone functions as the tilt sensor, and the
valve is entirely virtual, as shown in Fig 2.4, where the IMU becomes the tilt sensor. The
user attempts to stabilize the bar, thus spilling least amount of water, whose amount is
used for calculating score. The source code, device specifications and github repository
have been described in Appendix B
2.3.3 Wobble Board based mobile application
Figure 2.7: Example with multidimensional Integral Kinematics in the form of pushups on wobble board which must not touch the floor along any of its perimeter (sensed,
along with time-integrated tilt), while feet are balanced on a fitness ball.
Finally, the concept is extended to more dimensions. A wobble board is used instead of
the bar. The board pivots on a point that touches the ground.It increases the instability
of the board. The smartphone app senses tilt angle and the magnitude is represented as
a radius. The time integral of the radius is the variable of interest. In another example,
the feet are balanced on a fitness ball while the hands are balanced on the board. The
user does 3 sets of 25 or more MannUps (fitness ball + wobble board pushups) while
trying to minimize the integrated radius (i.e. stay straight).The source code, device
specifications and github repository have been described in Appendix C.
-
Chapter 3
Player Concentration using Muse
and Moverio Applications
Figure 3.1: Muse Application on Mannfit
10
-
Chapter 3. Muse and Moverio Applications 11
3.1 Introduction
An android application was made to measure concentration of the user by using the Muse
wearable EEG headband. Epson Moverio BT-200 was used to display the concentration
of the user in the form of a head mounted display.
3.2 Neural Networks
Figure 3.2: Muse Headband Figure 3.3: Epson Moverio BT-200
3.2.1 Data collection
The neural net was initially trained based on Hang Wus information, He trained the
neural network on himself for a duration of one hour every day for a week. This includes
30 minutes of morning session and 30 minutes of evening session. A total of 514800 data
points were collected. 8000 points with high quality were manually selected by him.
3.2.2 Details of the algorithm
The neural network includes 43 inputs and 2 outputs. It is a two layer perceptron with
20 hidden nodes each. The method called Scaled Conjugated gradient backpropagation
was used. The training time of the algorithm is less than 1s each time. This allowed
the design of a real-time training algorithm which trained with the users data even
when the algorithm had ran once already. Auto-correlation was used to test the desired
output and the experimental output of the dataset provided. The correlation obtained
was 97.8 percent.
-
Chapter 3. Muse and Moverio Applications 12
3.3 Epson Moverio Android App
The mobile version shown in figure 3.4 incorporates the classification algorithm, which
read the EEG data, classified the data and displayed the results. This application
currently classify only Wu Hangs states accurately.
The output of this app is displayed on Epson Moverio bt-200. Both devices support
the same android platform, Epson Moverio bt-200( figure 3.3) was used to visualize the
results. Users can work out hands free on this device utilizing the augmented reality
display.
Figure 3.4: Muse Mobile Application
-
Chapter 4
Myo and Meta Spaceglasses
4.1 Myo and Meta Spaceglasses
Figure 4.1: Myo Arm Band Figure 4.2: Meta Spaceglasses
A car game was designed using Myo Arm band (Figure 4.1) gestures to start the car and
the game could be viewed while working out using Meta spaceglasses(Fig. 4.2) doing
pull ups on Mannfit as well as driving the car(Fig. 4.3). As the user tilts on the Mannfit
rings, the car runs off the track. The user uses the bar on the Mannfit as a steering
wheel and turns the car around. In this embodiment, the goal is synthesis of fitness
with gaming based on absemental systems. The car game helps the user to focus on the
game as well exercise thus providing strength as well as a gaming experience.
4.2 Games for Mannfit on Spaceglasses
Different applications were developed in unity3d embodying the concept of absement
similar to the android mobile phone application developed earlier. The two games of
13
-
Chapter 4. Myo and Meta Spaceglasses 14
Figure 4.3: Car game for spaceglassesFigure 4.4: Screen shot of EA Sports
game real racing 3
pull ups on fitness rings(Fig. 4.5) and push ups on the wobble board(Fig. 4.6) were
developed in Unity3D game engine. The car racing game used for the purpose of demos
was real racing 3 by EA Sports. The absement of the user was the deviation of the car
from the main track into the green grasslands. The source code, device specifications
and github repository have been described in Appendix E.
Figure 4.5: Screenshots from MetaApp for rings
Figure 4.6: Screenshot from MetaApp for wobble board
-
Chapter 5
Results
5.1 Results
Figure 5.1: Results: Unlike traditional sports metrics which have a goal of maximumspeed or acceleration, here the goal of this game is to obtain the lowest absement(lowest time-integrated distance from the stable position) during each cycle (repetition)of the periodic exercise (here, leg-raises). The integral is reset at the beginning of eachrepetition, and grows as distance (from stable point) is integrated. The goal is tominimize the height of each peak. Average absement (average height over all peaksfor each player) were: Arkin: 5.2;Arzhang: 3.56; Pete: 2.34; Steve: 2.07. Here Stevewon this match. These numbers were consistent with the amount of experience eachof the players previously had with the fitness rings (e.g. Steve having been the most
experienced on the rings, then Pete, etc.).
Participants were invited to perform standard fitness activities, such as dips, leg-raises,
and sustained (held) leg-raises (the L-seat static holding of position ), while sensors in
15
-
Chapter 5. Results 16
the destabilizing bar provided data to a National Instruments analog to digital converter,
with a microcontroller simultaneously sending the data to Android and Ios smartphone
apps, as well as to a portable computer doing real time analysis and display, as well as
a data logger for fitness training.
See Fig 5.1 for results. Note that while traditional sports and fitness metrics are based
on maximizing speed or acceleration (i.e. maximizing derivatives of distance), the goal
here is minimizing absement (i.e. minimizing the integral of distance from a central
resting point). Absement is being used as a feedback mechanism for a variety of fitness
tasks, to create a fun and playful yet effective fitness training program.
-
Chapter 6
Conclusion
6.1 Conclusion
The MannFit system, based on Integral Kinematics, was presented and successfully
demonstrated through examples such as fitness rings equipped with an instrumented
destabilizing bar or a wobble board similarly equipped. It was found that experienced
users of fitness rings were able to maintain low absement (time-integrated distance from a
central mean position) values. It was found that an absement-based feedback mechanism
was useful in training, to help develop stability and control. This work suggests that
we should consider two-sided kinematics (i.e. both Differential Kinematics and Integral
Kinematics) in sport, fitness, and gaming, not just the traditional one-sided (differential-
only) kinematics.
6.1.1 Future works
In other embodiments the metaphor (or reality) of the app could be that of air flow into
an inflatable toy. Tilting the bar inflates the toys belly, giving the toy a fat belly. The
goal can be to keep the toy slender (not fat) by holding the bar straight (level) while
performing the exercises (pull ups, dips, leg-raises, etc.).
Also, an integration of various wearables could be carried out with a common backend
using various platforms such as IBM BlueMix or a custom cloud computing implementa-
tion. Also, analysis of EMG data of Myo arm band could be correlated with the EEG of
17
-
Chapter 6. Conclusion 18
Muse headband. This integration of wearables for integral kineseology will make fitness
a wholesome experience to the user.
In the muse application, the complete version of the project could automatically train
the ANN in the back-end while still performing the classification algorithm, thus it could
be more adaptive training could be done on the portable device such that it learned and
evolved over time automatically, and it could achieve a better classification accuracy
over time. Different wearables could be used to provide user with multiple feedbacks of
different parts of the body resulting in a better qualitative and quantitative experience.
-
Appendix A
Mannfit Mobile Application with
Arduino Set Up
A.1 Public Github Repository Url
https://github.com/gulerianitin/Action-Fitness
A.2 Equipment parts
Part of Equipment Specifications
Android PhoneSamsung Galaxy S5 ,Galaxy S2, Nexus 4,Android 4.0.4(No external libraries)
Arduino Arduino Uno-R3 Board with Wifi Shield
Voltage Divider Simple Voltage divider circuit
Rings Mannfit Rings , tilt bar, chains
Table A.1: List of items for Mannfit android Mobile Application with Arduino
A.3 Important Code Snippets from android app with Ar-
duino
A.3.1 Initial communication setup between arduino and android
19
-
Appendix A. Mobile Application Arduino 20
// Open socket for network communication
Thread openSocketThread = new Thread(new Runnable() {
@Override
public void run() {
Log.d("information", "Opening socket for Arduino
communication");
try {
socket = new Socket(arduinoIP, 7);
dataOutputStream = new
DataOutputStream(socket.getOutputStream());
dataInputStream = new
DataInputStream(socket.getInputStream());
} catch (UnknownHostException e) {
Log.d("error", "Error opening socket: unknown host
exception");
e.printStackTrace();
} catch (IOException e) {
Log.d("error", "Error opening socket: input/output
exception");
e.printStackTrace();
}
};
});
openSocketThread.start();
A.3.2 Network Communication with Arduino from android
// Get new data from Arduino and perform handshake
Thread networkCommunicationThread = new Thread(
new Runnable() {
-
Appendix A. Mobile Application Arduino 21
@Override
public void run() {
try {
// Check if network connection is working
if ((socket == null || dataInputStream ==
null || dataInputStream == null) && running) {
Log.d("error", "Error: sockets and/or I/O
streams are null - check Arduinos IP");
//running = false;
//error = true;
return;
}
// Write byte to socket
dataOutputStream.writeByte(48);
// Read bytes from socket
angleRead =
dataInputStream.readUnsignedByte();
Log.d("information", "Read byte: " +
angleRead);
weightRead =
dataInputStream.readUnsignedByte();
Log.d("information", "Read byte: " +
weightRead);
} catch (UnknownHostException e) {
Log.d("error", "Error: unknown host exception
during Arduino I/O");
e.printStackTrace();
} catch (IOException e) {
Log.d("error", "Error: inout/output exception
during Arduino I/O");
e.printStackTrace();
}
};
});
-
Appendix A. Mobile Application Arduino 22
networkCommunicationThread.start();
-
Appendix B
Mannfit Mobile Application
without Arduino for Rings
B.1 Public Github Repository Url
https://github.com/gulerianitin/ActionFitnessMobile/tree/master/src/com/actionfitness/
rings
B.2 Equipment parts
Part of Equipment Specifications
Android PhoneSamsung Galaxy S5 ,Galaxy S2, Nexus 4,Android 4.0.4(No externallibraries)
Rings Mannfit Rings , tilt bar, chains
Table B.1: List of items for Mannfit android Mobile Application without Arduino
B.3 Important Code Snippets from android app without
Arduino
B.3.1 Basic Absement calculation based on gyroscope rotation
if (centerSet) {
23
-
Appendix B. Mobile Application without Arduino 24
// Increase fill amount as required
currentPercent += Math.abs(currentOffset * 0.01);
fillingWater.getLayoutParams().height = (int) (360 *
((double) Math
.round(currentPercent * 10) / 1000));
// Check for overflow
if (currentPercent >= 100) {
currentPercent = 100;
}
// Save latest data to lists and logs
angleList.add(currentPercent);
// Update status information (percent full, time
// elapsed)
runningTime = SystemClock.elapsedRealtime()
- startTime;
percentFullBox.setText("Bucket: "
+ ((double) Math
.round(currentPercent * 10) / 10)
+ "% | "
+ "Time: "
+ ((double) Math
.round(runningTime / 100) / 10)
+ " s");
// Check if the user has lost
if (currentPercent == 100 && !overflowed) {
overflowed = true;
running = false;
startStopButton.setText("View Results");
if (activityrunning) {
overflowPopup();
}
}
-
Appendix C
Mannfit Mobile Application
wobble Board Set Up
C.1 Public Github Repository Url
https://github.com/gulerianitin/ActionFitnessMobile/tree\/master/src/com/
actionfitness/wheel
C.2 Equipment parts
Part of Equipment Specifications
Android PhoneSamsung Galaxy S5 ,Galaxy S2, Nexus 4,Android 4.0.4(No external libraries)
Wobble Board Wobble Board on the floor
Table C.1: List of Items required for WobbbleBoard
C.3 Important Code Snippets from android app for Wob-
ble Board
C.3.1 OpenGl ES code for the bubble centering
if(WheelActivity.startButtonClicked)
25
-
Appendix C. Mobile Application Wobble board 26
{//sensor data
sensor_x=event.values[2]/4;//roll
sensor_y=event.values[1]/4;//pitch
// sensor_z=event.values[0]/2;//yaw
}
//center the bubble when started
if(WheelActivity.startButtonClicked && offsetNotSet)
{
sensor_offsetx=sensor_x;
sensor_offsety=sensor_y;
Log.d(TAG,"sensor x and sensor y: "+sensor_offsetx+sensor_offsety);
offsetNotSet=false;
}
sensor_x-=sensor_offsetx;
sensor_y-=sensor_offsety;
//make the bubble stay inside the toilet x2+y2>r2 x=x/sqrt(x2+y2)
if(((sensor_x*sensor_x+sensor_y*sensor_y)>(wheel.radius*we.radius)))
{
temp_x=((wheel.radius*sensor_x)/( (float)
Math.sqrt(sensor_x*sensor_x+sensor_y*sensor_y)));
temp_y= ((wheel.radius*sensor_y)/((float)
Math.sqrt(sensor_x*sensor_x+sensor_y*sensor_y)));
sensor_x=temp_x;
sensor_y=temp_y;
}
//set the score
score=(float)
Math.sqrt(sensor_x*sensor_x+sensor_y*sensor_y)*calibrateScore;
}
-
Appendix C. Mobile Application Wobble board 27
};
C.3.2 Fill the bucket as the bubble gets displaced from the center
public void changeWaterRadius(){
int waterVertices=0;
if((score>scoreThreshold) && waterRadius
-
Appendix C. Mobile Application Wobble board 28
// garbage collector wont throw this away
waterByteBuff.order(ByteOrder.nativeOrder());
waterBuff = waterByteBuff.asFloatBuffer();
waterBuff.put(waterCircleVertices);
waterBuff.position(0);
}
-
Appendix D
Muse Application Running On
Moverio bt-200 Set Up
D.1 Public Github Repository Url
https://github.com/gulerianitin/MuseDrowsiness/blob/master/TestLibMuseAndroid/
app/src/main/java/com/interaxon/test/libmuse/MainActivity.java
D.2 Devices
Device Features
Epson Moverio(head mounted display) bt-200,running android 4.0.3
Muse(brain sensing headband) Version 2.0 with Android(v4.0.3)
Table D.1: Devices for Concentration detection
D.3 Important Code Snippets
D.3.1 Basic neural networks classifier
//based on Matlab Code provided by Hang Wu
private double[][] yOutput(double[][] x1){
29
-
Appendix D. Muse Concentration Application 30
//update x1 in a thread showcasing progressbar
//hangs program code starts
// ===== NEURAL NETWORK CONSTANTS initialization code=====
//--- Input 1---
// x1_step1_xoffset,x1_step1_gain,x1_step1_ymin
// implement this, if (x1==nan){x1=0}
// double[][] x1=new double[43][1];//m =43 n=0
//for (int i = 0; i < 43; i++) {
// if(x1[i][0]==NAN){
// x1[i][0] = 1;}
//}
double[][] x1_step1_xoffset=new double[43][1];//m =43 n=0
for (int i = 0; i < 43; i++) {
x1_step1_xoffset[i][0] = x1_step_offset[i];
}
double[][] x1_step1_gain=new double[43][1];//m =43 n=0
for (int i = 0; i < 43; i++) {
x1_step1_gain[i][0] = x1_step_gain[i];
}
double[][] x1_step1_ymin=new double[43][1];//m =43 n=0
for (int i = 0; i < 43; i++) {
x1_step1_ymin[i][0] = -1;
}
//layer1
//layer2
//already declared
//======Simulation=======
//dimension declared
//Input 1
-
Appendix D. Muse Concentration Application 31
xp1=mapminmax_apply(x1,x1_step1_gain,x1_step1_xoffset,x1_step1_ymin);
//Layer1
//not using repmat since b1 is the same as repmat(b1,1,1),
// a1 = tansig_apply(repmat(b1,1,Q) + IW1_1*xp1)
a1= tansig_apply(Matrix.add(b1, Matrix.multiply(IW1_1,xp1)));
//Layer2
//a2 = softmax_apply(repmat(b2,1,Q) + LW2_1*a1); not using repmat
a2= softmax_apply(Matrix.add(b2, Matrix.multiply(LW2_1,a1)));
//Output1
// y1=a2;
// y1= mean(y1,2); same as a2 in this case hence a2 is the answer
//testing
double[][] bar =new double[43][1];
Matrix.printMatrix(xp1);
//hangs program code ends
return a2;
}
-
Appendix E
Meta Spaceglasses
E.1 Source Code Rar file Url
https://adminmailutoronto-my.sharepoint.com/personal/nitin_guleria_mail_utoronto_
ca/_layouts/15/guestaccess.aspx?guestaccesstoken=a11ocG%2bJgVkJuLWK5YLFgJkABAtiBS0dqjmyxy%
2fEUlE%3d&docid=0c265f114686744569f730c554c6f5876
E.2 Devices
Device Features
Meta 1Using meta1 developer kit Unity 5 - 32bitmeta SDK build 1.2.1(both downloaded from Meta Dev Center)
Table E.1: Features for Meta Spaceglasses platform
E.3 Important Code Snippets
E.3.1 Gyroscope movement and songs pitch modulation based on Dis-
tance in BoatMovement.cs
//gyroscope code for getting output in x,z plane from angle;
Quaternion gyroanglesQuat= Input.gyro.attitude;
Matrix4x4
quatMatrix=Matrix4x4.TRS(Vector3.zero,gyroanglesQuat,Vector3.one);
32
-
Appendix E. Meta Spaceglasses 33
Matrix4x4 scaleMatrix=Matrix4x4.TRS
(Vector3.zero,Quaternion.identity,new Vector3(1,1,0));//change here for xy
plane
Matrix4x4 scaled_Matrix=scaleMatrix*quatMatrix;
OutVector=scaled_Matrix.MultiplyVector(Vector3.forward);
forceVector=new Vector3(OutVector.x,0.275f,OutVector.y);
boatObject.transform.position= forceVector;
}
if (firstsensorReading) {
initialBoatPos = boatObject.transform.localPosition;
firstsensorReading = false;
}
//calculate score
float relativeBoatpos = (boatObject.transform.localPosition
- initialBoatPos).magnitude * 100f;
//min 5.7 max 45
//instability is
overallInstability += (int)relativeBoatpos;
int score = 0;
if (relativeBoatpos > 5 && relativeBoatpos 10 && relativeBoatpos 15 && relativeBoatpos 20 && relativeBoatpos 25 && relativeBoatpos
-
Appendix E. Meta Spaceglasses 34
} else if (relativeBoatpos > 30 && relativeBoatpos 35 && relativeBoatpos 40 && relativeBoatpos < 43) {
GetComponent().pitch = 0.79f;
score = 0;
}else if(relativeBoatpos>=43)
{
if(GetComponent().pitch>0.0)
GetComponent().pitch-=0.1f;
if(GetComponent().pitch
-
Bibliography
[1] Kinematics and musical instruments by glogger - own work. licensed under cc by-sa
3.0 via wikimedia commons -. URL http://commons.wikimedia.org/wiki/File:
Kinematics_and_musical_instruments.svg#/media/File:Kinematics_and_
musical_instruments.svg.
[2] R. Janzen S. Mann and M. Post. Hydraulophone design considerations: Absement,
displacement, and velocity-sensitive music keyboard in which each key is a water jet.
Proc. ACM International Conference on Multimedia, October 23-27, Santa Barbara,
USA., 2006, pp. 519528.
[3] D. Jeltsema. Memory elements: A paradigm shift in lagrangian modeling of elec-
trical circuits. 7th Vienna Conference on Mathematical Modelling,Nr. 448, Vienna,
Austria, February 2012.
[4] R. Bell. 14-year-old from oro-medonte sets her sights on isaac newtons theories.
Orillia Packet and Times, March 26 2013.
[5] Steve Mann. Intelligent Image Processing. John Wiley and Sons, November 2 2001.
ISBN: 0-471-40637-6.
[6] Mir Adnan Ali Pete Scourboutakos Nitin Guleria Steve Mann, Ryan Janzen. Integral
kinematics (time-integrals of distance, energy, etc.) and integral kinesiology. Proc.
IEEE GEM, 2014.
[7] Ball valve in closed position. . URL http://www.franklinvalve.com/DURASEAL/
advantages.html.
[8] Ball valve in open position. . URL http://www.tpub.com/fireman/69.htm.
[9] Potentiometer diagram. URL http://sub.allaboutcircuits.com/images/05106.
png.
35
AbstractAcknowledgementsList of FiguresList of TablesAbbreviations1 Introduction1.1 Absement1.1.1 Integral Kinematics1.1.2 Related Concepts
1.2 Feedback Loop
2 Basic Prototype and Mobile Applications2.1 Introduction2.2 Basic Embodiment2.3 Mobile Application2.3.1 Fitness based on arduino hardware on destabilizing rings 2.3.2 Fitness based on a Mobile device without Arduino 2.3.3 Wobble Board based mobile application
3 Player Concentration using Muse and Moverio Applications3.1 Introduction3.2 Neural Networks3.2.1 Data collection3.2.2 Details of the algorithm
3.3 Epson Moverio Android App
4 Myo and Meta Spaceglasses4.1 Myo and Meta Spaceglasses4.2 Games for Mannfit on Spaceglasses
5 Results5.1 Results
6 Conclusion6.1 Conclusion6.1.1 Future works
A Mannfit Mobile Application with Arduino Set UpA.1 Public Github Repository UrlA.2 Equipment partsA.3 Important Code Snippets from android app with ArduinoA.3.1 Initial communication setup between arduino and androidA.3.2 Network Communication with Arduino from android
B Mannfit Mobile Application without Arduino for RingsB.1 Public Github Repository UrlB.2 Equipment partsB.3 Important Code Snippets from android app without ArduinoB.3.1 Basic Absement calculation based on gyroscope rotation
C Mannfit Mobile Application wobble Board Set UpC.1 Public Github Repository UrlC.2 Equipment partsC.3 Important Code Snippets from android app for Wobble BoardC.3.1 OpenGl ES code for the bubble centeringC.3.2 Fill the bucket as the bubble gets displaced from the center
D Muse Application Running On Moverio bt-200 Set UpD.1 Public Github Repository UrlD.2 Devices D.3 Important Code SnippetsD.3.1 Basic neural networks classifier
E Meta SpaceglassesE.1 Source Code Rar file UrlE.2 Devices E.3 Important Code SnippetsE.3.1 Gyroscope movement and song's pitch modulation based on Distance in BoatMovement.cs
Bibliography